有关如何将两个列表组合成对的问题已经被问到了,但是他们都将这对列表创建为tuples。
假设我有两个列表,list1
和list2
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))]
现在我的问题是:有没有一种更快的节奏曲方法来做到这一点?列表理解已经是节奏曲,在相对较小的列表上比较快,但是有更快的方法吗?还是说这是最快的方法?
我担心的是,当我在两个列表上使用这种方式时,每个列表的大小都是300k+。
发布于 2018-11-30 23:05:08
通常,一个列表理解是尽可能有效的,只要你需要所有的结果在一个时间点。在边缘情况下,具有内置函数的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?
https://stackoverflow.com/questions/53566071
复制相似问题