列表很适合存储在程序运行期间可能要发生变化的数据集,列表是可变的。如果你想创建一系列的不可修改的元素,元组(Tuple)可以满足这种要求。
不可变的:Python中将不能修改的值称之为不可变的,例如元组,可以将元组看做是不可变的列表。
元组是将元素用() 括起来的,这很好记,元(圆)组是用圆括号括起来的。同样,记列表就记列表是用列 [ ]将元素括起来的。
下面给出了一个创建一个元组的例子:
tuple1 = ("a","b","c")
print(tuple1) #('a', 'b', 'c')
但是要 注意的是:严格的说,元组是由逗号标识的,圆括号只是为了让元组看起来更整洁,如果你要定义一个只包含一个元素的元组,必须在这个元素的末尾加上逗号:
tuple2 = ("a",)
print(tuple2)
在列表中是通过使用下标来访问列表中的元素的。同样,在元组中也是使用下标来访问元组中的元素:
tuple3 = (12,23,45,56,45)
print(tuple3[0]) #12
print(tuple3[-1]) #45
print(tuple3[1:3]) #打印下标为1,2的元素 (不包括3) (23, 45)
print(tuple3[1:]) #打印从下标为1的元素和之后的所有元素 (23, 45, 56, 45)
print(tuple3[-3:-1]) #打印倒第3,2的元素 (不包括-1) (45, 56)
大家可能已经发现规律了:
[1: 3 ] : 不包含3(下标)
[-3: -1 ] : 不包含-1(下标)
它总是会不包含 右边 下标元素,这一点在列表中和元组中是通用的。
我在开头就已经说了:“元组是不可变的”,如果你更改元组中的元素将引发报错:
tuple4 = (12, 23, 34)
tuple3[0] = 13 #会报错
但如果你想更改元组中的元素该怎么办?
第一种方法是:你可以将元组转换为列表,更改列表,然后再将列表转换回元组:
tuple5 = (12, 23, 34)
tem = list(tuple5)
tem[0] = 0
tuple5 = tuple(tem)
print(tuple5) #(0, 23, 34)
第二种方法是:重新定义这个元组:
tuple5 = (12, 23, 34)
tuple5 = (0, 23, 34)
print(tuple5) #(0, 23, 34)
遍历元组,可以使用for循环:
tuple6 = (1,2,3,4,5)
for i in tuple6:
print(i, end=" ") #1 2 3 4 5
判断元组中是否存在指定元素,可以使用 in 关键字:
tuple7 = (1,2,3,4,5)
print(1 in tuple7) #True
求元组的长度,可以使用 len() 方法:
tuple8 = (1,2,3,4,5)
print(len(tuple8)) #5
删除元组,由于元组是不可变的,所有不能删除其中的元素,但可以使用 del 将整个元组删除:
tuple9 = (1,2,3)
del tuple9
print(tuple9) #这将会报错,因为tuple9这个元组已经被删除了
合并两个元组,可以使用 + 将两个元组合并:
tuple10 = (1,2,3)
tuple11 = (4,5,6)
tuple12 = tuple10 + tuple11
print(tuple12) #(1, 2, 3, 4, 5, 6)
tuple() 构造函数
tuple13 = tuple((1,2,3)) #注意双括号
print(tuple13) #(1, 2, 3)
当然,除此之外,Python 提供两个可以在元组上使用的内建方法:
count() :返回元组中指定值出现的次数
index() : 在元组中搜索指定的值并返回它被找到的位置
下面给出了例子:
tuple14 = (1,1,4,3,3)
print(tuple14.count(1)) #2
print(tuple14.index(1)) #0