python列表有固定大小吗_如何在python中创建固定大小的列表?

(tl;dr:对您的问题的确切答案是numpy.empty或numpy.empty_like,但是您可能不在乎,可以使用myList = [None]*10000。)

简单方法

您可以将列表初始化为所有相同的元素。使用一个非数字值(如果以后使用它会给出一个错误,这是一件好事)或类似于0(不寻常)的东西是否在语义上有意义?如果您正在编写稀疏矩阵或“默认”值应为0且不担心错误,则可能有用)取决于您:>>> [None for _ in range(10)]

[None, None, None, None, None, None, None, None, None, None]

(这里_只是一个变量名,您可以使用i。)

您也可以这样做:>>> [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中使用习惯用法[None]*10000可能更好。然而,如果一个人正在做比赋值更复杂的事情(比如生成或处理列表中的每个元素都很复杂的事情),那么开销将成为毫无意义的成本的一小部分。也就是说,如果您对列表中的元素做了任何合理的处理,那么这样的优化还为时过早。

未初始化内存

这些都是无效的,因为它们通过内存,在过程中写东西。在C语言中,这是不同的:未初始化的数组充满了随机垃圾内存(附带说明:它已经从系统中重新分配,当您分配或未能锁定和/或在关闭程序时未能删除内存时,它可以是security risk)。这是一个为加速而设计的选择:C语言的制作者认为最好不要自动初始化内存,这是正确的选择。

这不是渐进加速(因为它是O(N)),但例如,在覆盖实际关心的内容之前,您不需要首先初始化整个内存块。如果可能的话,这相当于(伪代码)x = list(size=10000)。

如果您想在python中使用类似的东西,可以使用numpy数值矩阵/N维数组操作包。具体来说,^{}或^{}

这才是你问题的真正答案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/508145.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 魔术设置_mysql主从复制实践

1.master服务器上安装mysql,正常安装mysql参考2.slave服务器上安装mysql,正常安装mysql参考3.配置3.1master服务器配置cnf文件vim /etc/my.cnf加入配置[mysqld]log-bin master-binlog-bin-index master-bin.indexserver-id 1重启mysql服务service mys…

mysql将时间戳转化为天数_mysql 将时间戳直接转换成日期时间

我的应用:select *,FROM_UNIXTIME(create_at, %Y-%m-%d) as date from stock转载原文:FROM_UNIXTIME( ):转为时间戳类型时间UNIX_TIMESTAMP( ) :返回长类型时间from_unixtime()是MySQL里的时间函数select uid,userid,username,email,FROM_UNIXTIME(addti…

centeros7安装mysql5.6_CentOS7安装MySQL5.6

1.安装包准备(MySQL官网下载)(1)查看MySQL是否安装,如果存在就先卸载[roothadoop101 桌面]# rpm -qa|grepMySQLmysql-libs-5.1.73-7.el6.x86_64[roothadoop101 桌面]# rpm-e --nodeps mysql-libs-5.1.73-7.el6.x86_64(2)查看mariadb是否安装,如果存在就先…

python中int和eval的区别_python中eval与int的区别浅析

python中eval和int的区别是什么?下面给大家介绍一下:1.eval()函数eval()能够以Python表达式的方式解析并执行字符串,并将返回结果输出。eval()函数将去掉字符串的两个引号,将其解释为一个变量。作用:a. 处理数字单引号&#xff0c…

scrapy爬取天气存MySQL_Scrapy实战篇(五)之爬取历史天气数据

本篇文章我们以抓取历史天气数据为例,简单说明数据抓取的两种方式:1、一般简单或者较小量的数据需求,我们以requests(selenum)beautiful的方式抓取数据2、当我们需要的数据量较多时,建议采用scrapy框架进行数据采集,sc…

mysql 第二天数据_MySQL入门第二天------数据库操作

一、基本命令1、启动服务器cmdnet start [服务器名称]net start mysql572、停止服务器cmdnet stop [服务器名称]net stop mysql573、链接数据库mysql -u 用户名 -p 登录密码mysql -u root -p4、退出登录quitexit\q5、查看版本(连接后执行)select version();6、查看当前时间(连接…

mysql 回退查询_MySQL数据库:第十章:分页查询

引入:实际的开发时,一页往往显示不全所有数据,则用到了分页查询语法:select 查询列表 ⑥from 表 ①【join 表 ②on 连接条件 ③where 筛选 ④group by 分组 ⑤having 分组后筛选 ⑦order by 排序列表 ⑧】limit 【起始条目数,】查…

mysql里面取列里面值_在MySQL中获取特定的列值(名称)

要获取特定的列值,请使用LIKE子句。让我们首先创建一个表-mysql> create table DemoTable1809(Name varchar(20));使用插入命令在表中插入一些记录-mysql> insert into DemoTable1809 values(John);mysql> insert into DemoTable1809 values(David);mysql&…

python中lowerright_python字符串,从入门到高阶看这篇就够了

大家都知道,学习新的一门编程语言都是从字符串,到类再到方法以及框架等一个演变的过程,入门到精通,今天我们就来系统的学习了解一下python的字符串,一篇足于。简单的来讲,是什么是python字符串,…

如何打开java_怎样运行java

怎样运行java? 第一步:下载并安装JDK 6.0,安装路劲为: C:\java\jdk1.6 . 第二步:对“我的电脑”按右键,选“属性”,在“系统属性”窗口中选“高级”标签,再按“环境变量”按钮,弹出一个“环境变量”的窗口,在系统变量中新建一个变量,变量名为“JAVA_HOME“,变量值为…

java 字符串匹配_多模字符串匹配算法原理及Java实现代码

多模字符串匹配算法在这里指的是在一个字符串中寻找多个模式字符字串的问题。一般来说,给出一个长字符串和很多短模式字符串,如何最快最省的求出哪些模式字符串出现在长字符串中是我们所要思考的。该算法广泛应用于关键字过滤、入侵检测、病毒检测、分词…

java 超构造函数_java中的超级构造函数

请解释public class Contact {private String contactId;private String firstName;private String lastName;private String email;private String phoneNumber;public Contact(String contactId,String firstName,String lastName,String email,String phoneNumber) {super()…

java lambda max_在Java中使用Lambda表达式查找Max

小编典典该方法Comparator.comparing(…)旨在创建一个Comparator使用基于对象属性的订单进行比较的。当使用lambda表达式i-> i(这是(int i) -> { return i;}此处的简短写法)作为属性提供程序函数时,结果Comparator将比较值本身。这工作时,要比较的…

java 入门程序_自学 Java 怎么入门?

自学Java的确不易,但是有一份好的学习路线图,跟着路线图来一步一步踏踏实实的学下来,相信你也一定可以成为大牛。分享给大家一套学习线路图,内容还是很全面的,每个阶段需要学习的内容罗列的也很清楚,这样学…

java 定义xml_java中web.xml定义详解

1 定义头和根元素部署描述符文件就像所有XML文件一样,必须以一个XML头开始。这个头声明可以使用的XML版本并给出文件的字符编码。DOCYTPE声明必须立即出现在此头之后。这个声明告诉服务器适用的servlet规范的版本(如2.2或2.3)并指定管理此文件其余部分内容的语法的D…

java http 异步请求框架_GitHub - huangdali/MyHttpUtils: 一个非常好用的异步网络请求框架...

轻量级网络请求框架MyHttputils 一、前言本版代码大换血,使用了策略模式和构造模式来组织代码,增加了更加人性化的请求构造,代码质量提高、效率显著提升。(但是使用风格基本没变哦)2.0.2版本的基本的用法在《android网络请求框架》一个轻量级…

java set循环取值_java循环遍历类属性 get 和set值方法

//遍历sqspb类 成员为String类型 属性为空的全部替换为“/”Field[] fields sqspb.getClass().getDeclaredFields();for (int i 0; i < fields.length; i) {// 获取属性的名字String name fields[i].getName();// 将属性的首字符大写&#xff0c;方便构造get&#xff0c;…

maven 对于java的要求_如何在Maven中表达对Java EE功能的依赖以过渡到Java 9?

该模块系统讲的无名模块作为在从类路径加载应用的情况下构建模块图的方式。此外&#xff0c;从文档本身来看&#xff1a;当编译器在未命名模块中编译代码&#xff0c;或者调用Java启动程序并将应用程序的主类从类路径加载到应用程序类加载器的未命名模块中时&#xff0c;则将使…

java 应用分模块_在Java 11中创建一个简单的模块化应用教程

模块化编程使人们能够将代码组织成独立的&#xff0c;有凝聚力的模块&#xff0c;这些模块可以组合在一起以实现所需的功能。本文摘自Nick Samoylov和Mohamed Sanaulla撰写的一本名为Java 11 Cookbook - Second Edition的书。在本书中&#xff0c;您将学习如何使用Java 11中的类…

java选课系统_java实现学生选课系统

本文为大家分享了java实现学生选课系统的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下案例要求&#xff1a;学生(学号&#xff0c;姓名&#xff0c;专业&#xff0c;所选课程{<3})老师(工号&#xff0c;姓名&#xff0c;所教课程{<3})课程(课程号&#xff0c…