Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Two variables in for loop
#1
Hello

I want to iterate two variables independently and simultaneously in a single for loop.
Is it possible? There is no relationship between the two variables.
Example:

for Angle1 in range(0,180,5) for Angle2 in range(-180,180,10):
Reply
#2
It's unclear to me what you want to do. Do you want to iterate through all the values in the second range for each value in the first (or vice versa)? In that case, you can nest the loops. Do you want to iterate over pairs of values from the two sequences? If so, you can use zip (docs here):

>>> for x, y in zip([1, 2, 3], [4, 5, 6]):
...     print(x, y)
... 
1 4
2 5
3 6
>>> 
If neither of these things, please explain more.
Reply
#3
Thank you for the reply.

I do not want to iterate through all the values in the second range for each value in the first (or vice versa)

Instead I want Angle1 in range(0,180,5) to iterate independently and Angle2 in range(-180,180,10) to iterate independently and separately.

There is no relation between Angle1 and Angle2
Reply
#4
I did not understand you task. You don't want to do this:


zip


product


iterating the second object manually
Almost dead, but too lazy to die: https://sourceserver.info
All humans together. We don't need politicians!
Reply
#5
(Aug-22-2019, 07:16 AM)vipinv23 Wrote: Instead I want
Angle1 in range(0,180,5)
 to iterate independently and 
Angle2 in range(-180,180,10)
 to iterate independently and separately. 

There is no relation between Angle1 and Angle2

I'm still not entirely sure what you mean. Do you just want to separate for loops then? Why are you trying to write a single loop?
Reply
#6
(Aug-22-2019, 07:16 AM)vipinv23 Wrote: I want Angle1 in range(0,180,5) to iterate independently and Angle2 in range(-180,180,10) to iterate independently and separately.

There is no relation between Angle1 and Angle2

Hi!

If I have understood correctly, you want them separately and independently, so I made this little program to see if it may help you:

print("\n\nFor Angle1:\n")
for Angle1 in range(0,180,5):
    print("This is Angle1", Angle1)

print("\n\nAnd for Angle2:\n")
for Angle2 in range(-180,180,10):
    print("This is Angle2", Angle2)
This little program iterates on each angle separately and independently, giving the following output:
Output:
For Angle1: This is Angle1 0 This is Angle1 5 This is Angle1 10 This is Angle1 15 This is Angle1 20 This is Angle1 25 This is Angle1 30 This is Angle1 35 This is Angle1 40 This is Angle1 45 This is Angle1 50 This is Angle1 55 This is Angle1 60 This is Angle1 65 This is Angle1 70 This is Angle1 75 This is Angle1 80 This is Angle1 85 This is Angle1 90 This is Angle1 95 This is Angle1 100 This is Angle1 105 This is Angle1 110 This is Angle1 115 This is Angle1 120 This is Angle1 125 This is Angle1 130 This is Angle1 135 This is Angle1 140 This is Angle1 145 This is Angle1 150 This is Angle1 155 This is Angle1 160 This is Angle1 165 This is Angle1 170 This is Angle1 175 And for Angle2: This is Angle2 -180 This is Angle2 -170 This is Angle2 -160 This is Angle2 -150 This is Angle2 -140 This is Angle2 -130 This is Angle2 -120 This is Angle2 -110 This is Angle2 -100 This is Angle2 -90 This is Angle2 -80 This is Angle2 -70 This is Angle2 -60 This is Angle2 -50 This is Angle2 -40 This is Angle2 -30 This is Angle2 -20 This is Angle2 -10 This is Angle2 0 This is Angle2 10 This is Angle2 20 This is Angle2 30 This is Angle2 40 This is Angle2 50 This is Angle2 60 This is Angle2 70 This is Angle2 80 This is Angle2 90 This is Angle2 100 This is Angle2 110 This is Angle2 120 This is Angle2 130 This is Angle2 140 This is Angle2 150 This is Angle2 160 This is Angle2 170
Keep in mind that the upper limits stay out, so 180 being the upper limit for both Angle1 and Angle2, is left out. If you want them to also appear when their value reaches 180, you could change the upper limit to 181, instead of 180, as this doesn't affect in any other way (Angle1 changes every 5º, and Angle2 every 10º). Therefore, with this little modification the program changes to:

print("\n\nFor Angle1:\n")
for Angle1 in range(0,181,5):
    print("This is Angle1", Angle1)

print("\n\nAnd for Angle2:\n")
for Angle2 in range(-180,181,10):
    print("This is Angle2", Angle2)
And this gives the following output:
Output:
For Angle1: This is Angle1 0 This is Angle1 5 This is Angle1 10 This is Angle1 15 This is Angle1 20 This is Angle1 25 This is Angle1 30 This is Angle1 35 This is Angle1 40 This is Angle1 45 This is Angle1 50 This is Angle1 55 This is Angle1 60 This is Angle1 65 This is Angle1 70 This is Angle1 75 This is Angle1 80 This is Angle1 85 This is Angle1 90 This is Angle1 95 This is Angle1 100 This is Angle1 105 This is Angle1 110 This is Angle1 115 This is Angle1 120 This is Angle1 125 This is Angle1 130 This is Angle1 135 This is Angle1 140 This is Angle1 145 This is Angle1 150 This is Angle1 155 This is Angle1 160 This is Angle1 165 This is Angle1 170 This is Angle1 175 This is Angle1 180 And for Angle2: This is Angle2 -180 This is Angle2 -170 This is Angle2 -160 This is Angle2 -150 This is Angle2 -140 This is Angle2 -130 This is Angle2 -120 This is Angle2 -110 This is Angle2 -100 This is Angle2 -90 This is Angle2 -80 This is Angle2 -70 This is Angle2 -60 This is Angle2 -50 This is Angle2 -40 This is Angle2 -30 This is Angle2 -20 This is Angle2 -10 This is Angle2 0 This is Angle2 10 This is Angle2 20 This is Angle2 30 This is Angle2 40 This is Angle2 50 This is Angle2 60 This is Angle2 70 This is Angle2 80 This is Angle2 90 This is Angle2 100 This is Angle2 110 This is Angle2 120 This is Angle2 130 This is Angle2 140 This is Angle2 150 This is Angle2 160 This is Angle2 170 This is Angle2 180
I hope it helps,
newbieAuggie2019

"That's been one of my mantras - focus and simplicity. Simple can be harder than complex: You have to work hard to get your thinking clean to make it simple. But it's worth it in the end because once you get there, you can move mountains."
Steve Jobs
Reply
#7
(Aug-22-2019, 05:29 AM)vipinv23 Wrote: I want to iterate two variables independently and simultaneously in a single for loop.

All writen above can be put into 2 lines of code:
for angle1, angle2 in zip(range(0, 181, 5), range(-180, 181, 10)):
    print(angle1, angle2)
Reply
#8
(Aug-25-2019, 08:56 AM)ThomasL Wrote:
(Aug-22-2019, 05:29 AM)vipinv23 Wrote: I want to iterate two variables independently and simultaneously in a single for loop.

All writen above can be put into 2 lines of code:
for angle1, angle2 in zip(range(0, 181, 5), range(-180, 181, 10)):
    print(angle1, angle2)

Wow! Thank you, I'm a newbie and I didn't know about this zip() function. I guess you could use it in many ways.

I just tried your code:
for angle1, angle2 in zip(range(0, 181, 5), range(-180, 181, 10)):
    print(angle1, angle2)
that produces this output:
Output:
0 -180 5 -170 10 -160 15 -150 20 -140 25 -130 30 -120 35 -110 40 -100 45 -90 50 -80 55 -70 60 -60 65 -50 70 -40 75 -30 80 -20 85 -10 90 0 95 10 100 20 105 30 110 40 115 50 120 60 125 70 130 80 135 90 140 100 145 110 150 120 155 130 160 140 165 150 170 160 175 170 180 180
As I am very visual, and I like self-explanatory answers, I just made a few tweakings to your code (I hope you don't mind):
for angle1, angle2 in zip(range(0, 181, 5), range(-180, 181, 10)):
    angle1 = str(angle1)
    angle2 = str(angle2)
    print("This is angle1:", angle1, "and this is angle2:",angle2)
and now it produces the following output:
Output:
This is angle1: 0 and this is angle2: -180 This is angle1: 5 and this is angle2: -170 This is angle1: 10 and this is angle2: -160 This is angle1: 15 and this is angle2: -150 This is angle1: 20 and this is angle2: -140 This is angle1: 25 and this is angle2: -130 This is angle1: 30 and this is angle2: -120 This is angle1: 35 and this is angle2: -110 This is angle1: 40 and this is angle2: -100 This is angle1: 45 and this is angle2: -90 This is angle1: 50 and this is angle2: -80 This is angle1: 55 and this is angle2: -70 This is angle1: 60 and this is angle2: -60 This is angle1: 65 and this is angle2: -50 This is angle1: 70 and this is angle2: -40 This is angle1: 75 and this is angle2: -30 This is angle1: 80 and this is angle2: -20 This is angle1: 85 and this is angle2: -10 This is angle1: 90 and this is angle2: 0 This is angle1: 95 and this is angle2: 10 This is angle1: 100 and this is angle2: 20 This is angle1: 105 and this is angle2: 30 This is angle1: 110 and this is angle2: 40 This is angle1: 115 and this is angle2: 50 This is angle1: 120 and this is angle2: 60 This is angle1: 125 and this is angle2: 70 This is angle1: 130 and this is angle2: 80 This is angle1: 135 and this is angle2: 90 This is angle1: 140 and this is angle2: 100 This is angle1: 145 and this is angle2: 110 This is angle1: 150 and this is angle2: 120 This is angle1: 155 and this is angle2: 130 This is angle1: 160 and this is angle2: 140 This is angle1: 165 and this is angle2: 150 This is angle1: 170 and this is angle2: 160 This is angle1: 175 and this is angle2: 170 This is angle1: 180 and this is angle2: 180
Thanks again to make me aware of this zip() function!

I just noticed too the change from uppercase to lowercase. I guess I need to check and use more frequently the PEP8 docs... Rolleyes
newbieAuggie2019

"That's been one of my mantras - focus and simplicity. Simple can be harder than complex: You have to work hard to get your thinking clean to make it simple. But it's worth it in the end because once you get there, you can move mountains."
Steve Jobs
Reply
#9
The conversion is not necessary, just use f-strings (Python >=3.6)
    angle1 = str(angle1)
    angle2 = str(angle2)
    print("This is angle1:", angle1, "and this is angle2:",angle2)
print(f'This is angle1: {angle1} and this is angle2: {angle2}')
And maybe you should bookmark this link: Python built-in functions
Reply
#10
(Aug-25-2019, 02:12 PM)ThomasL Wrote: The conversion is not necessary, just use f-strings (Python >=3.6)
    angle1 = str(angle1)
    angle2 = str(angle2)
    print("This is angle1:", angle1, "and this is angle2:",angle2)
print(f'This is angle1: {angle1} and this is angle2: {angle2}')
And maybe you should bookmark this link: Python built-in functions
Wow, thank you again!

I'm still a newbie, so my knowledge is almost zero, but I'm learning a bit, mostly by imitating code I see, that I can understand and use or tweak.

Thank you for making me aware of more ways to format and use strings. I had already seen and tweaked some in a few posts here about splitting email addresses.
Quote:And maybe you should bookmark this link: Python built-in functions
The link you provided is great, and I have already bookmarked it for later reference, (when I know more Python), but at my current knowledge and way of learning, it's a bit more discouraging than encouraging... Wink

All the best,
newbieAuggie2019

"That's been one of my mantras - focus and simplicity. Simple can be harder than complex: You have to work hard to get your thinking clean to make it simple. But it's worth it in the end because once you get there, you can move mountains."
Steve Jobs
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Creating a loop with dynamic variables instead of hardcoded values FugaziRocks 3 1,499 Jul-27-2022, 08:50 PM
Last Post: rob101
  WHILE Loop - constant variables NOT working with user input boundaries C0D3R 4 1,494 Apr-05-2022, 06:18 AM
Last Post: C0D3R
  how to use 3 variables python loop evilcode1 2 1,684 Nov-12-2021, 11:43 AM
Last Post: jamesaarr
  Creating a variables inside FOR loop zazas321 5 4,110 Sep-16-2020, 04:42 PM
Last Post: Naheed
  Two variables in loop Ferdis 1 1,543 Jul-24-2020, 10:18 AM
Last Post: buran
  Create, assign and print variables in loop steven_tr 10 4,361 May-28-2020, 04:26 PM
Last Post: ndc85430
  Operations on indexed variables in loop Fibulavie 1 1,941 Aug-14-2019, 06:07 AM
Last Post: fishhook
  labelling variables of df with map() in loop theinzawoo 2 2,502 Mar-19-2019, 03:42 AM
Last Post: theinzawoo
  I need help with loop one function and creating variables don 3 2,825 Jan-24-2019, 07:31 AM
Last Post: buran
  I can't figure out how to create variables in a while loop MrCag 1 2,369 May-08-2018, 08:56 PM
Last Post: wavic

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020