Python中真的是能使用元组的地方尽量不使用列表吗?

本文探讨了Python中元组与列表的差异,包括元组的不可变性、内存管理和效率。虽然元组在某些操作上速度稍快,但优势并不显著。在Python 3.x中,元组的效率优势并不如Python 2.x明显。文章建议根据数据是否需要变更为选择使用元组或列表,并强调元组在不可变场景和作为字典键的优势。
摘要由CSDN通过智能技术生成

中国大学MOOC“Python程序设计基础”免费学习地址

2020年秋季学期Python教材推荐与选用参考

推荐图书:

《Python程序设计(第3版)》,(ISBN:978-7-302-55083-9),董付国,清华大学出版社,2020年6月第1次印刷,2021年1月第6次印刷,山东省一流本科课程“Python应用开发”配套教材,清华大学出版社2020年度畅销图书(本书第二版为2019、2020年度畅销图书)

京东购买链接:https://item.jd.com/12668739.html

天猫、当当均有销售,可以选择自己常用平台搜索“董付国 第3版”找到本书。

配套资源:教学大纲、电子教案、微课视频、PPT课件、例题源码、习题答案、考试系统。

适用专业:计算机、网络工程、软件工程以及相关专业。

适用学时:>=64

页数:381

定价:59.8

微课视频:77个

教学大纲:《Python程序设计(第3版)》配套教学大纲

习题答案:《Python程序设计(第3版)》课后习题答案

目录(二级)

第1章  基础知识/1

    1.1  如何选择Python版本

    1.2  Python安装与简单使用

    1.3  使用pip管理扩展库

    1.4  Python基础知识

    1.5  Python代码编写规范

    1.6  Python文件名

    1.7  Python程序的__name__属性

    1.8  编写自己的包

    1.9  Python快速入门

    1.10  The Zen of Python

第2章  Python数据结构/31

    2.1  列表

    2.2  元组

    2.3  字典

    2.4  集合

    2.5  其他数据结构

第3章  选择与循环/67

    3.1  运算符与条件表达式

    3.2  选择结构

    3.3  循环结构

    3.4  break和continue语句

    3.5  综合运用

第4章  字符串与正则表达式/83

    4.1  字符串 

    4.2  正则表达式

第5章  函数设计与使用/115

    5.1  函数定义

    5.2  形参与实参

    5.3  参数类型

    5.4  return语句

    5.5  变量作用域

    5.6  lambda表达式

    5.7  案例精选

    5.8  高级话题

第6章  面向对象程序设计/138

    6.1  类的定义与使用

    6.2  类的方法

    6.3  属性

    6.4  特殊方法与运算符重载

    6.5  继承机制

第7章  文件操作/158

    7.1  文件基本操作

    7.2  文本文件基本操作

    7.3  二进制文件操作

    7.4  文件级操作

    7.5  目录操作

    7.6  案例精选

第8章  异常处理结构与程序调试/181

    8.1  基本概念

    8.2  Python异常类与自定义异常

    8.3  Python中的异常处理结构

    8.4  断言与上下文管理

    8.5  使用IDLE调试代码

    8.6  使用pdb模块调试程序

第9章  GUI编程/199

    9.1  tkinter基础

    9.2  tkinter精彩编程

第10章  网络程序设计/230

    10.1  计算机网络基础知识

    10.2  UDP和TCP编程

    10.3  Socket编程案例精选

    10.4  网页内容读取与网页爬虫

第11章  安卓平台的Python编程/248

    11.1  QPython简介

    11.2  安卓应用开发案例

第12章  Windows系统编程/254

    12.1  注册表编程

    12.2  创建可执行文件

    12.3  调用外部程序

    12.4  创建窗口

    12.5  判断操作系统版本

    12.6  系统运维

第13章  多线程与多进程编程/273

    13.1  threading模块

    13.2  Thread对象

    13.3  线程同步技术

    13.4  多进程编程

第14章  数据库编程/294

    14.1  SQLite应用

    14.2  访问其他类型数据库

第15章  多媒体编程/306

    15.1  图形编程

    15.2  图像编程

    15.3  音乐编程

    15.4  语音识别

    15.5  视频处理和摄像头接口调用

第16章  逆向工程与软件分析/328

    16.1  主流项目与插件简介

    16.2  IDAPython与Immunity Debugger编程

    16.3  Windows平台软件调试原理

    16.4  案例精选

第17章  科学计算与可视化/349

    17.1  numpy简单应用

    17.2  scipy简单应用

    17.3  matplotlib简单应用

    17.4  数据分析模块pandas

    17.5  统计分析模块statistics

第18章  密码学编程/377

    18.1  安全哈希算法

    18.2  对称密钥密码算法DES和AES

    18.3  非对称密钥密码算法RSA与数字签名算法DSA

=======================

在Python语言中,元组是不可变的(或者说可哈希),列表是可变的(或者说不可哈希),很多资料上有“元组的效率比列表高,能使用元组的地方不要使用列表”这样的说法,这个说法对于Python 2.x低版本是成立的,那么是否适用于Python 3.x呢?很多人延续了Python 2.x对元组和列表的描述和认识,是否还准确呢?

下面的代码运行版本为Python 3.8.9,运行环境为IDLE。

1)元组占用的内存空间略小

元组创建之后不允许改变元素的数量和引用,而列表在增加元素和删除元素时,会动态扩展和缩小所占内存空间,这确实会带来额外的开销。

2)元组对象的引用次数减少为0时,对应的内存空间不会立即释放,而是会进行缓存,元组被删除之后对应的内存空间会被保留一段时间,再次创建同样大小的元组时会尽量使用已缓存的内存空间,这可以在一定程序上避免反复申请和释放内存带来的时间开销。

3)元组是不可变的,可以作为集合的元素和字典的“键”,不支持列表对象所具有的append()、clear()、extend()、insert()、pop()、remove()、reverse()、sort()等对自身进行修改的方法,也不支持关键字del删除元组中的元素。任何试图修改元素个数或元素引用的操作都会引发异常,作为参数传递给第三方开发的函数时元组更加安全,不会在被调函数中有意或无意地修改导致主调函数中的实参被修改。

4)速度问题。很多资料上都会说元组比列表快,因为元组的内部实现更简单一些,那么实际情况是怎样的呢?

在进行解包操作时,元组比列表略快,但是有限到几乎可以忽略。

再来看一下使用for循环遍历元组和列表时的速度,元组略快,但也没有明显的优势。

最后附上32位Python 2.7.11环境中元组与列表性能比较的结果,元组除占用内存空间略小之外,其他操作也并没有表现出很大的优势。

温馨提示:

关注微信公众号“Python小屋”,在公众号后台发送消息“大事记”可以查看董付国老师与Python有关的重要事件;发送消息“教材”可以查看董付国老师出版的Python系列教材(累计印刷超过120次)的适用专业详情;发送消息“历史文章”可以查看董付国老师推送的超过1000篇原创技术文章;发送消息“会议”或“培训”可以查看近期董付国老师的培训安排;发送消息“微课”可以查看董付国老师免费分享的超过500节Python微课视频;发送消息“课件”可以查看董付国老师免费分享的Python教学资源;发送消息“小屋刷题”可以下载“Python小屋刷题神器”,免费练习1318道客观题和259道编程题,题库持续更新;发送消息“编程比赛”了解Python小屋编程大赛详情。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值