将两个列表合并到具有自定义条件的元组列表中

时间:2013-05-27 13:42:53

标签: python list python-2.7 itertools cartesian-product

我是python的新手,对python中的快捷方式了解不多。 我有两个清单:

firstList = ['a','b','c']  and
secondList = [1,2,3,4]

我必须通过合并这些列表来创建一个元组列表,输出应该像这样

[('a',1),('a',2),('a',3),('a',4),('b',1), ('b',2) .....]

一种简单的方法是通过

outputList = [] 
for i in firstList:
    for j in secondList:
        outputList.append((i,j))

这两个for循环让我很头疼。有没有更好的方法(较小的复杂性)或python中的任何内置函数来做到这一点?您的帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

>>> firstList = ['a','b','c']
>>> secondList = [1,2,3,4]
>>> from itertools import product
>>> list(product(firstList, secondList))
[('a', 1), ('a', 2), ('a', 3), ('a', 4), ('b', 1), ('b', 2), ('b', 3), ('b', 4), ('c', 1), ('c', 2), ('c', 3), ('c', 4)]

这里还有一个使用列表解析的更好的for循环版本:

>>> [(i, j) for i in firstList for j in secondList]
[('a', 1), ('a', 2), ('a', 3), ('a', 4), ('b', 1), ('b', 2), ('b', 3), ('b', 4), ('c', 1), ('c', 2), ('c', 3), ('c', 4)]