Python元组

一、什么是元组

元组是Python中的另一种标准序列类型,与列表和字符串类似。元组也是有序的,可以包含任意类型的元素,而且可以通过索引和切片进行访问。

二、元组的组成

元组由多个用逗号隔开的值组成,例如:

>>>t = 12345, 54321, 'hello!'
>>>t[0]
12345
>>>t
(12345, 54321, 'hello!')
>>># Tuples may be nested:
...u = t, (1, 2, 3, 4, 5)
>>>u
((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))
>>># Tuples are immutable:
...t[0] = 88888
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>># but they can contain mutable objects:
...v = ([1, 2, 3], [3, 2, 1])
>>>v
([1, 2, 3], [3, 2, 1])

可以用多种方式构建元组:

  • 使用一对圆括号来表示空元组: ();
  • 使用一个后缀的逗号来表示单元组: a, 或 (a,);
  • 使用以逗号分隔的多个项: a, b, c or (a, b, c);
  • 使用内置的 tuple(): tuple() 或 tuple(iterable)。

元组在输出时通常要由圆括号括起来,以正确解释嵌套的元组。输入时,圆括号可以省略,但在某些情况下是必需的。不允许为元组中的单个元素赋值,当然,可以创建含列表等可变对象的元组。

注意:元组是不可变的,一旦创建就不能修改元组中的元素。所谓元组的不可变指的是元组所指向的内存中的内容不可变。但是,如果元组中包含可变对象(比如列表),则可以修改列表内部的元素。

>>> tup = ('W', '3', 'C', 's', 'c', 'h','o','o','l')
>>> tup[0] = 'w' # 不支持修改元素
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> id(tup) # 查看内存地址
4440687904
>>> tup = (1,2,3)
>>> id(tup)
4441088800 # 内存地址不一样了

构造 0 个或 1 个元素的元组比较特殊,为了适应这种情况,对句法有一些额外的改变。用一对空圆括号就可以创建空元组;只有一个元素的元组可以通过在这个元素后添加逗号来构建(圆括号里只有一个值的话不够明确)。虽不美观但是有效。例如:

>>>empty = ()
>>>singleton = 'hello', # <-- note trailing comma
>>>len(empty)
0
>>>len(singleton)
1
>>>singleton
('hello',)

三、序列解包

  • 语句t = 12345, 54321, 'hello!'是 元组打包 的例子,值12345, 54321 和 'hello!'一起被打包进元组;
  • 序列解包用于将一个序列解压成多个变量。例如:
>>>x, y, z = t;
  • 序列解包时,左侧变量与右侧序列元素的数量应相等。

注意:多重赋值其实只是元组打包和序列解包的组合。

广告合作
QQ群号:707632017

温馨提示:

1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com。(#改为@)

2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。

目录