元组(Tuple)
用于将多个对象保存到一起。你可以将它们近似地看作列表,但是元组不能提供列表类能够提供给你的广泛的功能。元组的一大特征类似于字符串,它们是不可变的
,也就是说,你不能编辑或更改元组。
元组是通过特别指定项目来定义的,在指定项目时,你可以给它们加上括号
,并在括号内部用逗号
进行分隔。
元组通常用于保证某一语句或某一用户定义的函数可以安全地采用一组数值,意即元组内的数值不会改变。
案例(保存为 ds_using_tuple.py ) :
# 元组
# 我会推荐你总是使用括号
# 来指明元组的开始与结束
# 尽管括号是一个可选选项。
# 明了胜过晦涩,显式优于隐式。
zoo = ('python','elephant','penguin')
print('number of animals in the zoo is',len(zoo))
new_zoo ='monkey','camel',zoo
print('number of cages in the new zoo is1',len(new_zoo))
print('all animals in new zoo are',new_zoo)
print('animals brought from old zoo are',new_zoo[2])
print('last animal brought from old zoo is',new_zoo[2],[2])
print('number of animals in the new zoo is',len(new_zoo)-1+len(new_zoo[2]))
输出:
$ python ds_using_tuple.py
Number of animals in the zoo is 3
Number of cages in the new zoo is 3
All animals in new zoo are ('monkey', 'camel', ('python', 'elephant', 'penguin'))
Animals brought from old zoo are ('python', 'elephant', 'penguin')
Last animal brought from old zoo is penguin
Number of animals in the new zoo is 5
它是如何工作的
变量 zoo
指的是一个包含项目的元组。我们能够看到 len
函数在此处用来获取元组的长度。这也表明元组同时也是一个序列。
现在,我们将这些动物从即将关闭的老动物园(Zoo) 转移到新的动物园中。因此,new_zoo
这一元组包含了一些本已存在的动物以及从老动物园转移过去的动物。让我们回到话题中来,在这里要注意到元组中所包含的元组不会失去其所拥有的身份。
如同我们在列表里所做的那般,我们可以通过在方括号中指定项目所处的位置来访问元组中的各个项目。这种使用方括号的形式被称作索引(Indexing) 运算符
。我们通过指定new_zoo[2]
来指定new_zoo
中的第三个项目,我们也可以通过指定 new_zoo[2][2]
来指定new_zoo 元组中的第三个项目中的第三个项目 。一旦你习惯了这种语法你就会觉得这其实非常简单。
包含 0 或 1 个项目的元组
一个空的元组由一对圆括号构成,就像 myempty = () 这样。然而,一个只拥有一个项目的元组并不像这样简单。你必须在第一个(也是唯一一个) 项目的后面加上一个逗号来指定它,如此一来 Python 才可以识别出在这个表达式想表达的究竟是一个元组还是只是一个被括号所环绕的对象,也就是说,如果你想指定一个包含项目 2 的元组,你必须指定 singleton = (2, ) 。