蟒蛇与病情

问题描述:

阵列循环我发现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中生成它?

感谢

你可以

  1. 逐一查看该数组,并使用整齐的功能之一itertools,如takewhile():数组:

    for item in takewhile(lambda i: i < number, array[2:]): 
        # do stuff 
    

    这从给定的迭代(这里取值)直到(或同时)其内容符合一定条件。

    这里,item是相应阵列条目的内容。 2

    for index, item in enumerate(takewhile(lambda i: i < number, array[2:])): 
        # do stuff 
    

    但这指数是关闭的,因为它计数通过的项目;如果你确实需要的索引,你可以用enumerate()结合起来当您从array[2:]开始时,您必须添加2才能访问阵列的右侧部分。

  2. 使用while循环:

    i = 2 
    while (array[i-2] < number): 
        # do stuff 
        i += 1 
    
+0

'enumerate'在Python 2.6中获得了一个起始索引值('start = 0'),这使得第二个版本更好一些:'for index,item in enumerate(takewhile(lambda i:i torek

您可以使用以下方法:

for i in xrange(2, number): 
    # Whatever 

当x范围有两个参数,它创建从第一个值到最后值的范围。请注意,第一个值包含在最后一个值中。

编辑:如果你正在处理数组,Tim Pietzcker的方法就是要走的路。我只是提供了这个方法来提供一个方便的对象。

+0

怎么样'an_array [我 - 2] glglgl