我有三个列表(L1、L2、L3),例如:
L1 = [1,2]
L2 = ['a','b']
L3 = ['A','B']
我想计算 L1*L2*L3 的乘积,id est,
itertools.product(L1,L2,L3) = [ [1,'a','A'], [1,'a','B'], ... ]
但我想考虑或不考虑一些清单;因此,[1,], [ 1, 'a' ] 将是结果的一部分,如 ['a',], ['a', 'B'] 等等。
有什么想法可以帮助我吗?谢谢 !
我有三个列表(L1、L2、L3),例如:
L1 = [1,2]
L2 = ['a','b']
L3 = ['A','B']
我想计算 L1*L2*L3 的乘积,id est,
itertools.product(L1,L2,L3) = [ [1,'a','A'], [1,'a','B'], ... ]
但我想考虑或不考虑一些清单;因此,[1,], [ 1, 'a' ] 将是结果的一部分,如 ['a',], ['a', 'B'] 等等。
有什么想法可以帮助我吗?谢谢 !
使用itertools 示例powerset
中给出的函数。将为您提供 3 个列表的所有子集。对于每个子集,您可以获取笛卡尔积,然后将它们链接在一起。powerset([L1,L2,L3])
>>> from itertools import chain, product
>>> result = chain.from_iterable(product(*lists) for lists in powerset([L1,L2,L3]))
>>> list(result)
[(), (1,), (2,), ('a',), ('b',), ('A',), ('B',), (1, 'a'), (1, 'b'), (2, 'a'),
(2, 'b'), (1, 'A'), (1, 'B'), (2, 'A'), (2, 'B'), ('a', 'A'), ('a', 'B'),
('b', 'A'), ('b', 'B'), (1, 'a', 'A'), (1, 'a', 'B'), (1, 'b', 'A'),
(1, 'b', 'B'), (2, 'a', 'A'), (2, 'a', 'B'), (2, 'b', 'A'), (2, 'b', 'B')]