元组(tuple)
Python 的元组与列表类似,不同之处在于元组不能对其元素进行直接的修改。
但是元组整个可以重新定义、删除。
有关列表和元组的不同,以及为什么要创立两种很相似的类型,可以问GPT。
一、定义元组
小括号(圆括号)括起来,元素用逗号隔开
-
定义一个空元组:
tuple = ()
-
定义一个非空元组,元素只有一个 :
tuple = (1,)
元组中只包含一个元素时,需要在元素后面添加逗号
,
,否则括号会被当作运算符使用 -
定义一个非空元组,元素不止一个 :
tuple = (1,2,3)
-
定义一个一行放不下的元组:
tuple = ('good','bad','fat', 'thin','fast')
-
直接定义多维元组:
heroInfos =(('魏','曹操',160.3),('蜀','刘备',177.1),('吴','周瑜',188.6))
-
间接定义多维元组(元组嵌套):
words = ('a', 'b', 'c') nums = (1, 2, 3) x = (words, nums) print(x) —————————————————————————————————————————————————————————————————— #输出结果为: (('a', 'b', 'c'), (1, 2, 3))
二、元组中元素可以包含什么?
元组中的元素不需要具有相同的类型
tuple1 = (1, 2, 3, 4, 5 ) #数值
tuple2 = ("a", "b", "c", "d") #字符串(不涉及嵌套的话,单引号、双引号都行)
tuple3 = ('Google', 'Runoob', 1997, 2000) #字符串和数值
三、访问
要使用
[]
包裹索引数。
-
正向索引:
与字符串的索引一样,元组正向索引从 0 开始,第二个索引是 1,依此类推。
tuple = ('red', 'green', 'blue', 'yellow', 'white', 'black') print(tuple[0]) print(tuple[1]) print(tuple[len(tuple)-1]) #列表长度-1,即最后一个元素的索引index —————————————————————————————————————————————————————————————————— #输出结果为: red green black
-
反向索引:
反向索引从 -1 开始,最后一个为 -1,倒数第二个为 -2 ,以此类推。
tuple = ('red', 'green', 'blue', 'yellow', 'white', 'black') print(tuple[-1]) print(tuple[-2]) —————————————————————————————————————————————————————————————————— #输出结果为: black white
-
截取:
tuple_new = tuple[start:end]
结果也是一个元组!!
左闭右开,能取到 tuple[start],但是取不到 tuple[end],成员数:end-start。
①正向索引截取:
nums = (10, 20, 30, 40, 50, 60, 70, 80, 90) print(nums[0:4]) —————————————————————————————————————————————————————————————————— #输出结果为: (10, 20, 30, 40)
②反向索引截取:
也是按照数学上负数的大小,左小右大。
nums = (10, 20, 30, 40, 50, 60, 70, 80, 90) print(nums[-3:-1]) —————————————————————————————————————————————————————————————————— #输出结果为: (70, 80)
③混合正向反向索引截取:
nums = (10, 20, 30, 40, 50, 60, 70, 80, 90) print(nums[1:-2]) —————————————————————————————————————————————————————————————————— #输出结果为: (20, 30, 40, 50, 60, 70)
-
多维元组访问:
tuple = (('human','man',14),('animal','dog',2)) print(tuple[0][1]) —————————————————————————————————————————————————————————————————— #输出结果为: man
tuple = (('human','man',14),('animal','dog',2)) print(tuple[0]) —————————————————————————————————————————————————————————————————— #输出结果为: ('human', 'man', 14)
-
如果要把元组和字符串放在一块打印输出,那么要用
str()
包裹元组,将它转换为字符串类型。tuple = (('human','man'),('animal','dog')) print(str(tuple)+'good') # print(tuple+'good') × —————————————————————————————————————————————————————————————————— #输出结果为: (('human', 'man'), ('animal', 'dog'))good
四、元组运算符、删除、重定义
-
运算符:
元组中,
+
和*
的操作符与字符串相似。+
号用于组合元组,*
号用于重复元组。python表达式 结果 描述 a = (1, 2, 3)
b = (4, 5, 6)
c = a+bc = (1, 2, 3, 4, 5, 6) 组内组合 a = (1, 2, 3)
b = (4, 5, 6)
a += ba = (1, 2, 3, 4, 5, 6) 组内组合 (‘Hi!’,) * 4
单个元素记得后加逗号(‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’) 组内重复 3 in (1, 2, 3) True 查询元素是否存在于元组中 -
删除元组:
元组中的元素值是不允许删除的,但可以使用del语句来删除整个元组。
del tuple
元组被删除之后,就查询不到了。
-
重新定义元组:
nums = (10, 20, 30, 40, 50, 60, 70, 80, 90) print(nums) nums = ('a','b') # 重定义元组 print(nums) —————————————————————————————————————————————————————————————————— #输出结果为: (10, 20, 30, 40, 50, 60, 70, 80, 90) ('a', 'b')
五、内置函数
Python元组包含了以下内置函数:
序号 | 方法及描述 |
---|---|
1 | len(tuple) 计算元组元素个数。 |
2 | max(tuple) 返回元组中元素最大值。 |
3 | min(tuple) 返回元组中元素最小值。 |
4 | tuple(iterable) 将可迭代系列转换为元组,iterable可为列表。 |