python - python获取每个成员只出现一次的组合组
问题描述
我试图让每个成员只出现一次的排列/组合组(r = 2)
我使用 python 'combinations' 包来进行组合。
例如:成员是:a,b,c,d。 组合是:[a,b],[a,c],[a,d],[b,c],[b,d]...
我想要的输出是: [ {[a,b],[c,d]},{[a,c],[b,d]},{[a,d],[b,c]}... ]
我想知道该案例的术语是什么,以及是否已经实施了该案例。
谢谢。
解决方案
这是一种方法:
from itertools import combinations, chain
l = ['a','b','c','d']
c = list(combinations(l,2))
[set(i) for i in list(combinations(c,2)) if (len(set(l) & set(chain(*i))) == len(l))]
[{('a', 'b'), ('c', 'd')}, {('a', 'c'), ('b', 'd')}, {('a', 'd'), ('b', 'c')}]
解释
您可以使用itertools.combinations
两次,以便从以下位置获取所有 2 个元组组合:
list(combinations(l,2))
[('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd'), ('c', 'd')]
len(set(l) & set(chain(*i))) == len(l))
对于每个可能的组合,只选择那些元素集与原始列表相交的元素。
推荐阅读
- ios - 无法在 iOS 14(模拟器和设备)上使用 VideoPlayer 播放 HEVC
- firebase - 我无法部署 Firebase 功能,因为我没有“服务帐户用户”角色
- python - youtube页面使用selenium向下滚动,python
- python - 将数据框列值编辑为特定格式
- javascript - 命名空间“google.maps”没有导出成员“MouseEvent”
- java - 未设置 X11 DISPLAY 变量。如何使用 java 从 linux 中的剪贴板获取数据?
- python - 如何将 python time.time() 转换为日期格式以进行 sql 插入
- asp.net-core - 从 Entity Framework Core 中的 cookie 和基本路径创建数据库上下文
- javascript - 从资产文件夹打开本地 html 时,window.open() 弹出窗口被广告拦截器阻止,如果文件没有 .html 扩展名,则工作正常
- python - 如何将列表输入到函数中并在 Python 中接收列表?