python - 在 Python 中创建两个列表的压缩列表,但允许从一个列表到另一个列表重复
问题描述
使用itertools
andpermutation()
获得两个列表的所有唯一组合很容易。例如,如果我有:
['a', 'b']
[1, 2]
我可以很容易地得到:
[
[('a',1),('b',2)],
[('a',2),('b',1)]
]
但是,我真正想要的是允许重复配对。较大列表中的每个项目都是唯一的,但组合的数量将是指数级的,因为第一个列表中的相同项目可以分配给第二个列表中的多个项目。所以对于上面的两个列表,我会得到:
[
[('a',1),('a',2)],
[('a',1),('b',2)],
[('b',1),('a',2)]
[('b',1),('b',2)]
]
如果我在两个列表中的每一个中都有三个项目,我最终会得到 27 个结果。最好的方法是什么?
解决方案
>>> from itertools import combinations, product
>>> x = ['a', 'b']
>>> y = [1, 2]
>>> list(combinations(product(x, y), 2))
[(('a', 1), ('a', 2)),
(('a', 1), ('b', 1)),
(('a', 1), ('b', 2)),
(('a', 2), ('b', 1)),
(('a', 2), ('b', 2)),
(('b', 1), ('b', 2))]
推荐阅读
- python - 重命名熊猫数据框中的一百个或更多列名
- python - Json 到 django 模型。Python 数据类型错误
- javascript - 如何在 EJS 中实现 CSS 文件
- netsuite - 有没有办法在 NetSuite 上的已保存搜索中搜索多个关键字?
- typo3 - 如何在我们的本地机器上设置现有的 TYPO3 项目?
- javascript - Angular Karma - TypeError:无法读取未定义的属性“_id”
- android - 如何添加 android 的多个不同的 firebase api 密钥以使用解析服务器发送推送?
- jwt - 如何在前端安全地存储 JWT
- c - 获取正确的 sscanf 格式以打印字符串和整数
- amazon-web-services - 我创建了一个 ECS 容器,如何将域绑定到它?