Skip to main content

[TOC]

元组

元组是另一个数据类型,类似于 List(列表)。

元组用 () 标识。内部元素用逗号隔开。但是元组不允许更新,不能二次赋值,相当于只读列表。

tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )
tinytuple = (123, 'john')

print tuple # 输出完整元组
print tuple[0] # 输出元组的第一个元素
print tuple[1:3] # 输出第二个至第四个(不包含)的元素
print tuple[2:] # 输出从第三个开始至列表末尾的所有元素
print tinytuple * 2 # 输出元组两次
print tuple + tinytuple # 打印组合的元组
--------结果----------
('runoob', 786, 2.23, 'john', 70.2)
runoob
(786, 2.23)
(2.23, 'john', 70.2)
(123, 'john', 123, 'john')
('runoob', 786, 2.23, 'john', 70.2, 123, 'john')

修改元组

元组中的元素值是不允许修改的,但我们可以对元组进行连接组合

tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')

# 以下修改元组元素操作是非法的。
# tup1[0] = 100

# 创建一个新的元组
tup3 = tup1 + tup2
print tup3
---------结果---------
(12, 34.56, 'abc', 'xyz')

删除元组

元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组

tup = ('physics', 'chemistry', 1997, 2000)

print tup
del tup
print "After deleting tup : "
print tup
--------结果-----------
以上实例元组被删除后,输出变量会有异常信息
('physics', 'chemistry', 1997, 2000)
After deleting tup :
Traceback (most recent call last):
File "test.py", line 9, in <module>
print tup
NameError: name 'tup' is not defined

元组运算符

与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组。

Python 表达式结果描述
len((1, 2, 3))3计算元素个数
(1, 2, 3) + (4, 5, 6)(1, 2, 3, 4, 5, 6)连接
('Hi!',) * 4('Hi!', 'Hi!', 'Hi!', 'Hi!')复制
3 in (1, 2, 3)True元素是否存在
for x in (1, 2, 3): print x,1 2 3迭代

无关闭分隔符

任意无符号的对象,以逗号隔开,默认为元组

print 'abc', -4.24e93, 18+6.6j, 'xyz'
x, y = 1, 2
print "Value of x , y : ", x,y
---------结果-----------
abc -4.24e+93 (18+6.6j) xyz
Value of x , y : 1 2

元组内置函数

Python元组包含了以下内置函数

序号方法及描述
1cmp(tuple1, tuple2) 比较两个元组元素。
2len(tuple) 计算元组元素个数。
3max(tuple) 返回元组中元素最大值。
4min(tuple) 返回元组中元素最小值。
5tuple(seq) 将列表转换为元组。****

Python 3.X 的版本中已经没有 cmp 函数,如果你需要实现比较功能,需要引入 operator 模块,适合任何对象,包含的方法有:


operator.lt(a, b)
operator.__lt__(a, b)
'''用于检查a是否小于b,等效于a < b
如果a小于b返回True,否则返回False'''

operator.le(a, b)
operator.__le__(a, b)
'''用于检查a是否小于等于b,等效于a <= b
如果a小于等于b返回True,否则返回False'''

operator.eq(a, b)
operator.__eq__(a, b)
'''用于检查a是否等于b,等效于a == b
如果a等于b返回True,否则返回False'''

operator.ne(a, b)
operator.__ne__(a, b)
'''用于检查a是否不等于b,等效于a != b
如果a不等于b返回True,否则返回False'''

operator.ge(a, b)
operator.__ge__(a, b)
'''用于检查a是否大于等于b,等效于a >= b
如果a大于等于b返回True,否则返回False'''

operator.gt(a, b)
operator.__gt__(a, b)
'''用于检查a是否大于b,等效于a > b
如果a大于b返回True,否则返回False'''