2016-12-11 7 views
-4

リスト内の要素からすべての組み合わせを生成するにはどうすればよいですか?例えば

list = [0, 1, 2] 

私はすべての可能な2-組み合わせの一覧が欲しい:

combinations = [(0,0), (0,1), (0,2), (1,0), (1,1), (1,2), (2,0), (2,1), (2,2)] 

Pythonでitertoolsのすべてのツールが唯一の1(1,0を作るように私には思えます)と(0,1)の両方ではなく、両方が必要です。手で入力する以外の提案はありますか?

+5

を、あなたは 'itertools.product'を試みたことがありますか? – vaultah

答えて

2

あなたはデカルト製品を探していますそのリストのそれ自体ではなく、順列も組み合わせもあります。したがって、あなたはrepeat=2itertools.productを使用する必要があります。

from itertools import product 

li = [0, 1, 2] 
print(list(product(li, repeat=2))) 
>> [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)] 
0

はitertoolsをインポートすることにより行うことができます。

import itertools 

list1 = [0, 1, 2] 
print(list(itertools.product(list1,repeat=2))) 

出力:

[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)] 

リソース: あなたはそれについての詳細を学ぶことができます - here

+0

出力をOPの希望出力と比較しましたか? – vaultah

+0

ああ、私は悪い、私はそれと私の答えを修正しました。 – Inconnu

+0

同じループを何回か実行する必要はありません。 'itertools.combinations(list1,2)'は、望ましい出力を生成しません。 – vaultah

関連する問題