python - 从列表中创建所有可能的组合

标签 python algorithm list

我有一个 list

[
 [[[u'ANC'], [u'DEN', u'SFO'], [u'CHI', u'CLE', u'DEN', u'EWR', u'HOU', u'WAS'], [u'GSP']]], 
 [[[u'ANC'], [u'PDX', u'SEA'], [u'CHI', u'CLE', u'DEN', u'EWR', u'HOU', u'LAX', u'SFO', u'WAS'], [u'GSP']]]
]

列表已根据此文本创建

ANC-DEN/SFO-CHI/CLE/DEN/EWR/HOU/WAS-GSP
ANC-PDX/SEA-CHI/CLE/DEN/EWR/HOU/LAX/SFO/WAS-GSP

我需要获取可以使用该列表完成的所有变体:

ANC-SFO-EWR-GSP
ANC-SFO-CHI-GSP
ANC-SFO-CLE-GSP
ANC-DEN-EWR-GSP
ANC-PDX-EWR-GSP
ANC-SFO-HOU-GSP
ANC-SEA-LAX-GSP
ANC-SEA-EWR-GSP
ANC-SFO-ORD-GSP
ANC-PDX-LAX-GSP
ANC-PDX-CHI-GSP
ANC-DEN-CHI-GSP
ANC-SEA-SFO-GSP
ANC-PDX-SFO-GSP
ANC-SEA-CHI-GSP
ANC-SFO-DEN-GSP
ANC-PDX-HOU-GSP
ANC-SEA-HOU-GSP
ANC-DEN-HOU-GSP
ANC-DEN-CLE-GSP
ANC-PDX-CLE-GSP
ANC-SEA-CLE-GSP
ANC-DEN-ORD-GSP
ANC-PDX-ORD-GSP
ANC-PDX-DEN-GSP
ANC-SEA-DEN-GSP
ANC-SEA-ORD-GSP

我该怎么做?

最佳答案

使用 itertools.product 并将列表扩展为参数:

>>> import itertools
>>> test = [['a'], ['b', 'c'], ['d']]
>>> list(itertools.product(*test))
    [('a', 'b', 'd'), ('a', 'c', 'd')]

在你的情况下,它会是这样的:

for row in data:
    for item in itertools.product(*row[0]):
        print '-'.join(item)

关于python - 从列表中创建所有可能的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14993013/

相关文章:

python - 从 Python 将 PDF 作为附件上传到 Salesforce 对象

python - 为什么 sys.excepthook 在包装时表现不同?

algorithm - 理解 The Joy of Clojure 中介绍的惰性快速排序的输入

c++ - 二进制搜索避免不可读的条目(列表中的漏洞)

Python:数学表达式解析

algorithm - 去除建筑物内不良的 GPS 信号

python - 列表中连续零的计数

r - 通过梯形规则在 R 中查找曲线下面积 (AUC)

python - 元组第一个值的唯一元组列表

python - 用python生成器实现图像分割