我有以下列表:
list1 = [ 'A','B','C']
list2 = [ '1', '2' ]
尝试生成具有以下所需结果的新元组列表:
[(A1),(A2),(A1,B1),(A1,B2),(A2,B1),(A2,B2),(A1,B1,C1),(A2,B1,C1)...]
每个元组最终将被用于在输出文件中写入一行。
注意:
list1
(如果已定义)必须在前面的字母之后定义。例如,如果在元组中定义了“ B”,则“ A”也必须在元组中并且在“ B”之前。不需要元组(A1,C1),因为也未定义'B'。list1
&list2
只是一个示例,其长度可能会有所不同。我尝试玩了一段时间itertools
,尤其是product,permutations,groups。我似乎无法实现这一目标,甚至没有值得共享的代码。
连续放大list1
,然后使用以下产品的产品:
from itertools import product
elements = []
for letter in list1:
elements.append([''.join(c) for c in product(letter, list2)])
for combo in product(*elements):
print combo
该elements
列表在每个循环中增长,并添加另一组字母+数字列表以从中生产产品。
这将产生:
>>> elements = []
>>> for letter in list1:
... elements.append([''.join(c) for c in product(letter, list2)])
... for combo in product(*elements):
... print combo
...
('A1',)
('A2',)
('A1', 'B1')
('A1', 'B2')
('A2', 'B1')
('A2', 'B2')
('A1', 'B1', 'C1')
('A1', 'B1', 'C2')
('A1', 'B2', 'C1')
('A1', 'B2', 'C2')
('A2', 'B1', 'C1')
('A2', 'B1', 'C2')
('A2', 'B2', 'C1')
('A2', 'B2', 'C2')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句