Python Forum
Two variables in for loop - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: Two variables in for loop (/thread-20616.html)



Two variables in for loop - vipinv23 - Aug-22-2019

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):



RE: Two variables in for loop - ndc85430 - Aug-22-2019

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.


RE: Two variables in for loop - vipinv23 - Aug-22-2019

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


RE: Two variables in for loop - DeaD_EyE - Aug-22-2019

I did not understand you task. You don't want to do this:


zip


product


iterating the second object manually



RE: Two variables in for loop - ndc85430 - Aug-24-2019

(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?


RE: Two variables in for loop - newbieAuggie2019 - Aug-25-2019

(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,


RE: Two variables in for loop - ThomasL - Aug-25-2019

(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)



RE: Two variables in for loop - newbieAuggie2019 - Aug-25-2019

(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


RE: Two variables in for loop - ThomasL - Aug-25-2019

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


RE: Two variables in for loop - newbieAuggie2019 - Aug-26-2019

(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,