2017-10-26 9 views
1

私はこれをどこでも見つけることができなかったことに本当に驚いていました。それはとてもではないように私は感じリストのすべてのペアをループするPythonの方法

for i in range (len(clusters)): 
    for j in range (i+1, len(clusters)): 
     do stuff 

for (i = 0; i < length; i++) 
    for (j = i + 1; j < length; j++) 
     do stuff 

しかし、Pythonで、あなたがしなければならないでしょう:リスト内のすべての可能なペアを通過するほとんどの言語で は、次のようになりますピジョン酸。これを行う最善の方法は何ですか?

+0

私はこのようにそれを行うだろう:xrangeの中で私のために '[(i、j)を(1、あなたは純粋なのpythonを使用して、まだインデックス、およびいくつかのスライスを得るためにemumerate()を使用して非常に簡単にそれを行うことができますxrange(i、len(mylist))の中のjのlen(mylist))] 'foo(i、j)'という関数を呼び出すこともできます。 – Sadik

答えて

4

あなたがcombinations()使用することができます:あなたはそれに適応した場合、あなたが実際にほとんどそれらを必要としないので

from itertools import combinations 
combinations('ABCD', 2) --> AB AC AD BC BD CD 

Pythonは、 "C-スタイル" ループを阻止します。

lst = 'ABCD' 
for index, first in enumerate(lst): 
    for second in lst[index+1:]: 
     print(first, second) 
関連する問題