2016-01-02 113 views
0

我有一個包含5個元素的Python [0,1,2,3,4]中的數組。我想按以下方式比較元素。For循環將一個元素與數組中的所有其餘元素進行比較

(0,1),(0,2),(0,3),(0,4),(1,2),(1,3),(1,4),(2,3),(2,4),(3,4),(4,4) 

我在做什麼如下。

for i in range(len(array)): 
    for j in range(i+1,len(array)): 

但是,這是比較以下方式。

(0,1),(1,2),(2,3),(3,4)... 

我在哪裏做錯了?

+0

你想要結果嗎,還是你想自己寫? – TigerhawkT3

+0

@ TigerhawkT3如果我想以上述方式比較元素,我需要邏輯。 – Neil

+2

在這些循環後面加上一行'print(array [i],array [j])',我得到所需的輸出(除了((4,4)',它實際上並不是組合序列的一部分) 。 – TigerhawkT3

回答

-1

這段代碼產生期望的結果:

array = [0,1,2,3,4] 
for i in range(len(array)): 
    for j in range(i+1,len(array)): 
     print(array[i], array[j]) 
print(array[-1], array[-1]) 

此代碼是你可能得到錯誤結果的一種方法:

for i in range(len(array)): 
    for j in range(i+1,len(array)): 
     print(array[i], array[j]) 
     break 
+0

爲什麼會在那裏有一個「休息」?任何事情都是可能的,但你猜這個猜測是什麼? – TigerhawkT3

+0

@ TigerhawkT3:這是一個簡單的變化,產生了報告的結果。這只是一種猜測,但它是我能想到的唯一方法,而不會使事情變得更加複雜。 –

-1

使用itertools是另一種選擇:

>>> [x for x in itertools.combinations(xrange(5), 2)] 
[(0, 1), (0, 2), (0, 3), (0, 4), (1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)] 
+0

你有解釋爲什麼OP的代碼不適合他們嗎? – TigerhawkT3

+0

@ TigerhawkT3,不,因爲他的代碼不完整(for循環看起來不錯),還比較每個元素與他自己(我的意思是(4,4))是一件愚蠢的事情,因爲你知道它永遠是真的,或者他們將永遠在那裏。 – Netwave

相關問題