0

次のような 3 つのリスト (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'] などのように、結果の一部になります。

私を助けるアイデアはありますか?ありがとう !

4

1 に答える 1

3

itertoolspowersetの例にある関数を使用します。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')]
于 2013-03-28T23:14:17.270 に答える