按字符列表的列表生成单词列表



我想按字符列表生成一个单词列表,比如:

A=[['a','b','c'],['d'],['e','f']]

其中a[0]将所有可能的字符存储在第一位,a[1]将所有可能字符存储在第二位,依此类推。列表"A"生成的所有可能单词将为:

ade
adf
bde
bdf
cde
cdf

我通过以下方式生成此列表:

for i in a[0]:
    for j in a[1]:
        for k in a[2]:
            print i+j+k

此代码适用于固定长度的list(i.e. len(A))。我想写一个泛化代码,可以生成任何大小的单词列表。

您可以使用itertools.product:执行此操作

>>> from itertools import product
>>> characters = [['a','b','c'],['d'],['e','f']]
>>> [''.join(item) for item in product(*characters)]
['ade', 'adf', 'bde', 'bdf', 'cde', 'cdf']

这将在不考虑子列表长度的情况下工作,因为product方法计算子列表元素的笛卡尔乘积。此外,由于我们使用python *characters魔术传递子列表,因此我们可以传递任意数量的子列表。

相关内容

  • 没有找到相关文章

最新更新