2013-11-15 3 views

ответ

7

itertools твой друг ...

http://docs.python.org/2/library/itertools.html

>>> import itertools 
>>> x = [1, 2, 3, 4] 
>>> list(itertools.combinations(x, 2)) 
[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)] 
+0

OP: используйте '' \ n'.join (','. Join (map (str, v)) для v в itertools.combinations (x, 2)) 'для желаемого вывода. –

1

Одним из вариантов является использование itertools.permutations и список понимание:

>>> [(x, y) for x, y in itertools.permutations(mylist, 2) if x < y] 
[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)] 

Условие x < y гарантирует, что вы получите только те перестановки, где x ниже, чем y.

Лучшим вариантом является использование itertools.combinations(mylist, 2).

+0

Зачем беспокоиться, когда itertools.combinations дает желаемый результат? – FogleBird

+0

Почему бы не использовать «комбинации»? –

+0

Да, это на самом деле лучше. –

1

Это достаточно просто сделать это самостоятельно:

l=[1,2,3,4] 
for i in range(0,len(l)): 
    for j in range (i+1,len(l)): 
     print l[i],l[j] 

Но решения с использованием itertools можно обобщить гораздо проще.

Смежные вопросы