从 python 中未知数量的列表中创建所有可能的字符组合

Create all possible char combinations from an unknown amount of lists in python

我想根据列表创建所有可能的字符组合。第一个字符需要来自第一个数组,第二个字符需要来自第二个数组,依此类推。

如果我有以下列表:

char1 = ['a','b','c']
char2 = ['1','2']

可能的字符串是:a1、a2、b1、b2、c1 和 c2。 如何使用未知数量和未知大小的列表进行所有组合的代码?

问题是我不知道会有多少列表。列表数量由用户决定,代码为运行.

这是 itertools.product() 的任务!查看文档:https://docs.python.org/2/library/itertools.html#itertools.product

>>> ["%s%s" % (c1,c2) for (c1,c2) in itertools.product(char1, char2)]
['a1', 'a2', 'b1', 'b2', 'c1', 'c2']

是的,它扩展到可变数量的未知大小的列表。

如上所述,可以使用itertools.product()

并且由于您不知道列表的数量,您可以将列表列表作为参数传递:

import itertools

lists = [
    ['a','b','c'],
    ['1','2']
]

["".join(x) for x in itertools.product(*lists)]

结果:

['a1', 'a2', 'b1', 'b2', 'c1', 'c2']