如何在Python中找到一个列表的所有可能组合?

15

我在Python中有以下结构:

letters = [['a', 'b', 'c'], ['p', 'q', 'r', 's'], ['j', 'k', 'l']]
我想找出所有当前字母顺序的可能组合。对于上面的例子,这将是:
apj
apk
apl
aqj
aqk
aql
...
csk
csl

这似乎应该是一件非常简单的事情,但我无法弄清楚该怎么做。


我们可以假设每个列表中的值已经排序了吗? - wcm
你使用的是哪个版本的Python? - Mark Byers
@wcm:不,各个列表中的值没有排序。 - Peter Horne
似乎是 https://dev59.com/a3A75IYBdhLWcg3w_umD 的重复。 - Tamás
@Tamas:这是指向这个问题的链接。 - jamesaharvey
糟糕,链接错误了,我是指这个链接:https://dev59.com/HHRB5IYBdhLWcg3wuZfo - Tamás
1个回答

14

在Python 2.6或更新版本中,您可以使用itertools.product


>>> import itertools
>>> map(''.join, itertools.product(*letters))
apj
apk
apl
aqj
aqk
aql
...etc...
csk
csl

在旧版本的Python中,您可以从itertools文档中复制product的纯Python实现。 - Mike Graham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接