我发现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中生成它?
感谢
答案 0 :(得分:4)
你可以
迭代该数组并使用itertools
中的一个简洁函数,例如takewhile()
:
for item in takewhile(lambda i: i < number, array[2:]):
# do stuff
这将从给定的iterable(此处为:数组)中获取值,直到(resp.while)其内容满足某个条件。
此处,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
答案 1 :(得分:1)
您可以使用以下内容:
for i in xrange(2, number):
# Whatever
当xrange采用2个参数时,它会创建从第一个值到最后一个值的范围。请注意,包含第一个值而最后一个值不包括。
编辑:如果你正在使用数组,Tim Pietzcker的方法就是你要走的路。我只是给这个方法提供了一个方便的对应物。