蟒蛇与病情
问题描述:
阵列循环我发现Python没有空调风格的for循环:蟒蛇与病情
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
是相应阵列条目的内容。 2for index, item in enumerate(takewhile(lambda i: i < number, array[2:])): # do stuff
但这指数是关闭的,因为它计数通过的项目;如果你确实需要的索引,你可以用
enumerate()
结合起来当您从array[2:]
开始时,您必须添加2
才能访问阵列的右侧部分。 -
使用while循环:
i = 2 while (array[i-2] < number): # do stuff i += 1
答
您可以使用以下方法:
for i in xrange(2, number):
# Whatever
当x范围有两个参数,它创建从第一个值到最后值的范围。请注意,第一个值包含在最后一个值中。
编辑:如果你正在处理数组,Tim Pietzcker的方法就是要走的路。我只是提供了这个方法来提供一个方便的对象。
+0
怎么样'an_array [我 - 2]
'enumerate'在Python 2.6中获得了一个起始索引值('start = 0'),这使得第二个版本更好一些:'for index,item in enumerate(takewhile(lambda i:i
torek