在这一节,我们来看Python中另外一个和list
类似的类型:Tuple。
如果你熟悉Swift,对这种类型应该并不陌生。简单来说,它就是一个只读的list
,一旦创建之后,就只能访问它的值,而不能再对其修改,包括修改已有元素的值,以及添加删除元素,都不可以。
创建Tuple
要创建一个Tuple,我们可以直接使用小括号包含Tuple所有的值:
empty = ()
numbers = (1, 2, 3)
mix = (1, 2, 'Three')
也可以在创建的时候,使用tuple
关键字,对于上面这三种情况来说,用不用tuple
关键字并没有区别:
empty = tuple()
numbers = tuple(1, 2, 3)
mix = tuple(1, 2, 'Three')
但是,使用tuple
关键字有一个好处,就是可以把list
转型成Tuple,来对比下面两种用法:
numbers1 = ([1, 2, 3])
# ([1, 2, 3])
numbers2 = tuple([1, 2, 3])
# (1, 2, 3)
从注释的结果中,我们就能看到这两种用法的差异了。或者,我们还可以把两个Tuple相加,形成新的Tuple:
numbers = (1, 2, 3)
sum = numbers + numbers
print(sum)
# (1, 2, 3, 1, 2, 3)
最后,我们再来看一种比较奇特的用法,为了实现两个numbers
拼接的效果,我们还可以这样:
print((numbers) * 2)
# (1, 2, 3, 1, 2, 3)
当然,结果和使用+
是一样的。在Python里,我们可以在()
写一个Tuple值的模式,然后,用*N
的形式,让它重复N次。
访问Tuple
创建好Tuple之后,和list
一样,我们就能用各种形式的range访问其中的元素了:
print(numbers[0]) # 1
print(numbers[0:2]) # (1, 2)
print(numbers[0:3:2]) # (1, 3)
从注释的结果中可以看到,访问其中一个元素的时候,得到的就是对应的值;而当访问一个范围的时候,得到的仍旧是一个Tuple。
Tuple的常用操作
接下来,是Tuple类型支持的常用操作。
获取Tuple的基本信息
既然和list
类型类似,那么Tuple支持下面这些函数当然也是必须的:
print(len(numbers)) # 3
print(min(numbers)) # 1
print(max(numbers)) # 3
print(3 in numbers) # True
从函数名就可以理解它们的含义了。
删除Tuple
当我们不再需要一个Tuple的时候,还可以明确使用del
删掉它,这样做的一个结果就是,在del
之后,访问删掉的Tuple会导致运行时错误:
numbers = (1, 2, 3)
del numbers
print(numbers)
'''
Traceback (most recent call last):
File "/Users/puretears/Desktop/tmp/CollectionsTypes/CollectionTypes.py", line 7, in <module>
print(numbers)
NameError: name 'numbers' is not defined
'''
What's next?
以上,就是和Tuple相关的最基本用法,下一节,我们来看Python中的另外一个常用集合类型:Dictionary。