元组概述

元组是不可变序列,通常用一对小括号包围元素,元素之间逗号隔开。元组的元素可以是任何对象。元组类型是 tuple:

type((1,2,['1','2']))
tuple

空元组用一对圆括号表示:

()
()

单元组后面必须有一个逗号:

(1,)
(1,)

除了空元组,括号可以省略,因为决定生成元组的其实是逗号而不是圆括号,圆括号是可选的,但元组是更大的表达式的一部分或会产生语法歧义的情况,括号不能省略:

1,
(1,)
1, 1+1, ('单元组',)
(1, 2, ('单元组',))

内置函数 tuple() 用来构造元组:

tuple(), tuple('123')
((), ('1', '2', '3'))

当元组中包含可变对象(例如列表)时,元组本身不可变(不能增、删、改元组本身的元素),但包含的可变对象仍然具有它的可变性质及其操作,此时的元组不能再作为集合的元素或字典的键:

a = ([1,2],3,3)
print(id(a))
del a[0][:]
id(a), a
2207053762176


(2207053762176, ([], 3, 3))
{a}
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-14-29dfa031a339> in <module>
----> 1 {a}


TypeError: unhashable type: 'list'