接受两个整数列表并创建成对类型列表的更快方法

时间:2018-11-30 23:01:40

标签: python python-3.x list performance loops

已经有人问过如何对两个列表进行配对,但是它们都将对列表创建为tuples

假设我有两个列表,list1list2

list1 = [0,2,4,6,8]
list2 = [1,3,5,7,9]

将两者合并为一个元组列表:

pairs = list(zip(list1, list2))
print(pairs)

输出:

>>> [(0, 1), (2, 3), (4, 5), (6, 7), (8, 9)] 

要将列表类型从元组更改为列表,

listPairs = [list(pair) for pair in pairs]
print(listPairs)

输出:

[[0, 1], [2, 3], [4, 5], [6, 7], [8, 9]] 

两者结合:

combined = [list(i) for i in list(zip(list1, list2))]

现在我的问题是:有没有更快的pythonic方法?列表理解已经是pythonic了,并且在相对较大的列表上也相对较快,但是有没有更快的方法呢?还是这是最快的方法?

我担心的是,当我在两个列表中使用这种方法时,每个列表的大小都超过300k。

1 个答案:

答案 0 :(得分:3)

通常,只要您需要在一个时间点上获得所有结果,列表理解就将尽可能地高效。在某些极端情况下,具有内置功能的map比列表理解更有效。有关更多详细信息,请参见List comprehension vs map。因此,您可以使用:

pairs = list(map(list, zip(list1, list2)))

这应该比以下方法效率更高

pairs = [list(x) for x in zip(list1, list2)]

如果您需要超越这种微小改进的性能,建议您使用NumPy之类的专业库:请参见What are the advantages of NumPy over regular Python lists?