三分钟读懂Python中的元组

487次阅读
没有评论

三分钟读懂Python中的元组

元组

我们发现列表和字符串有许多共同点,例如可以用索引来访问,以及切割的操作。他们属于序列类型的公共特性。Python 的日益发展,使得其他的序列类型会被逐渐地加入到语言特性中。其中就有另一种序列类型:元组。

元组由一系列被逗号分隔开的值组成,例如:

>>> t = 12345, 54321, 'hello!'
>>> t[0]
12345
>>> t
(12345, 54321, 'hello!')
>>> # 元组也可以嵌套:
... u = t, (1, 2, 3, 4, 5)
>>> u
((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))
>>> # 元组不可被修改:
... t[0] = 88888
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> # 但是可以包含可以被修改的对象:
... v = ([1, 2, 3], [3, 2, 1])
>>> v
([1, 2, 3], [3, 2, 1])

正如你所见,元组在输出时总是带有两侧的括号,这样一来,嵌套的元组可以被清楚地区分开;但是在输入时,并不一定要带上两侧的括号,尽管有时带上括号非常有必要(例如元组作为一个很长的表达式的一部分)。不能对元组中的项进行赋值,但在创建元组时,可以传入可修改的对象,例如列表。

虽然元组看起来和列表很像,但它们的使用场合和使用目的往往不同。元组是 不可修改的,并且经常包含着不同类型的元素,总是通过解包(本章的后面会介绍)或索引(命名元组可以通过属性索引的方式)来访问。而列表是 可修改的,并且往往包含着同样类型的元素,通过遍历的方式来进行访问。

一个特别的问题是如何创建一个空的或只有一个元素的元组:语法上有一些小窍门。空的元组可以用一对空的括号来创建;只有一个元素的元组可以用一个后面跟着逗号的值来创建(只在括号里放一个元素可不行)。这些方法虽然有点丑陋,但挺好用的。例如:

>>> empty = ()
>>> singleton = 'hello',    # <-- 注意后面的逗号
>>> len(empty)
0
>>> len(singleton)
1
>>> singleton
('hello',)

语句 t = 12345, 54321, 'hello!' 是一个 元组解包的例子:元素 12345, 54321 和 'hello!' 一起组成了一个元组。下面这样的操作也同样可以做到:

>>> x, y, z = t

这被称为 序列解包 ,所有右值的序列都可以使用这种语法。序列解包要求在等号的左边有着和序列内元素数量相同的变量。到这里也许你也发现了,多重赋值就是利用元组和序列解包来实现的。

神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试

相关文章:

版权声明:wuyou2021-07-05发表,共计1275字。
新手QQ群:570568346,欢迎进群讨论 Python51学习