2016-04-12 42 views
0

Zaten bir yöntem neredeyse yapabilirsiniz var AncakPython tarafından tekrar edilmeden iki setin düzenlemesi nasıl yapılır?</p> <pre><code>from itertools import product l = {1,2,3} print(list(product(l,l))) </code></pre> <p>çıkışı:

[(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)] 

, I (1,1) gibi setine istemiyoruz (2 , 2), (3,3)

ve (2, 3), (3, 2), sadece set kavramında aynı olduklarından bir kez görünmelidir.

Yani tam olarak istediğiniz çıktısı:

[(1, 2), (1, 3), (2, 1), (2, 3)] 

Bunu nasıl yapabilirim

?

+2

'(1, 2)' ve '(2, 1) 'sonra beklenen çıkış olmamalıdır. – JRodDynamite

cevap

11

basit bir yöntem bile iterools.combinations

>>> import itertools 
>>> list(itertools.combinations({1,2,3}, 2)) 
[(1, 2), (1, 3), (2, 3)] 
>>> 
+0

Yardımlarınız için teşekkür ederiz! Bu son derece yararlı! :) –

1
You can apply a filter. For e.g.: 

>>> from itertools import product 
>>> l = {1,2,3} 
>>> list(filter(lambda x: [x, None][x[0] == x[1]], list(product(l,l)))) 
[(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)] 
>>>