列出python中的排列

伊丹什穆

我有以下列表:

list1 = [ 'A','B','C']
list2 = [ '1', '2' ]

尝试生成具有以下所需结果的新元组列表:

[(A1),(A2),(A1,B1),(A1,B2),(A2,B1),(A2,B2),(A1,B1,C1),(A2,B1,C1)...]

每个元组最终将被用于在输出文件中写入一行。
注意:

  1. 在每个元组中,来自的每个字母list1(如果已定义)必须在前面的字母之后定义。例如,如果在元组中定义了“ B”,则“ A”也必须在元组中并且在“ B”之前。不需要元组(A1,C1),因为也未定义'B'。
  2. 元组必须是唯一的。
  3. list1list2只是一个示例,其长度可能会有所不同。

我尝试玩了一段时间itertools,尤其是productpermutationsgroups我似乎无法实现这一目标,甚至没有值得共享的代码。

马丁·彼得斯(Martijn Pieters)

连续放大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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章