2017-01-11 39 views
-1

我想編寫一個程序來計算數組中所有值之間的差異,並查找差異是否也出現在數組還是不是。找到數組中所有值之間的差異,並檢查數組中存在的差異

對於例如,

a = [1,2,4,5] 

for i in range(len(a)): 
    j = i+1 
    for j in range(len(a)): 
     dif = a[i] - a[j] 
     if dif in a: 
      print a[i], a[j], dif 

這裏的輸出是,

2 1 1 
4 2 2 
5 1 4 
5 4 1 

我想知道是否有這樣做的更有效的方法?我不想在這裏使用任何構建函數的python。沒有這個可以改進算法?

任何幫助將是有益的 感謝

+1

'range'和'len'是什麼我會打電話給「內置」功能。所以,你正在製造任意約束。 – rofls

+0

此外,代碼不會提供您提供的輸出。而'j = i + 1'不會做任何事情,因爲你用下一行中的不同值覆蓋了'j' – UnholySheep

回答

1

您可以使用itertools.combinations來實現這一目標:

from itertools import combinations 
a = [1,2,4,5] 

for i, j in combinations(a, 2): 
    dif = j - i # OR, dif = abs(j - i) for checking against absolute value 
    if dif in a: 
     print j, i, dif 

上面的代碼將打印:

2 1 1 
5 1 4 
4 2 2 
5 4 1