python for循环与数组条件

时间:2013-07-17 06:57:23

标签: python list for-loop

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

感谢

2 个答案:

答案 0 :(得分:4)

你可以

  1. 迭代该数组并使用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才能访问数组的正确部分。

  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的方法就是你要走的路。我只是给这个方法提供了一个方便的对应物。