2013-07-17 53 views
1

陣列循環我發現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中生成它?

感謝

回答

4

你可以

  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

1

您可以使用以下方法:

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

當x範圍有兩個參數,它創建從第一個值到最後值的範圍。請注意,第一個值包含在最後一個值中。

編輯:如果你正在處理數組,Tim Pietzcker的方法就是要走的路。我只是提供了這個方法來提供一個方便的對象。

+0

怎麼樣'an_array [我 - 2] glglgl