2016-04-03 18 views
3

yapmanın temiz bir yolu nedir set aşağıdaki: Ben döngü bu kadar sadece bir tane yazmaya yönelik bir yolu olmalı düşünüyorumpythonic yolu

def foo(aSet) : 
    for a in aSet: 
     for remaining in aSet - {a} : 
      doSomething(a,remaining) 

? Senin durumunda

+1

Kısa ihtiyaç kodunuzu ne yaptığını üzerinde oldukça açık görünüyor. Fonksiyon hakkında bir yorum da incitmez. –

cevap

3
aSet = {1,2,3} 
[[i,j] for i in aSet for j in aSet if j != i] 
#=> [[1, 2], [1, 3], [2, 1], [2, 3], [3, 1], [3, 2]] 

bir jeneratörü gerçek değerleri benzeyen bir şeye değiştirme ihtiyacı değişken isimleri

(doSomething(i, j) for i in aSet for j in aSet if j != i) 
3
>>> from itertools import permutations 
>>> aSet = {1, 2, 3} 
>>> list(permutations(aSet, 2)) 
[(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)] 

>>> for a, remaining in permutations(aSet, 2): 
...  print(a, remaining, end=', ') 
... 
1 2, 1 3, 2 1, 2 3, 3 1, 3 2, 
İlgili konular