Python组合生成

Phi*_*hil 6 python python-2.x python-2.7

我是编程和Python的新手.不知道如何继续实现这个(下面解释)问题,因此问题.

我有n个列表,每个列表包含一个或多个项目.我希望有一个包含所有可能组合的新列表,它使用每个列表中的一个项目,并始终使用.

例:

list_1 = ['1','2','3']
list_2 = ['2','5','7']
list_3 = ['9','9','8']
Run Code Online (Sandbox Code Playgroud)

结果将是: ['129', '129', '128', '159', '159', '158', '179', '179', '178', '229', '229', '228', '259', '259', '258', '329', '329', '328', '359', '359','358', '379', '379', '378']

这里的示例有3个列表,每个列表有3个项目但是可以有任意n个列表,每个列表包含任意数量的元素(因此并非所有列表都需要具有相同数量的元素).

列表的所有元素都是字符串,输出列表也包含字符串.

我该怎么办?

我查看了itertools.combinations,但我不知道如何将它用于此任务.

Ash*_*ary 11

itertools.product()在这里使用:

>>> list_1 = ['1','2','3']
>>> list_2 = ['2','5','7']
>>> list_3 = ['9','9','8']
>>> from itertools import product
>>> ["".join(x) for x in product(list_1,list_2,list_3)]
['129', '129', '128', '159', '159', '158', '179', '179', '178', '229', '229', '228', '259', '259', '258', '279', '279', '278', '329', '329', '328', '359', '359', '358', '379', '379', '378']
Run Code Online (Sandbox Code Playgroud)


mat*_*ata 6

使用列表理解:

result = ["%s%s%s" % (i,j,k) for i in list_1 for j in list_2 for k in list_3]
Run Code Online (Sandbox Code Playgroud)

或使用itertools:

product = itertools.product(list_1, list_2, list_3)
result = [''.join(p) for p in product]
Run Code Online (Sandbox Code Playgroud)