Joh*_*nak 14 python tuples set subset
我有一组值,并希望创建包含2个元素的所有子集的列表.
例如,源集([1,2,3])具有以下2元素子集:
set([1,2]), set([1,3]), set([2,3])
Run Code Online (Sandbox Code Playgroud)
有没有办法在python中执行此操作?
sen*_*rle 27
好像你想要的itertools.combinations:
>>> list(itertools.combinations((1, 2, 3), 2))
[(1, 2), (1, 3), (2, 3)]
Run Code Online (Sandbox Code Playgroud)
如果你想要套装,你必须明确地转换它们.如果您不介意迭代而不是列表,并且您使用的是Python 3,则可以使用map:
>>> s = set((1, 2, 3))
>>> map(set, itertools.combinations(s, 2))
<map object at 0x10cdc26d8>
Run Code Online (Sandbox Code Playgroud)
要一次查看所有结果,可以将输出传递map给list.(在Python 2中,输出map自动为列表.)
>>> list(map(set, itertools.combinations(s, 2)))
[{1, 2}, {1, 3}, {2, 3}]
Run Code Online (Sandbox Code Playgroud)
但是,如果你知道你需要一个列表,那么列表理解会略微好一些(h/t Jacob Bowyer):
>>> [set(i) for i in itertools.combinations(s, 2)]
[{1, 2}, {1, 3}, {2, 3}]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22012 次 |
| 最近记录: |