热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[Python核心技术与实战学习]02列表和元组

列表和元组基础列表和元组,都是一个可以放置任意数据类型的有序集合。在绝大多数编程语言中,集合的数据类型必须一致。不过,对于Python的

 

列表和元组基础

列表和元组, 都是一·个可以放置任意数据类型的有序集合。
在绝大多数编程语言中, 集合的数据类型必须一致。 不过, 对于 Python 的列表和元组来说, 并无此要求:

list1 = ['Google', 'Runoob', 1997, 2000];
tup1 = ('Google', 'Runoob', 1997, 2000);

列表和元组区别:

  • 列表是动态的, 长度大小不固定, 可以随意地增加、 删减或者改变元素(mutable) 。列表的存储空间略大于元组, 性能略逊于元组。
  • 元组是静态的, 长度大小固定,无法增加删减或者改变(immutable) 。元组相对于列表更加轻量级, 性能稍优。

元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,

#!/usr/bin/python3tup1 = (12, 34.56);
tup2 = ('abc', 'xyz')# 以下修改元组元素操作是非法的。
# tup1[0] = 100# 创建一个新的元组
tup3 = tup1 + tup2;
print (tup3)

对已有的元组做任何"改变",只能重新开辟⼀块内存, 创建新的元组了。
下面的例子, 我们想增加一个元素 5 给元组, 实际上就是创建了一个新的元组, 然后把原来两个元组的值依次填充进去。
列表来说,只需简单地在列表末尾, 加⼊对应元素就可以了。

tup = (1, 2, 3, 4)
new_tup = tup + (5, ) # 创建新的元组 new_tup,并依次填充原元组的值
new _tup
(1, 2, 3, 4, 5)l = [1, 2, 3, 4]
l.append(5) # 添加元素 5 到原列表的末尾
l
[1, 2, 3, 4, 5]

列表和元组相同处:

  • 列表和元组都支持负数索引, -1 表示最后一个元素, -2 表示倒数第二个元素, 以此类推
  • 列表和元组都支持切片操作
  • 列表和元组都可以随意嵌套
  • 两者也可以通过 list() 和 tuple() 函数相互转换

列表和元组常见的内置函数,参见如下链接
https://www.runoob.com/python3/python3-list.html
https://www.runoob.com/python3/python3-tuple.html

列表和元组存储方式的差异

16846478-fb96cbd629e43f8f.png

image.png

放置了相同的元素, 但是元组的存储空间, 却比列表要少 16 字节。
由于列表是动态的, 所以它需要存储指针, 来指向对应的元素(上述例子中, 对于 int型, 8 字节) 。 另外, 由于列表可变, 所以需要额外存储已经分配的长度大小(8 字节) , 这样才可以实时追踪列表空间的使用情况, 当空间不足时, 及时分配额外空间。

参考资料:

极客时间 Python核心技术与实战学习

Python核心技术与实战(极客时间)链接:
http://gk.link/a/103Sv

Python3 列表:
https://www.runoob.com/python3/python3-list.html

Python3 元组:
https://www.runoob.com/python3/python3-tuple.html



GitHub链接:
https://github.com/lichangke/LeetCode


知乎个人首页:
https://www.zhihu.com/people/lichangke/


简书个人首页:
https://www.jianshu.com/u/3e95c7555dc7


个人Blog:
https://lichangke.github.io/


欢迎大家来一起交流学习


推荐阅读
  • 探讨如何高效使用FastJSON进行JSON数据解析,特别是从复杂嵌套结构中提取特定字段值的方法。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 将Web服务部署到Tomcat
    本文介绍了如何在JDeveloper 12c中创建一个Java项目,并将其打包为Web服务,然后部署到Tomcat服务器。内容涵盖从项目创建、编写Web服务代码、配置相关XML文件到最终的本地部署和验证。 ... [详细]
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 如何在窗口右下角添加调整大小的手柄
    本文探讨了如何在传统MFC/Win32 API编程中实现类似C# WinForms中的SizeGrip功能,即在窗口的右下角显示一个用于调整窗口大小的手柄。我们将介绍具体的实现方法和相关API。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
author-avatar
缘zhi韵_297
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有