2016-05-08 43 views
1

我有一個列表,我想迭代在它上面,然後在嵌套for中迭代第一個從我讀取的第一個下一個位置開始。在Python中嵌套

在Java等語言是:

int[10] array; 
for (int i=0; i < array.length(); i++) 
    for (int j=i+1; j < array.length(); j ++) 
     //do something with the array comparing a[i] and a[j] 

我怎麼能這樣做Python的? 我試試這個:

for a in array: 
    del array[0] 
    for a2 in array: 
     //do something with the array comparing a and a2 

但是,只有在第一次迭代工程..任何幫助嗎?

+2

你爲什麼'del array [0]'? Java代碼不會從數組中刪除任何內容 –

回答

6
for i in range(0,len(array)): 
    for j in range(i+1,len(array)): 
     #do something with array[i] and array[j] 
3

在Python您使用enumerate如果希望指數在迭代:

array = [1,2,3,4] 

for index1, value1 in enumerate(array): 
    for index2, value2 in enumerate(array[index1+1:]): 
     print(index1, index2+index1+1, value1, value2) 

[index1+1:]片陣列只包括以下項目。那麼輸出將是:

0 1 1 2 
0 2 1 3 
0 3 1 4 
1 2 2 3 
1 3 2 4 
2 3 3 4 

但是有一個內置的功能,這將是你的情況是絕配:itertools.combinations,它允許你這樣做,即使沒有嵌套的循環:

from itertools import combinations 

for value1, value2 in combinations(array, 2): 
    print(value1, value2) 

打印:

1 2 
1 3 
1 4 
2 3 
2 4 
3 4