我正在寻找一种方法来生成所有组合的列表,并保持其当前索引:
到目前为止,我一直在使用这种方法:
stuff = ['A', 'B', 'C']
for L in range(0, len(stuff)+1):
for subset in itertools.combinations(stuff, L):
a = subset
list.append(a)
给出:
[(),
('A',),
('B',),
('C',),
('A', 'B'),
('A', 'C'),
('B', 'C'),
('A', 'B', 'C')]
我正在寻找的是一种解决方案,它可以转换成以下字符串:
[(0, 0, 0),
('A', 0, 0),
('B', 0, 0),
('C', 0, 0),
('A', 'B', 0),
('A', 0, 'C'),
(0, 'B', 'C'),
('A', 'B', 'C')]
最佳, 基督教
答案 0 :(得分:1)
您可以使用列表推导[i if i in subset else 0 for i in stuff]
你走了:
import itertools
stuff, result = ['A', 'B', 'C'], []
for L in range(0, len(stuff)+1):
for subset in itertools.combinations(stuff, L):
result.append([i if i in subset else 0 for i in stuff])
现在,如果你检查结果,
>>> print result
[[0, 0, 0], ['A', 0, 0], [0, 'B', 0], [0, 0, 'C'], ['A', 'B', 0], ['A', 0, 'C'], [0, 'B', 'C'], ['A', 'B', 'C']]