繁体   English   中英

不同子列表项的可能集合,每个子列表有一个元素

[英]Possible sets of different sub-list items with one element of each sub-list

我正在寻找一种方法来获取列表中包含的所有子列表的单个元素的组合,而无需事先知道列表和子列表的长度。 让我通过下面的两个例子来说明我的意思。 我有两个列表( myList1myList2 )并且想要获得两个组合集( setsCombo1setsCombo1 ):

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

暂无
暂无

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

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