Python常见数据结构

server/2025/1/22 13:37:00/

元组(Tuple)列表(List)是Python中两种主要的序列类型,它们在功能上有许多相似之处,但也存在一些关键的区别:

可变性:

列表是可变的,这意味着你可以更改列表的内容,例如添加、删除或更改元素。由于列表是可变的,我们可以使用append()、insert()、remove()等方法来修改列表。元组则没有这些方法,因为它不可变。
元组是不可变的,一旦创建就不能更改。尝试修改元组的操作将引发错误。
存储数据:元组是一种可以存储不同数据类型,且数据不可变的序列。

tup1 = ('physics', 'chemistry', 1997, 2000);

tup2 = (1, 2, 3, 4, 5 );

tup3 = "a", "b", "c", "d";

内存使用:

元组通常比列表使用更少的内存,因为它们的结构是固定的。
速度和安全性:因为元组是不可变的,所以它们的处理速度通常比列表快,同时在某些情况下也更安全,因为它们不能被意外修改。
语法:

列表使用方括号[]来创建,例如my_list = [1, 2, 3]。
元组使用圆括号()来创建,例如my_tuple = (1, 2, 3)。如果元组中只有一个元素,需要在元素后面加上逗号,例如single_element_tuple = (1,)。
内置函数:

某些内置函数,如min()和max(),可以接受列表作为参数,但不适用于元组。
元组内置函数
Python元组包含了以下内置函数
1、cmp(tuple1, tuple2):比较两个元组元素。
2、len(tuple):计算元组元素个数。
3、max(tuple):返回元组中元素最大值。
4、min(tuple):返回元组中元素最小值。
5、tuple(seq):将列表转换为元组。

定义的时候tuple包含的3个元素:

>>> tuple = (1, 2, 'a', 'b', ['A', 'B'])
>>> tuple[2][0] = 'X'
>>> tuple[2][1] = 'Y'
>>> tuple
(1, 2, 'a', 'b', ['X', 'Y'])
    表面上看,tuple的元素打印出来的结果确实变了,但其实变的不是tuple的元素,而是list的元素。tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的! 

字典(Dictionary)
键值对:字典存储键值对(key-value pairs),其中键(key)是唯一的,而值(value)可以是任何数据类型。
可变:字典是可变的,这意味着你可以在创建后添加、修改或删除键值对。
无序:字典是无序的,这意味着键值对的顺序可能会在不同的Python解释器或不同的运行之间改变。
查找速度:字典的查找速度非常快,它是通过哈希表实现的,具有平均时间复杂度O(1)。
语法:字典使用花括号{}创建,键值对之间用冒号:分隔,例如my_dict = {'key1': 'value1', 'key2': 'value2'}。
方法:字典提供了多种方法来操作字典,如keys(), values(), items(), get(), update()等。
集合(Set)
无序集合:集合是一个无序的不重复元素集。
可变:集合是可变的,你可以添加、删除或清除集合中的元素。
查找速度:集合的查找速度也很快,同样是通过哈希表实现的。
语法:集合使用花括号{}或set()函数创建,例如my_set = {1, 2, 3}或my_set = set([1, 2, 3])。
方法:集合提供了一些方法来操作集合,如add(), remove(), discard(), union(), intersection(), difference()等。
元素唯一性:集合中的所有元素都是唯一的,没有重复的元素。


http://www.ppmy.cn/server/18477.html

相关文章

绘唐3Ai小说推文自动化生成工具

.批量SD绘图:用户可以通过自定义模板快速生成大量插图,这些插图可以用于视频中的各个场景。同时,系统还支持对单个镜头进行精细调整,以更好地符合故事情节。 绘唐AIGC官网,绘唐3,绘唐科技,绘唐AI 视频一键合成:绘唐3能够将图文内容与视频素材…

spring自定义属性编辑器

spring自定义属性编辑器 属性编辑器用来解析bean的配置文件中的属性标签,spring的BeanWrapperImpl默认会注册CustomCollectionEditor(集合)、CustomMapEditor(Map)、CurrencyEditor(货币)、ByteArrayPropertyEditor等,可以使用CustomEditorConfigurer来注…

Python:一切皆对象!

Python:一切皆对象! Python是一种面向对象的编程语言,它的设计哲学之一就是“一切皆对象”。这个理念意味着在Python中,几乎所有的数据类型都是对象,每个对象都有自己的属性和方法。这种面向对象的编程方式使得代码更…

多行Textview 计算切分后的长度,并回退长度

实现类似的效果,一个多行的 textview, 如果赋值一个超长的字符,尾部长度回退部分,并添加 ... 最后添加一个详情按钮。 如果不超长则不显示详情 效果如图: 获取截断之后的字符长度 fun getLimitedCharacterCount(textV…

HCIP-Datacom-ARST必选题库_网络协议【道题】

一、单选 1.能够生成组播分发树的组播协议是: OSPF PIMv2 BGP IGMPv2 二、多选 1.以以下哪些属于多通道协议? Te1net P FTP H.323 SMTP LE 2.以下哪些协议属于多通道协议? SMTP Telnet H.323 FTP 三、简答 1.请将以下组网可靠性的备份技术与其相应特性进…

分布式WEB应用中会话管理的变迁之路

Session一词直译为“会话”,意指有始有终的一系列动作/消息。Session是Web应用蓬勃发展的产物之一,在Web应用中隐含有“面向连接”和“状态保持”两个含义,同时也指代了Web服务器与客户端之间进行状态保持的解决方案。 在Web应用…

数据结构系列-二叉树之前序遍历

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 这篇文章,我们主要的内容是对二叉树当中的前历的算法进行讲解,二叉树中的算法所要求实现的是 从根到左子树再到右子树的遍历顺序,可能这样不太…

金融案例:统一查询方案助力数据治理与分析应用更高效、更安全

随着企业数据规模的增长和业务多元化发展,海量数据实时、多维地灵活查询变成业务常见诉求。同时多套数据库系统成为常态,这既带来了数据管理的复杂性,又加大了数据使用的难度,面对日益复杂的数据环境和严格的数据安全要求&#xf…