Dan*_*iel 23 python loops for-loop infinite-loop
我想创建一个无限循环,从0到100向上计数到0到0(依此类推),只有在满足循环内的某些收敛标准时才会停止,所以基本上是这样的:
for i in range(0, infinity):
for j in range(0, 100, 1):
print(j) # (in my case 100 lines of code)
for j in range(100, 0, -1):
print(j) # (same 100 lines of code as above)
Run Code Online (Sandbox Code Playgroud)
有没有办法将两个for循环合并到一个j中,以便我没有在循环中写出两次相同的代码?
dam*_*ois 41
使用chain方法itertools
import itertools
for i in range(0, infinity):
for j in itertools.chain(range(0, 100, 1), range(100, 0, -1)):
print(j) # (in my case 100 lines of code)
Run Code Online (Sandbox Code Playgroud)
正如@Chepner所建议的那样,你可以使用itertools.cycle()无限循环:
from itertools import cycle, chain
for i in cycle(chain(range(0, 100, 1), range(100, 0, -1))):
....
Run Code Online (Sandbox Code Playgroud)
pim*_*314 17
除了其他答案,你可以使用一些数学:
while(True):
for i in range(200):
if i > 100:
i = 200 - i
Run Code Online (Sandbox Code Playgroud)
这是另一种可能性:
while notConverged:
for i in xrange(-100, 101):
print 100 - abs(i)
Run Code Online (Sandbox Code Playgroud)
如果您有一组重复的代码,请使用函数来节省空间和精力:
def function(x, y, x, num_from_for_loop):
# 100 lines of code
while not condition:
for i in range(1, 101):
if condition:
break
function(x, y, z, i)
for i in range(100, 0, -1):
if condition:
break
function(x, y, z, i)
Run Code Online (Sandbox Code Playgroud)
你甚至可以用一个 while True