Python元组详解:特性、操作与字典基础
本文深入解析Python中的元组(tuple)数据类型。元组作为有序且不可变的序列,具有数据安全和遍历效率高的优势。文章详细讲解了元组的创建方式、基本操作(查询、拼接、解包)、与列表的转换及性能对比,并简要介绍了字典(dict)的基础语法与键值对操作,帮助开发者掌握Python核心数据结构。
元组
1.什么是元组tuple
元组(tuple)在结构上类似于列表(list),但其核心区别在于内部元素一旦创建便不可修改。它是一种有序的、不可变的数据结构或类型。
值得注意的是,列表与元组之间存在一种有趣的转换关系:
将列表转换为元组相当于进行“加锁”操作,使其变为不可变状态。
将元组转换为列表则相当于“解锁”,恢复其可变性。
因此,元组和列表之间支持相互转换。
可以将元组视为一个“保险柜”,数据一旦存入便得到保护,确保安全性。
以下是列表与元组的主要对比:

为什么需要引入元组?
1、在处理大型数据时,元组的运行速度通常优于列表。如果有一个常量集需要频繁遍历(例如使用for循环),元组的效率更高。
2、由于元组具有“无法写入”的特性,其内部数据自然具备“写保护”,类似于SD卡、CF卡或部分U盘的写保护开关。
3、特别注意:当函数(或方法)需要返回多个数据时,通常以元组的形式返回结果。
4、特别注意:得益于元组的“写保护”模式,函数可以通过元组内部元素的位置顺序来接收和解包元组数据。
2.元组tuple支持什么数据类型
元组可以包含不可变的数据类型,包括:字符串(str)、整数(int)、浮点数(float)、布尔值(bool)、元组(tuple)、字典(dict)和列表(list)。
3.元组tuple的基本特征
增加:支持创建空元组,但不支持对已有元组进行数据更新或添加操作。
删除:仅支持删除整个元组对象,不支持删除单个元素或进行切片删除。
修改:元组元素不可修改。
查询:
1、支持通过下标、索引或index方法进行元组数据查询。
2、支持切片查询操作。
3、支持统计第一级元素的长度(使用len函数)。
4.如何声明一个元组tuple
方法一:通过空值创建,代码为 tuple_data = tuple()。
方法二:通过空括号创建,代码为 tuple_data = ()。
特别方法:创建单个值的元组时,代码为 tuple_data = (“北京”,),必须包含逗号以区分该类型为元组而非普通字符串。
特别方法:多值无括号创建,代码为 tuple_data = “北京” , “上海”,利用逗号隐式创建元组。
元组的语法规则:元组之间使用 ,区隔
("23",23,True,1.78,"人")
头尾使用小括弧()
元组添加其他类型数据(嵌套)
([35,"kk"],{"名字":"like","ij":"iji"},(4,1,"3"))
特别注意:
1、元组内的每个元素(数据),遵守该数据类型的原有规则。比如字符串类型是要加引号“”
2、可以有多层嵌套,每一层嵌套为一个独立体存在
3、元组的“写保护”只保护一级数据,如["like",29]是元组的一个元素,这个元素内的元素可以按照列表的方式进行增删改查操作,如果元组内还是元组,那么即为元组的规则,无法“写入”操作
5.玩转元组tuple
示例:声明并创建一个包含个人信息的元组:
代码示例:personal_info= (“like”,88,“张三”,1.4)
元组的基本操作:
1、查询:
查询数据 personal_info[1]
基于索引位置去数据>>>(88) (整数类型)取一个值为当前值的类型
personal_info[0:2]
基于索引范围取数据>>>("like",88)取多个值还是一个元组
2、删除:
del personal_info 删除整个元组
3、元组的拼接:
num_1 = (1,2,3)
num_2 = (4,5,6)
num_new = num_1 + num_2 输出为 >>>(1,2,3,4,5,6)
4、元组和列表转换:
list_data = [1,2,3]
new_tuple = tuple(list_data) 输出为>>> (1,2,3)
tuple_data = (1,2,3)
new_list = list(tuple_data) 输出为>>> [1,2,3]
5、元组通过变量直接取值
personal_info = ("张三","北京",22)
name,city,age = personal_info
输出为>>>
name 为 张三
city为北京
age为22
6、元素数量统计
message = (1,2,3,4,1,3,1)
message.conunt(1) 输出>>>1
7、自身复制
message = (1,2,3)
message_new = message * 3 输出为>>> (1,2,3,1,2,3,1,2,3)
8、元组的长度
num_1= (1,2,3,4)
len(num_1) 输出为>>>4
9、包含关系判断
message = ("好",'好','学','习')
"好" in message 输出为>>>True
特别注意仅支持当前层级的判断
10、切片延伸
num = (0,1,2,3,4,5,6,7,8,9)
num[0:10:2][起:止:步长] 输出>>>(0,2,4,6,8)
特别注意-类似for循环里的range()函数
num[::2]输出>>>(0,2,4,6,8)
特别注意-起止不设定默认从头到尾的范围
11、new_tuple = ( "哈士奇","萨摩","泰迪")
元组跟列表这两个数据类型的性质决定了它通常内部存在的数据比较长,书写的时候会超出屏幕的边界,所以说你可以这样做:
new_tuple = (
"哈士奇",
"萨摩",
"泰迪"
)
12、元组的嵌套
元组和元组嵌套与列表与列表嵌套的差异:
元组中的列表可以按照列表的特征进行操作:
new_tuple = (
[1,2,3],
[2,3,4],
[3,4,5]
)
元组中的元组的元素不可以修改:
new_tuple = (
(1,2,3),
(2,3,4),
(3,4,5)
)
13、tuple与for循环
1、初级难度
dogs = (
"哈士奇",
"萨摩",
"泰迪"
)
for dog in dogs:
print(dog)
第一次:哈士奇
第二次:萨摩
第三次:泰迪
2、中级难度
menus = (
('拍黄瓜','大拌菜'),
('鸡丁','肉丝'),
('蛋糕','冰淇凌')
)
for menu in menus:
print(menu)
第一次:('拍黄瓜','大拌菜')
第二次:('鸡丁','肉丝')
第三次:('蛋糕','冰淇凌')
3、高级难度
menus = (
('拍黄瓜','大拌菜'),
('鸡丁','肉丝'),
('蛋糕','冰淇凌')
)
for menu in menus:
print(menu)
for food in menu:
print(food)
第一次:('拍黄瓜','大拌菜')
内第一次:拍黄瓜
内第二次:大拌菜
第二次:('鸡丁','肉丝')
内第一次:鸡丁
内第二次:肉丝
第三次:('蛋糕','冰淇凌')
内第一次:蛋糕
内第二次:冰淇凌
字典
一个可以存储具有一系列映射关系的数据结构即为字典表
1、字典表dict支持什么数据类型:
字典中支持存储:字符串str、整数int、浮点float、布尔bool、列表list、元组tuple、字典dict
2、字典表的特征
dict 2个不准:不准改变键(KEY)键(KEY)不允许重复
dict4个支持:增加键(KEY)和值(Value)
删除键(KEY)和值(Value)
基于键(KEY)改变值(Value)
基于键(KEY)查询值(Value)
dict 2个注意:只能使用不可变类型作为键、通常不使用数字(int/float)作为建
3、如何声明一个字典
方法一: 空值创建 dict_1 = dict()
方法二:空值创建 dict_2 = {}
方法三:非空值创建 dict _3 = {"姓名":'张三'}
dict _4 = dict({"姓名":'张三'})
dict _5 = dict("姓名" = '张三')
按照key:value 的格式可以建立多个键值对(items)的字典表
一个键和一个值叫键值对在python里这个叫一个item(全部字典表里的键值对那就是items)
字典表的语法规则{'NAME':"张三","age",18}
键值之间 冒号:分割 键值对(item)之间的分割使用,逗号
字典表加入列表和元组类型
{"NAME":("张三","李四")},'city':['BJ',‘HB']
注意列表 元组[ ] ( )外 不要加引号否则会转成字符串
4、玩转字典表
声明创建一个基于个人信息的字典
info = {"姓名":'张三',"年龄",20}
字典表基本操作
增加数据:info['性别'] = '男' 字典名[键] = 添加的值
修改数据:info['年龄'] = 21 字典名[键] = 修改的值
查询数据:info['年龄'] 或 info.get("年龄")
删除数据: del info['年龄'] 或 info.pop("年龄") 或 info.clear() 清空字典
总结
本文到此结束,希望能为读者提供帮助,也欢迎大家关注本站以获取更多技术内容!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









