一、元组定义
元组tuple像是一个列表list,它内部的值不可被修改。元组是一个有序的、不可变数据结构/类型
列表->元组 加锁过程
元组->列表 解锁过程
列表和元组对比 | list | tuple |
声明 | [] | () |
索引 | YES | YES |
切片 | YES | YES |
追加元素 | YES | NO |
修改元素 | YES | NO |
删除元素 | YES | NO |
基于值反查索引 | YES | NO |
包含关系查询 | YES | YES |
元组tuple对于大型数据处理速度优于列表list,如果你有一个常量集需要经常遍历(for),那么元组的效率优于列表
元组tuple由于其无法写入的特点,放在元组内部的数据自然就有一个"写保护",类似我们的sd卡、cf卡或者部分U盘
特别注意-1:当函数(方法)返回的数据大于一个时,一般以元组形式返回。
特别注意-2:由于元组的“写保护”模式,函数可以按照元组内部元素的位置顺序接收元组的数据
二、元组tuple支持什么数据类型
name='正正' #字符串Str age=18 #整数Int height=1.74 #浮点Float is_yes=True #布尔bool pets=['狗','猫','鱼'] #列表List work_ctities=('北京','上海') #元组Tuple teacher={'姓名':'正正'} #字典Dict
三、元组tuple的基本特性
增加:(1)支持空元组创建
删除:(1)仅支持元组整体删除
查询:(1)支持元组数据查询(基于下标、索引、index)
(2)支持切片查询
(3)支持第一级元素长度统计(len)
四、元组tuple创建
(1)空值创建
方法一:空值创建
tuple_data1=tuple() #空值创建
方法二:空值创建
tuple_data2=() #空值创建
特别方法:单个值创建
tuple_data3=("北京",) #单个值创建,必须要有逗号区分该类型为元组
特别方法:多值无括弧创建
tuple_data4="北京","上海","杭州" #多值无括弧创建
tuple_data_all=( [1,2,3], (1,2,3), {'name':'mike','age':28}, #字典2 3.14159, #浮点 3 100, '万门大学', True, False ) print(type(tuple_data_all)) print("元组长度->",len(tuple_data_all))
输出:
<class 'tuple'>
元组长度-> 8
五、 访问元组
tuple_1=(1,'a','BMW','XFL',3) tuple_2=(2,'b','WMB','LFX',4) print(tuple_1) #输出完整元组1 print(tuple_2) #输出完整元组2 print(tuple_1[1]) #输出tuple_1的第二个元素 print(tuple_1[2:]) #输出tuple_1的第三个之后的元素 print(tuple_1[:3]) #输出tuple_1的第四个之后的元素 print(tuple_1*2) #输出两遍tuple_1 print(tuple_1+tuple_2) #输出tuple_1和tuple_2的混合元素输出方法:
(1, 'a', 'BMW', 'XFL', 3) (2, 'b', 'WMB', 'LFX', 4) a ('BMW', 'XFL', 3) (1, 'a', 'BMW') (1, 'a', 'BMW', 'XFL', 3, 1, 'a', 'BMW', 'XFL', 3) (1, 'a', 'BMW', 'XFL', 3, 2, 'b', 'WMB', 'LFX', 4)
tuple_3=(['mike',28],['Jason',36],(1,2,3),{'名字':'正正','爱好':'编程'}) print(tuple_3) print(tuple_3[0])
特别注意:
1、元组内的每个元素(数据),遵守该数据类型的原有规则。比如字符串类型是要加引号的‘’
2、可以有多层嵌套,每一层嵌套为一个独立体存在
3、元组的"写保护"只保护一级数据,如['mike',28]是元组的一个元素,这个元素内的元素可以按照类表的方式进行增删改查操作。如果元组内还是元组,那么即为元组的规则,无法"写入"操作
tuple_3=(['mike',28],['Jason',36],(1,2,3),{'名字':'正正','爱好':'编程'}) print(tuple_3[0]) print(tuple_3[0:1]) print(tuple_3[2:]) print(tuple_3[:4])
查询数据:
基于索引位置取数据
->tuple_3[0] 取一个为当前值的类型->['mike',28]
基于索引范围取数据
tuple_3[0:1]->(['mike', 28],) 取多个值还是一个元组
六、元组的操作
6.1 删除元组
# 删除元组 tuple_1=(['mike',28],['Jason',36],(1,2,3),{'名字':'正正','爱好':'编程'}) del tuple_1
6.2 元组的拼接
# 元组的拼接 tuple_2=(1,2,3) tuple_3=(4,5,6) new_tuple=tuple_2+tuple_3 #元组的拼接 print(new_tuple) #输出为(1,2,3,4,5,6)
6.3 元组和列表转换
# 元组和列表转换 list_data1=[1,2,3] new_tuple1=tuple(list_data1) list_data2=[4,5,6] new_tuple2=tuple(list_data2) print(list_data1) #输出为->[1, 2, 3] print(list_data2) #输出为->[4, 5, 6] print(new_tuple1) #输出为->(1, 2, 3) print(new_tuple2) #输出为->(4, 5, 6) print(id(list_data1)) #输出为->139625538807680 print(id(new_tuple1)) #输出为->139625559198976 print(id(list_data2)) #输出为->139625538807424 print(id(new_tuple2)) #输出为->139625538984128
6.4 元组通过变量直接取值
# 元组通过变量直接取值 personal_info=('正正',35,'北京') name,age,city=personal_info #输出为->name->正正,age->35,city->北京
6.5 元组数量统计
# 元素数量统计 message=(1,2,4,1,6,1) message.count(1) #输出->3
6.6 元组自身复制
# 自身复制 numbers=(1,2) new_numbers=numbers*3
# 输出->(1,2,1,2,1,2)
6.7 元组长度输出
# 元组的长度 num_set1=(1,2,3,4) print(len(num_set1)) #输出->4
6.8 元组的包含关系判断
# 包含关系判断 message=('我','爱','你') print('爱' in message)
6.9 切片延伸
# 切片延伸 num=(0,1,2,3,4,5,6,7,8,9) print(num[0:10:2]) #[起:止:步长] 输出->(0,2,4,6,8) # 特别注意-类似我们for循环里的range()函数 print(num[::2]) #输出->(0,2,4,6,8) # 特别注意-起止不设定默认从头到尾的范围
6.10 元组的嵌套
matrix_list_1=( ('拍黄瓜','夫妻肺片','田园沙拉'), ('宫保鸡丁','鱼香肉丝','番茄烧鸡蛋'), ('冰激凌','提拉米苏','水果'), ('啤酒','白酒','红酒') ) for matrix in matrix_list_1: for caiming in matrix: print(caiming,end=',')
元组嵌套,元组中的数据不可以修改
6.11 元组中列表穿透
元组数据不可以更改但是,元组中的列表数据可以更改
# 元组和列表转换 tuple1_1=( [1,2,3], #A元素0,第一级数据, 注意列表内部为第二级数据(可穿透),可以进行增删改查,遵循list规则 28, #B元素1,第一级数据,整数本身就不可以修改,同时整数也不是结构数据类型(不可穿透) (4,5,6) #C元素2,第一级数据,元组还是沿用元组的规则,只可查不可进行其他操作 ) tuple1_1[0][1]=4 print(tuple1_1) tuple1_1[2][0]=7
输出结果:
如果要真正意义上的任何值不修改,那么就要保证内部数据在构建的时候尽可能全部是元组
元组更多的是查询和提取数据,如果需要大面积修改数据,尽量使用列表
6.12 元组中的内置函数
Python元组包含了以下内置函数
1、cmp(tuple1, tuple2):比较两个元组元素。
2、len(tuple):计算元组元素个数。
3、max(tuple):返回元组中元素最大值。
4、min(tuple):返回元组中元素最小值。
5、tuple(seq):将列表转换为元组。
元组可以在映射(和集合的成员)中作为键(key)使用,而列表不行
元组作为很多内建函数和方法的返回值存在
标签:输出,tuple,Python,元素,list,元组,print From: https://www.cnblogs.com/longlyseul/p/18120853