2016-12-11 8 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)] 

Мне кажется, что все инструменты в itertools в Python только сделать один из (1,0) и (0,1), не оба, мне нужны оба. Любые предложения, кроме ввода их вручную?

+5

Вы пробовали 'itertools.product'? – vaultah

ответ

2

Вы ищете декартово произведение из этого списка с собой, а не с перестановкой или комбинацией. Поэтому вы должны использовать itertools.product с repeat=2:

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