我发现python没有C风格的循环:
for (var;condition:increment)
对于一个简单的 for 循环,我可以使用
for i in xrange(number):
生产
for (i;i<number;i++)
但是,如果我有
for (i = 2; an_array[i - 2] < number; i++)
如何在 python 中生成它?
谢谢
你可以
遍历该数组并使用其中的一个简洁函数itertools
,例如takewhile()
:
for item in takewhile(lambda i: i < number, array[2:]):
# do stuff
这从给定的可迭代对象(这里:一个数组)中获取值,直到(分别)其内容满足特定条件。
这里,item
是相应数组条目的内容。如果你真的需要索引,你可以将它与enumerate()
:
for index, item in enumerate(takewhile(lambda i: i < number, array[2:])):
# do stuff
但是这个索引减少了 2,因为它计算了通过的项目;当您开始时,array[2:]
您必须添加2
才能访问数组的正确部分。
使用 while 循环:
i = 2
while (array[i-2] < number):
# do stuff
i += 1
您可以使用以下内容:
for i in xrange(2, number):
# Whatever
当 xrange 接受 2 个参数时,它会创建一个从第一个值到最后一个值的范围。请注意,第一个值包括在内,而最后一个值不包括在内。
编辑:如果您正在使用数组,Tim Pietzcker 的方法就是要走的路。我只是给出了这个方法来提供一个方便的对应物。