Python for循环实际上是foreach循环。你可以做
ref =[1,2,3,4]
obt =[0.5,1,1.5,5]
for i in range(len(ref)):
if (obt[i] <= ref[i]):
print ("all ok")
else:
print("error")
范围功能将遍历数字0到你的阵列,range(len(ref)) = [0,1,2,3]
的长度,然后你可以使用它在Python实际上就是抓住这些数字的foreach。
的枚举函数就会给你带来的指数和值,所以你也可以做
ref =[1,2,3,4]
obt =[0.5,1,1.5,5]
for i,r in enumerate(ref):
if (obt[i] <= r):
print ("all ok")
else:
print("error")
的枚举函数还给指数和ref[i]
,它被存储在我和r。这个例子更好地展示了Python的行为如同foreach循环而不是for循环。
的原因错误
上线i,j=0
,你必须给J A值一样,所以你会做i,j=0,0
。现在在这里发生的是0,0
与(0,0)
是一样的东西。这是一个元组。然后元组必须被解包。当一个元组被解压时,第一个变量i得到第一个值0.第二个变量j得到第二个值。如果元组中有更多的值,这个元组将继续下去,直到元组中的每个值都被解压到某个变量。
一旦解决了这个问题,我们可以继续下一行。 for i,j in obt,ref
。再一次,你会看到完全相同的错误。这一次python期待以[(2 value tuple), (2 value tuple), (2 value tuple), (2 value tuple)]
的形式迭代一些东西。
zip函数可用于创建此结构,如上所述,或者如果您更喜欢使用for循环中的索引,则可以使用for i in range(len(ref))
遍历索引列表[0,1,2,3]
。这 只适用于如果ref和obt是相同的长度,否则你必须使用zip。
这两种方式的工作,使用zip或我提到的方法,这取决于你如何解决问题。如果一个列表比另一个长,则zip会截断较长的列表。 Games Braniac提到的itertools.zip_longest解决方案将扩展最短长度列表,使其尺寸相同,然后将其拉伸。
这不是问题,但是你不需要for循环中的'global' –
你应该看看使用'z ip'我相信这是迭代两个列表的最佳方式,您也不需要任何import语句 – northsideknight