python如何创建一个列表_在python中创建列表的最佳和/或最快方法
在python中,据我所知,至少有3到4种方法来创建和初始化给定大小的列表:
简单循环append:
my_list =[]fori inrange(50):my_list.append(0)
简单循环+=:
my_list =[]fori inrange(50):my_list +=[0]
列表理解:
my_list =[0fori inrange(50)]
列表和整数乘法:
my_list =[0]*50
在这些例子中,我认为只有列表只有50个元素会有任何性能差异,但如果我需要一个包含一百万个元素的列表呢?使用xrange会有什么改进吗?哪个是在python中创建和初始化列表的首选/最快方法?
解决方案
让我们运行一些时间测试*timeit.timeit:
>>>fromtimeit importtimeit
>>>>>># Test 1>>>test ="""
... my_list = []
... for i in xrange(50):
... my_list.append(0)
... """>>>timeit(test)22.384258893239178>>>>>># Test 2>>>test ="""
... my_list = []
... for i in xrange(50):
... my_list += [0]
... """>>>timeit(test)34.494779364416445>>>>>># Test 3>>>test ="my_list = [0 for i in xrange(50)]">>>timeit(test)9.490926919482774>>>>>># Test 4>>>test ="my_list = [0] * 50">>>timeit(test)1.5340533503559755>>>
如您所见,最后一种方法是迄今为止最快的方法。
但是,它应该只用一成不变的物品(如整数)使用。这是因为它将创建一个列表,其中包含对同一项的引用。
以下是演示:
>>>lst =[[]]*3>>>lst
[[],[],[]]>>># The ids of the items in `lst` are the same>>>id(lst[0])28734408>>>id(lst[1])28734408>>>id(lst[2])28734408>>>
这种行为通常是不受欢迎的,并且可能导致代码中的错误。
如果你有可变项(例如列表),那么你应该使用仍然非常快的列表理解:
>>>lst =[[]for_ inxrange(3)]>>>lst
[[],[],[]]>>># The ids of the items in `lst` are different>>>id(lst[0])28796688>>>id(lst[1])28796648>>>id(lst[2])28736168>>>
*注意:在所有测试中,我替换range为xrange。由于后者返回迭代器,因此它应该总是比前者快。
本文首发于Python黑洞网,博客园同步更新
python如何创建一个列表_在python中创建列表的最佳和/或最快方法相关推荐
- python如何创建问答窗口_在tkin中创建一个新的单独窗口
我想创建一个新的单独窗口,比如在记事本中打开一个新页面.在 我写的是:import tinter from tkinter import Tk, Frame, Menu class Example(F ...
- python实现excel数据透视_在pywin32中创建Excel数据透视缓存
我试图用python创建一个pivot表,但无法让它在我自己的数据上工作.我已经确定了一个问题单元是示例文件中的最后一个单元.在excel中直接创建透视表时,同样的数据也可以正常工作.在 代码如下:i ...
- java 如何创建一个数组_如何用Java创建一个数组?
在Java中,可以使用new关键字像对象一样创建数组.使用new关键字在Java中创建数组的语法-type[] reference = new type[10]; 哪里,type是数组元素的数据类型. ...
- 在linux桌面上创建一个文本,如何在Ubuntu中创建文档
有几种方法可以在Ubuntu中使用GUI和命令行创建文档.所有这些方法都非常简单易用.您可能早些时候已在Ubuntu中将这些方法用于其他目的.但是,在本文中,我们将向您展示在Ubuntu中创建文档的8 ...
- vs2019中如何创建qt项目_在VS2015中创建Qt项目【VS+Qt项目开发系列】(二)
在VS2015中创建Qt项目[VS+Qt项目开发系列](二) 发布时间:2018-04-20 22:44, 浏览次数:1269 , 标签: VS Qt 在上一篇[VS+Qt项目开发](一)在VS201 ...
- unity中创建游戏场景_在Unity中创建Beat Em Up游戏
unity中创建游戏场景 Learn how to use Unity to create a 3D Beat Em Up game in this full tutorial from Awesom ...
- python自定义一个函数求序列中的偶数_使用range函数创建一个从2到10的偶数列表 alist...
[多选题]在Python中添加注释可以使用哪些符号? [简答题]给定一个包含若干个整数的列表alist,要求返回输出列表blist,blist中的元素为 与alist对应位置上的元素之外其余各元素的乘 ...
- python词云改颜色_使用Python创建一个与图像颜色匹配的词云
原标题:使用Python创建一个与图像颜色匹配的词云 来自:https://www.linuxmi.com/ 我用Python造了一个词云.不过这次创建的是与图像颜色匹配的词云. 使用Python w ...
- python计算长方体体积编程_计算体积 编程创建一个Box类(长方体) 联合开发网 - pudn.com...
计算体积 所属分类:Windows编程 开发工具:Java 文件大小:4KB 下载次数:0 上传日期:2019-12-08 16:53:01 上 传 者:洛水天依- 说明: 编程创建一个Box类(长 ...
- 在阿里云容器服务上创建一个使用Redis的Python应用
使用容器服务可以方便快速的创建应用,下面的例子展示如何在容器服务上创建一个使用Redis的Python应用,只需要简单的几步. 第一步:准备代码 由于只是一个例子,所以我不可能使用太复杂的应用代码. ...
最新文章
- 极速理解设计模式系列:7.桥接模式(Bridge Pattern)
- SublimeLinter插件对PHP语法检测不起作用的解决办法
- uoj 118 赴京赶考
- Netlog 的数据库及 LAMP 架构
- .NET Core with 微服务 - Elastic APM
- Max Sum Plus Plus HDU - 1024
- canvas入门实战--邀请卡生成与下载
- 【CodeForces - 124C】Prime Permutation(数学,思维,小结论)
- mysql 5.7自定义安装路径_Mysql5.7.18版本(二进制包安装)自定义安装路径教程详解...
- Delta机器人鲁棒控制仿真
- There appears to be trouble with your network connection
- 网吧服务器哪个好稳定,网吧服务器不应盲目追高新:够用稳定就好
- 计算机教室报损登记簿,瑞安市第四中学
- WSTMart多商户商城跟随thinkphp框架升级到5.0.3
- 三国时期蜀国的巅峰实力
- [谨记]女人面前莫谈年龄
- Spring框架基础入门
- 二年级计算机课,小学二年级信息技术课程教案三篇
- LockSupport 的 park 和 unpark 以及线程中断对 park 的影响
- 【NLP练级之路 第三篇】Beyond Prompting: Making Pre-trained Language Models Better Zero-shot Learners by Clust
热门文章
- Android Studio 选项菜单和动画结合_Android 应用与iOS 应用之间的设计差异对比!
- 别再龟速炼丹了!聊聊怎样科学提升训练效率
- 为什么每次有人大声通电话时,我就很烦躁...
- 别再搞纯文本了!多模文档理解更被时代需要!
- ACL20 | 让笨重的BERT问答匹配模型变快!
- 论文浅尝 - ACL2021 | 探讨跨句事件联合抽取问题
- 论文浅尝 | 可建模语义分层的知识图谱补全方法
- 复杂语境下的实体关系抽取
- 搜狗地图2016-Android-社招笔试题(包含Java基础部分)
- interceptor 拦截器的使用 (session验证)