2

番号が指定されていない int リストがあります。リスト内の特定の値に一致する 2 つの整数の違いを見つけたいと思います。

#Example of a list
intList = [3, 6, 2, 7, 1]

#This is what I have done so far

diffList = []

i = 0
while (i < len(intList)):
    x = intList[i]

    j = i +1
    while (j < len(intList)):
        y = intList[j]

        diff = abs(x-y)
        diffList.append(diff)

        j += 1
    i +=1

#Find all pairs that has a difference of 2
diff = diffList.count(2)
print diff

これを行うより良い方法はありますか?

編集: コードに変更を加えました。これが私がやろうとしていたことです。私が知りたいのは、ループ以外に何が使えるかということです。

4

2 に答える 2

10

の仕事のようですitertools.combinations

from itertools import combinations
for a, b in combinations(intList, 2):
   print abs(a - b)

必要に応じて、これをリスト内包表記に変えることもできます:)

[abs(a -b) for a, b in combinations(intList, 2)]
于 2013-09-19T23:21:47.730 に答える
4
int_list = [3, 6, 2, 7, 1]
for x in int_list:
    for y in int_list:
        print abs(x - y)
于 2013-09-19T23:21:34.070 に答える