Python by Example 中文版:元组

元组(tuple) 属于序列类型,也可以通过下标或切片操作符访问。 元组与列表的区别:元组中的值是可以不被改变的。

元组由圆括号()定义

x = (12, "abc", 3.45)
print("x=",x)

元组里也可以嵌套元组与列表

x = ("abc", [1, 'def'], 3.45, (2, 'ghi'))
print("x=",x)

访问元组中的值,使用下标

print("x[0]=", x[0])
print("x[3]=", x[1])
print("x[3][1]=", x[3][1])

访问元组中的值,使用切片操作符

print("x[0:3]=", x[0:3])

不能更新元组中的值,如果你想把元组x[2]的值设为3.14, 即x[2]=3.14, python的解释器将会报错。

但是,如果元组中包含可变对象,则可变对象的值是可以被改变的。 例子[1, ‘def’]改变为[45, ‘def’]

x[1][0]=45
print("x=",x)

不能删除元组中的值,即不使用del x[0], 元组中也不能追加元素,即没有.append()方法

成员操作符可,连接操作可用于元组

print('abc' in x)
print([45, 'def'] not in x)
y = ("jk", 15)
print("y=",y)
print(x+y)

运行tuples.py

$ python tuples.py
x= (12, 'abc', 3.45)
x= ('abc', [1, 'def'], 3.45, (2, 'ghi'))
x[0]= abc
x[3]= [1, 'def']
x[3][1]= ghi
x[0:3]= ('abc', [1, 'def'], 3.45)
x= ('abc', [45, 'def'], 3.45, (2, 'ghi'))
True
False
y= ('jk', 15)
('abc', [45, 'def'], 3.45, (2, 'ghi'), 'jk', 15)

为什么python有了列表类型,还需要元组类型? 因为在某些软件设计中需要用到不可变类型变量,比如 你在维护一些敏感数据(比如年收,社会ID等),并需要把这些传给 一个并不是你设计的函数(函数概念还没讲到),如果想保证数据不会 被篡改,就可以考虑使用元组。

下一个例子: 集合.