首页 > 解决方案 > 如何在python中混合列表并实时查看

问题描述

我试图做如下的事情:

a_list = [
    range(1, 4),
    range(5, 8),
    range(11, 14),
]

我想要这样的结果:

res = ['1 5 11', '1 5 12', '1 5 13', '1 6 11', '1 6 12', '1 6 13', '1 7 11', '1 7 12', '1 7 13',
       '2 5 11', '2 5 12', '2 5 13', '2 6 11', '2 6 12', '2 6 13', '2 7 11', '2 7 12', '2 7 13',
       '3 5 11', '3 5 12', '3 5 13', '3 6 11', '3 6 12', '3 6 13', '3 7 11', '3 7 12', '3 7 13',
      ]

我怎么才能得到它

标签: pythonlist

解决方案


您正在寻找的是子列表的笛卡尔积。

from itertools import product

a_list = [
    ['1', '2', '3'],
    ['5', '6', '7'],
    ['11', '12', '13'],
]

list(product(*a_list))

这会给你一个元组列表。如果您需要列表列表,请尝试:

[list(x) for x in product(*a_list)]

最后,如果您想要空格分隔的字符串:

[' '.join(x) for x in product(*a_list)]

推荐阅读