首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >更快地获取两个整数列表并创建类型列表对

更快地获取两个整数列表并创建类型列表对
EN

Stack Overflow用户
提问于 2018-11-30 23:01:40
回答 1查看 577关注 0票数 2

有关如何将两个列表组合成对的问题已经被问到了,但是他们都将这对列表创建为tuples

假设我有两个列表,list1list2

代码语言:javascript
运行
复制
list1 = [0,2,4,6,8]
list2 = [1,3,5,7,9]

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

代码语言:javascript
运行
复制
pairs = list(zip(list1, list2))
print(pairs)

输出:

代码语言:javascript
运行
复制
>>> [(0, 1), (2, 3), (4, 5), (6, 7), (8, 9)] 

若要将列表类型从元组更改为列表,请执行以下操作:

代码语言:javascript
运行
复制
listPairs = [list(pair) for pair in pairs]
print(listPairs)

输出:

代码语言:javascript
运行
复制
[[0, 1], [2, 3], [4, 5], [6, 7], [8, 9]] 

将两者结合起来:

代码语言:javascript
运行
复制
combined = [list(i) for i in list(zip(list1, list2))]

现在我的问题是:有没有一种更快的节奏曲方法来做到这一点?列表理解已经是节奏曲,在相对较小的列表上比较快,但是有更快的方法吗?还是说这是最快的方法?

我担心的是,当我在两个列表上使用这种方式时,每个列表的大小都是300k+。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-30 23:05:08

通常,一个列表理解是尽可能有效的,只要你需要所有的结果在一个时间点。在边缘情况下,具有内置函数的map将比列表理解更有效。有关更多详细信息,请参阅List comprehension vs map。所以你可以使用:

代码语言:javascript
运行
复制
pairs = list(map(list, zip(list1, list2)))

这样做的效率应略高于:

代码语言:javascript
运行
复制
pairs = [list(x) for x in zip(list1, list2)]

如果您需要的性能超出此边际改进,我建议您使用一个专家库,如NumPy:请参阅What are the advantages of NumPy over regular Python lists?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53566071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档