1

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

谢谢

4

2 回答 2

4

你可以

  1. 遍历该数组并使用其中的一个简洁函数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才能访问数组的正确部分。

  2. 使用 while 循环:

    i = 2
    while (array[i-2] < number):
        # do stuff
        i += 1
    
于 2013-07-17T07:03:30.020 回答
1

您可以使用以下内容:

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

当 xrange 接受 2 个参数时,它会创建一个从第一个值到最后一个值的范围。请注意,第一个值包括在内,而最后一个值不包括在内。

编辑:如果您正在使用数组,Tim Pietzcker 的方法就是要走的路。我只是给出了这个方法来提供一个方便的对应物。

于 2013-07-17T06:58:58.283 回答