(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中创建固定大小列表?相关推荐

  1. java 合并两个列表_如何在Java中合并两个列表?

    java 合并两个列表 Merging two lists in Java is often a useful operation. These lists can be ArrayLists or ...

  2. python创建长度为20的列表_如何在python中创建固定大小列表?

    小编典典 (tl;博士:您问题的确切答案是numpy.empty或numpy.empty_like,但您可能不在乎,可以摆脱使用的困扰myList = [None]*10000.) 简单的方法 您可以 ...

  3. 如何在mysql中创建过程_如何在MySQL 中创建存储过程?

    问题阐述 自MySQL 5.0 开始,MySQL 就支持存储过程.存储过程是一些被用户定义的SQL 语句集合.一个存储程序是可以被存储在服务器中的一套SQL 语句.存储过程可以被程序.触发器或另一个存 ...

  4. wordpress 数据库_如何在WordPress中创建视频库(逐步)

    wordpress 数据库 Recently, a user asked us how to create a video gallery in WordPress. WordPress makes ...

  5. wordpress创建_如何在WordPress中创建问卷(简易方式)

    wordpress创建 Do you want to create a questionnaire in WordPress to survey your visitors or collect da ...

  6. wordpress创建_如何在WordPress中创建子页面

    wordpress创建 Do you want to create a child page on your site? Pages in WordPress can be standalone or ...

  7. wordpress模板_如何在WordPress中创建类别模板

    wordpress模板 Have you visited a site where each category has different layout? In WordPress theme dev ...

  8. 如何在mysql中创建连接_如何在MySQL中创建新用户并开启远程连接访问?

    如何在MySQL中创建新用户并开启远程连接访问? 发布时间:2020-05-21 14:55:19 来源:亿速云 阅读:176 作者:鸽子 下面由mysql教程给大家介绍MySQL创建新用户并开启远程 ...

  9. python定义一个列表_如何在Python中创建用户定义的列表?

    你需要将怪物的数量发送给使用它的函数:def welcome(): number = monsters() print('Alright, ' + str(number) + ' monsters.' ...

最新文章

  1. python什么时候用框架_Python 中三大框架各自的应用场景
  2. siblings获取不平级_siblings()是获取平级元素,哪不是平级应该怎么获取元素呢?...
  3. android TranslateAnimation动画执行时的坐标获取。
  4. Mozilla新特性只支持https网站
  5. 企业网络推广——企业网络推广表示合理采集可助力网站品质提升
  6. 08 comet反向ajax
  7. z-index的学习整理转述
  8. 百度seo排名规则_SEO:百度搜索引擎排名规则都有哪些?
  9. signature=111f58ddc27ff0fab1746b92b27414e9,DDCTF2019官方Write Up——MISC篇
  10. html5 浏览器适配问题
  11. enum ordinal_Java Enum ordinal()方法与示例
  12. linux hci0 进程,教程 - 在 Azure Stack HCI 上的 AKS 中部署 Linux 应用程序 - AKS-HCI | Microsoft Docs...
  13. 汽车维修企业管理【6】
  14. OSChina 周四乱弹 ——跌倒,就在那附近找找好吃的。
  15. 在MySQL中实现交叉表查询1(静态交叉表)
  16. android 插屏广告代码,插屏实现说明
  17. chrome 浏览器开发者工具之网络面板
  18. 分享10个实用的软件和网站,我每天都在用
  19. STM32WL LoRaWAN节点设备学习记录(一)
  20. 程序员的瓶颈是如何产生的(上)

热门文章

  1. aws lambda使用_如何使用AWS Lambda为发布/订阅消息选择最佳事件源
  2. ios apple语音性别_如何使用Apple的CoreML和Vision API构建图像识别iOS应用
  3. 一步步教你为网站开发Android客户端---HttpWatch抓包,HttpClient模拟POST请求,Jsoup解析HTML代码,动态更新ListView...
  4. python数码时钟代码_python实现简易数码时钟
  5. 如何用python“优雅的”调用有道翻译?
  6. 进程的创建-fork(python版)
  7. 干货 | 有赞数据仓库实践之路
  8. 使用urllib2库实现有道翻译
  9. ASP.Net导出EXCEL表(小结)
  10. 【C++】C++读取文本中的特定一列