我们在上一篇中了解了变量list(列表), 今天我们来介绍下元组。元组是由括号和逗号,组织起来的一个元素的集合。和list不同的是,它其中的元素是不能被修改的,和其他语言中的常量相类似。
需要注意的是,如果元组中只包含一个元素,那么在元组的最后需要加一个逗号,来申明他是一个元组,而不是一个被运算符括号保护起来的一个整数。
names = ('Ralf', 'Rachel', 'Clark', 'Leona', 'Terry')
print(names) numbers1 = (50)
print(type(numbers1)) numbers2 = (50,)
print(numbers2) #输出:
#('Ralf', 'Rachel', 'Clark', 'Leona', 'Terry')
#<class 'int'>
#(50,)
我们可以像列表list那样使用循环来访问和遍历元组:
names = ('Ralf', 'Rachel', 'Clark', 'Leona', 'Terry') for name in names:
print(name) #输出:
#Ralf
#Rachel
#Clark
#Leona
#Terry
也可以使用[:]切片的方式来访问元组:
names = ('Ralf', 'Rachel', 'Clark', 'Leona', 'Terry') print(names[1])
#输出:Rachel print(names[1:3])
#输出:('Rachel', 'Clark') print(names[:-1])
#输出: ('Ralf', 'Rachel', 'Clark', 'Leona') print(names[-1])
#输出: Terry print(names[::2])
#输出: ('Ralf', 'Clark', 'Terry')
元组中的元素的值是不能被修改的, 否则会爆出系统错误:
names = ('Ralf', 'Rachel', 'Clark', 'Leona', 'Terry') names[2] = 'NewMan'
#输出: TypeError: 'tuple' object does not support item assignment
但是我们可以对元组进行删除和重新定义:
names = ('Ralf', 'Rachel', 'Clark', 'Leona', 'Terry')
print(names)
names = ('Ralf', 'Rachel', 'Clark', 'Leona')
print(names)
del names
print(names) #输出: ('Ralf', 'Rachel', 'Clark', 'Leona', 'Terry')
#输出: ('Ralf', 'Rachel', 'Clark', 'Leona')
#输出: NameError: name 'names' is not defined
多个元组可以进行合并,一个元组中也可以包含另一个元组:
names1 = ('Ralf', 'Rachel', 'Clark', 'Leona', 'Terry') names2 = ('Ralf', 'Rachel', 'Clark', 'Leona')
names3 = names1 + names2
print(names3) #输出: ('Ralf', 'Rachel', 'Clark', 'Leona', 'Terry', 'Ralf', 'Rachel', 'Clark', 'Leona') names4 = (1, 2, ('a','b'))
print(names4)
print(names4[2])
print((names4[2])[0]) #输出: (1, 2, ('a', 'b'))
#输出: ('a', 'b')
#输出: a
由于元组的不可修改的相关特性,所以它不支持排序、替换、添加等操作。 只保留了计算元素个数,最大值,最小值等方法。
也正是因为这种特性,我们在做一些方法传递或者参数传递的时候,可以使用元组,保证传出去的数值,是不可以修改的,确保安全性。