一、元组
-
什么是元祖(tuple)
python提供的容器型数据类型,不可变并且有序(元祖就是不可变的列表)
不可变 - 不支持增删改,只支持查询
有序 - 每个元素对应一个确定的下标 -
字面量和元素
(元素1,元素2,元素3,······)
其中的元素可以是任何类型的数据,并且类型可以不一样,同样的元素可以有多个point = (100 ,30) print(type(point),point) #<class 'tuple'> (100, 30)
-
空的元组:()
tuple1 = () print(type(tuple1)) <class 'tuple'>
-
只有一个元素的元组(必须加一个逗号)
tuple2 = ('abc') print(tuple2,type(tuple2)) tuple3 = ('abc',) print(tuple3,type(tuple3)) abc <class 'str'> ('abc',) <class 'tuple'>
-
直接将多个元素用逗号隔开,不加小括号,表示的也是元组
tuple3 = 1,2,3 print(tuple3,type(tuple3)) (1, 2, 3) <class 'tuple'>
-
-
元组获取元素和列表是一样的
tuple4 = '成都', '达州', '绵阳', '南充', '广元' print(tuple4[1],tuple4[-1]) print(tuple4[:]) # 遍历 for city in tuple4: print(city) for index in range(len(tuple4)): print(tuple4[index])
-
特殊的获取方式
-
变量1,变量2,..... = 元祖 -- 用前面的变量一次获取元祖中元素的值(要求前面变量的个数和元祖的元素的个数保持一致)
point = (100,200) x, y = point # x,y = (100,200) <==> x,y = 100,200 print(x, y)
-
变量1, 变量2 = 元祖 -- 通过带的变量获取元祖中剩余的部分
name, *scores = ('小明', 100, 89, 67, 99) print(name, scores) name, num, *scores = ('小明', 100, 89, 67, 99) print(name, num, scores) *info ,num = ('小明', 100, 89, 67, 99) print(info, num) *info ,num1, num2 = ('小明', 100, 89, 67, 99) print(info, num1, num2) info1, *nums, num1 = *info ,num = ('小明', 100, 89, 67, 99) print(nums) 小明 [100, 89, 67, 99] 小明 100 [89, 67, 99] ['小明', 100, 89, 67] 99 ['小明', 100, 89] 67 99 [100, 89, 67]
注意:这个结构中带*的变量只能有一个,不带 * 的可以有多个
-
-
相关运算(和列表一样)
+,* in / not in len(), max(), min(),sum(),tuple() tuple1 = (1,2,3) tuple2 = ('aa', 'bb') print(tuple1 + tuple2) print(tuple1 * 3) (1, 2, 3, 'aa', 'bb') (1, 2, 3, 1, 2, 3, 1, 2, 3)
-
排序
sorted(序列) -- 对序列中的元素排序,产生一个新的列表(不管是什么序列,排序完成后产生的都是列表)
注意:list.sorted(); -- 修改原列表中元素的顺序 ,不会产生新的值或序列
sorted(list) -- 产生一个新的列表nums = (1,34,89,9) new_nums = sorted(nums) print(sorted(nums, reverse=True)) new_strs = sorted('qwertyuiopasdfghj') print(new_strs)
-
join的使用
""" 字符串.join(序列) -- 将序列中的元素取出,用指定的字符串连接在一起。要求序列中的元素必须是字符串 """ new_str = ''.join(new_strs) #转换为字符串 print(new_str,type(new_str))
-
网友评论