python - 不同子列表项的可能集合,每个子列表有一个元素
问题描述
我正在寻找一种方法来获取列表中包含的所有子列表的单个元素的组合,而无需事先知道列表和子列表的长度。让我通过下面的两个例子来说明我的意思。我有两个列表(myList1
和myList2
),并想获得两个组合集(setsCombo1
和setsCombo1
):
myList1 = [['a'], [1, 2, 3], ['X', 'Y']]
setsCombo1 = [['a', 1, 'X'],
['a', 1, 'Y'],
['a', 2, 'X'],
['a', 2, 'Y'],
['a', 3, 'X'],
['a', 3, 'Y']]
myList2 = [['a'], [1, 2, 3], ['X', 'Y'], [8, 9]]
setsCombo2 = [['a', 1, 'X', 8],
['a', 1, 'X', 9],
['a', 1, 'Y', 8],
['a', 1, 'Y', 9],
['a', 2, 'X', 8],
['a', 2, 'X', 9],
['a', 2, 'Y', 8],
['a', 2, 'Y', 9],
['a', 3, 'X', 8],
['a', 3, 'X', 9],
['a', 3, 'Y', 8],
['a', 3, 'Y', 9]]
我对 itertools 进行了一些研究,但无法真正快速找到任何合适的东西......
解决方案
itertools.product
拆包*
(几乎)这样做:
>>> from itertools import product
>>> list(product(*myList1))
[('a', 1, 'X'),
('a', 1, 'Y'),
('a', 2, 'X'),
('a', 2, 'Y'),
('a', 3, 'X'),
('a', 3, 'Y')]
要将内部元素转换为列表,我们map
:
>>> list(map(list, product(*myList1)))
[['a', 1, 'X'],
['a', 1, 'Y'],
['a', 2, 'X'],
['a', 2, 'Y'],
['a', 3, 'X'],
['a', 3, 'Y']]
推荐阅读
- spring-boot - Spring Boot:Kotlin 和 MongoRepository:执行全文搜索
- c - WiringPiISR 在每个引脚触发回调
- angular - 使用 IONIC 存储服务,如何获取和返回存储的 JSON 数据?
- yocto - 构建镜像后如何在 Yocto 项目中构建额外的包
- java - Spring Boot Admin:必须启用健康或状态端点
- react-native - React Native - 无法在单个文件中定义多个堆叠的导航器
- android-studio - 我们可以为 Unity3D 转换 Android Studio 项目吗?
- c# - 在 WPF 的第二个窗口中访问 Filesystemwatcher 值
- python-3.x - PermissionError:[Errno 13] 运行以 Python 编码的服务器端 CGI 脚本时权限被拒绝
- ajax - Ajax 表单数据传递给 API