元组
Python 的元组与列表类似,不同之处在于元组的元素不能修改。
元组使用小括号 ( ),列表使用方括号 [ ]。
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可
创建一个元组
A = (1,2,'python','happy') #括号内可不输入内容,即为空元组 B = 1,2,3,'nice' #不用加括号也可以 print(A) print(B)
print(type(A))
A = (1) 定义的不是tuple,是1这个数!这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1
A = (1) #不加逗号是整型 B = (2,) #加了逗号是元组 print(type(A)) print(type(B))
索引(和列表一样有正反索引)
A = (1,2,3,'python','happy') for i in range(5): print(A[i]) #遍历输出A[0]、A[1]、A[2]、A[3]、A[4]
A = (1,2,3,'python','happy') print(A[-1]) print(A[-2]) print(A[-3]) print(A[-4]) print(A[-5])
访问元组
A = (1,2,3,'python','happy') print(A[1:3]) #实际指A[1]到A[2](不包括A[3]) print(A[:3]) #不填写默认从A[0]开始 print(A[1:]) #从A[1]开始截取所有元素 print(A[:]) print(A[1:-1]) print(A[-1:3]) #倒着取输出空 print(A[-1:-3])
元组中的元素是不可进行修改和删除的(实质是元组所指向的内存中的内容不可变)
A = (1,2,3,'python','happy') A[1]=8
不支持修改元组
我们重建一个元组试试
A = (1,2,3,'python','happy') print(id(A)) A = (1,2,3,'python') print(id(A))
结论:从以上实例可以看出,重新赋值的元组 tup,绑定到新的对象了,不是修改了原来的对象
补充例子:
A = (1,2,['a','b']) A[2][0]='X' A[2][1]='y' print(A)
这个元组A定义的时候有3个元素,分别是1,2和一个list(列表)。不是说元组一旦定义后就不可变了吗?怎么后来又变了?
我们先看看定义的时候元组A包含的3个元素:当我们把list的元素'a'和'b'修改为'X'和'Y'后,表面上看,A的元素确实变了,但其实变的不是A的元素,而是list的元素。元组A一开始指向的list并没有改成别的list,所以,元组所谓的"不变"是说,元组的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!理解了"指向不变"后,要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变
不能删除元组中的元素,但我们可以使用del方法删除整个元组
A = (1,2,3,'python','happy') print(A) del A print(A) #元组删除后,输出会有异常信息
不能修改元组内的元素,但可以进行拼接元组
A = (1,2,3,'python','happy') B = (6,5) print(A+B)
元组运算符
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 | 迭代 |
元组的内置函数
1 | len(tuple) 计算元组元素个数。 |
>>> tuple1 = ('Google', 'Runoob', 'Taobao')
>>> len(tuple1)
3
>>>
|
2 | max(tuple) 返回元组中元素最大值。 |
>>> tuple2 = ('5', '4', '8')
>>> max(tuple2)
'8'
>>>
|
3 | min(tuple) 返回元组中元素最小值。 |
>>> tuple2 = ('5', '4', '8')
>>> min(tuple2)
'4'
>>>
|
4 | tuple(iterable) 将可迭代系列转换为元组。 |
>>> list1= ['Google', 'Taobao', 'Runoob', 'Baidu']
>>> tuple1=tuple(list1)
>>> tuple1
('Google', 'Taobao', 'Runoob', 'Baidu')
|