1:元组的定义:
元组: 俗称不可变的列表,又被成为只读列表,元组是一种不可变数据类型,元组也是python的基本数据类型之一, 用小括号()括起来,使用逗号分隔,里面可以放任何数据类型的数据, 查询可以. 循环也可以. 切片也可以. 但就是不能改。
tu = ('林志颖', '张学友', '刘德华', '张柏芝', '黄家驹', '周杰伦', '张学友') print(tu) tu[1] = '黄家驹' # TypeError: 'tuple' object does not support item assignment
小括号在计算机里还表示算数优先级:
print((8 + 4) * 8) # 96 tu = () # 空元组 print(tu,type(tu)) # () <class 'tuple'> # (1) 是否是元组 ??? tu = (1) print(tu,type(tu)) # 1 <class 'int'> tu = (1,) # 加了逗号就是元组 print(tu,type(tu)) # (1,) <class 'tuple'> # 空元组 lst = list() # 空列表 print(lst) tu = tuple() # print(tu)
2:元组的索引与切片:
# 索引与切片 tu = ('林志颖', '张学友', '刘德华', '张柏芝', '黄家驹', '周杰伦', '张学友') print(tu[2]) # 刘德华 print(tu[-2]) # 周杰伦 print(tu[1:5:2]) # 1,3位的, ('张学友', '张柏芝') print(tu[5:1:-2]) # 5,3位的, ('周杰伦', '张柏芝') print(tu[-1:-5:-2]) # -1,-3位的,('张学友', '黄家驹')
3:元组的增删改查:
元组是一种不可变的数据类型,是不可变的数据类型,因此不能对其进行增,改操作,删操作是删除整个元组:
tu = ('林志颖', '张学友', '刘德华', '张柏芝', '黄家驹', '周杰伦', '张学友') # tu[0] = '刘德华' # TypeError: 'tuple' object does not support item assignment del tu # 删除整个元组 print(tu) # 已经删除了,NameError: name 'tu' is not defined
关于不可变, 注意: 这里元组的不可变的意思是子元素不可变。而子元素内部的子元素是可以变, 这取决于子元素是否是可变对象。
元组中如果只有一个元素. ⼀定要添加一个逗号, 否则就不是元组。
tu = ('林志颖', ['张学友', '刘德华', '张柏芝'], '黄家驹', '周杰伦', '张学友') print(tu) print(type(tu[1])) # <class 'list'> tu[1][0] = '周杰伦' # 修改成功,因为tu[1] 是一个列表 print(tu) tu = (1,) print(tu,type(tu)) # (1,) <class 'tuple'>
元组的查询(遍历)
tu = ('林志颖', ['张学友', '刘德华', '张柏芝'], '黄家驹', '周杰伦', '张学友') for item in tu: print(item) for index,item in enumerate(tu): print(index,item)
4:元组运算符:
与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组。
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 | 迭代 |
5:元组运算符:
元组的内置函数
序号 | 方法及描述 |
---|---|
1 | cmp(tuple1, tuple2) 比较两个元组元素。 |
2 | len(tuple) 计算元组元素个数。 |
3 | max(tuple) 返回元组中元素最大值。 |
4 | min(tuple) 返回元组中元素最小值。 |
5 | tuple(seq) 将列表转换为元组。 |