python生成指定长度的列表_如何在python中创建固定大小列表?
(tl;博士:您问题的确切答案是numpy.empty_like或x = list(size=10000),但您可能不在乎,可以使用myList = [None]*10000逃脱。)
简单的方法
您可以将列表初始化为所有相同的元素。 使用非数字值在语义上是否有意义(如果以后使用它会产生错误,这是一件好事),或者使用0(不寻常?如果正在编写稀疏矩阵或' 默认值应为0,并且您不必担心错误)由您自己决定:
>>> [None for _ in range(10)]
[None, None, None, None, None, None, None, None, None, None]
(这里numpy.empty_like只是一个变量名,您可以使用x = list(size=10000)。)
您也可以这样:
>>> [None]*10
[None, None, None, None, None, None, None, None, None, None]
您可能不需要优化它。 您还可以在每次需要时追加到数组:
>>> x = []
>>> for i in range(10):
>>> x.append(i)
简单方法的性能比较
哪个最好?
>>> def initAndWrite_test():
... x = [None]*10000
... for i in range(10000):
... x[i] = i
...
>>> def initAndWrite2_test():
... x = [None for _ in range(10000)]
... for i in range(10000):
... x[i] = i
...
>>> def appendWrite_test():
... x = []
... for i in range(10000):
... x.append(i)
python2.7中的结果:
>>> import timeit
>>> for f in [initAndWrite_test, initAndWrite2_test, appendWrite_test]:
... print('{} takes {} usec/loop'.format(f.__name__, timeit.timeit(f, number=1000)*1000))
...
initAndWrite_test takes 714.596033096 usec/loop
initAndWrite2_test takes 981.526136398 usec/loop
appendWrite_test takes 908.597946167 usec/loop
python 3.2中的结果:
initAndWrite_test takes 641.3581371307373 usec/loop
initAndWrite2_test takes 1033.6499214172363 usec/loop
appendWrite_test takes 895.9040641784668 usec/loop
如我们所见,最好在python2和python3中都使用成语numpy.empty_like。 但是,如果执行的工作比分配还要复杂(例如,要生成或处理列表中的每个元素都比较复杂),那么开销将占成本的一小部分。 也就是说,如果您对列表中的元素做任何合理的事情,这种优化还为时过早。
未初始化的内存
但是这些都是低效的,因为它们要经过内存,在过程中写一些东西。 在C语言中这是不同的:未初始化的数组中充满了随机垃圾存储器(注:已从系统中重新分配,并且当您分配内存或在关闭程序时无法锁死和/或无法删除内存时可能存在安全风险 )。 这是设计用于提高速度的选择:C语言的开发人员认为最好不要自动初始化内存,这是正确的选择。
这不是渐近加速(因为它是numpy.empty_like),但是例如,您不需要先初始化整个内存块,然后再覆盖实际关心的内容。 如果可能,这等效于(伪代码)x = list(size=10000)。
如果要在python中使用类似的东西,可以使用numpy.empty_like数字矩阵/ N维数组操作包。 具体来说是numpy.empty_like或numpy.empty_like
那是您问题的真正答案。
python生成指定长度的列表_如何在python中创建固定大小列表?相关推荐
- java 合并两个列表_如何在Java中合并两个列表?
java 合并两个列表 Merging two lists in Java is often a useful operation. These lists can be ArrayLists or ...
- python创建长度为20的列表_如何在python中创建固定大小列表?
小编典典 (tl;博士:您问题的确切答案是numpy.empty或numpy.empty_like,但您可能不在乎,可以摆脱使用的困扰myList = [None]*10000.) 简单的方法 您可以 ...
- 如何在mysql中创建过程_如何在MySQL 中创建存储过程?
问题阐述 自MySQL 5.0 开始,MySQL 就支持存储过程.存储过程是一些被用户定义的SQL 语句集合.一个存储程序是可以被存储在服务器中的一套SQL 语句.存储过程可以被程序.触发器或另一个存 ...
- wordpress 数据库_如何在WordPress中创建视频库(逐步)
wordpress 数据库 Recently, a user asked us how to create a video gallery in WordPress. WordPress makes ...
- wordpress创建_如何在WordPress中创建问卷(简易方式)
wordpress创建 Do you want to create a questionnaire in WordPress to survey your visitors or collect da ...
- wordpress创建_如何在WordPress中创建子页面
wordpress创建 Do you want to create a child page on your site? Pages in WordPress can be standalone or ...
- wordpress模板_如何在WordPress中创建类别模板
wordpress模板 Have you visited a site where each category has different layout? In WordPress theme dev ...
- 如何在mysql中创建连接_如何在MySQL中创建新用户并开启远程连接访问?
如何在MySQL中创建新用户并开启远程连接访问? 发布时间:2020-05-21 14:55:19 来源:亿速云 阅读:176 作者:鸽子 下面由mysql教程给大家介绍MySQL创建新用户并开启远程 ...
- python定义一个列表_如何在Python中创建用户定义的列表?
你需要将怪物的数量发送给使用它的函数:def welcome(): number = monsters() print('Alright, ' + str(number) + ' monsters.' ...
最新文章
- python什么时候用框架_Python 中三大框架各自的应用场景
- siblings获取不平级_siblings()是获取平级元素,哪不是平级应该怎么获取元素呢?...
- android TranslateAnimation动画执行时的坐标获取。
- Mozilla新特性只支持https网站
- 企业网络推广——企业网络推广表示合理采集可助力网站品质提升
- 08 comet反向ajax
- z-index的学习整理转述
- 百度seo排名规则_SEO:百度搜索引擎排名规则都有哪些?
- signature=111f58ddc27ff0fab1746b92b27414e9,DDCTF2019官方Write Up——MISC篇
- html5 浏览器适配问题
- enum ordinal_Java Enum ordinal()方法与示例
- linux hci0 进程,教程 - 在 Azure Stack HCI 上的 AKS 中部署 Linux 应用程序 - AKS-HCI | Microsoft Docs...
- 汽车维修企业管理【6】
- OSChina 周四乱弹 ——跌倒,就在那附近找找好吃的。
- 在MySQL中实现交叉表查询1(静态交叉表)
- android 插屏广告代码,插屏实现说明
- chrome 浏览器开发者工具之网络面板
- 分享10个实用的软件和网站,我每天都在用
- STM32WL LoRaWAN节点设备学习记录(一)
- 程序员的瓶颈是如何产生的(上)
热门文章
- aws lambda使用_如何使用AWS Lambda为发布/订阅消息选择最佳事件源
- ios apple语音性别_如何使用Apple的CoreML和Vision API构建图像识别iOS应用
- 一步步教你为网站开发Android客户端---HttpWatch抓包,HttpClient模拟POST请求,Jsoup解析HTML代码,动态更新ListView...
- python数码时钟代码_python实现简易数码时钟
- 如何用python“优雅的”调用有道翻译?
- 进程的创建-fork(python版)
- 干货 | 有赞数据仓库实践之路
- 使用urllib2库实现有道翻译
- ASP.Net导出EXCEL表(小结)
- 【C++】C++读取文本中的特定一列