繁体   English   中英

pythonic迭代set / remnant集的方法

[英]pythonic way to iterate over a set/remnant set

做以下事情的干净方法是什么:

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

我认为必须有一些写作方式只是一个循环?

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]]

在你的情况下,你需要一个发电机

(doSomething(i, j) for i in aSet for j in aSet if j != i)
>>> 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,

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM