本文记录了一些本人想记录的学习要点
目录
- 1.元组
- 2.元组的更新
- 3.解压元组
- 3.1 解压中的不屑一顾——用通配符「*」
1.元组
(元素1, 元素2, …, 元素n)
创建元组时,是使用小括号(与列表的创建区别开),元素为任意类型的数据
x = (1, 10.31, 'python'), ('data', 11)
print(x)
# ((1, 10.31, 'python'), ('data', 11))
print(x[0])
# (1, 10.31, 'python')
print(x[0][0], x[0][1], x[0][2])
# 1 10.31 python
2.元组的更新
元组是不可变数据类型,不可变数据类型的定义如下:
不可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型。
可变数据类型 :当该数据类型的对应变量的值发生了改变,那么它对应的内存地址不发生改变,对于这种数据类型,就称可变数据类型。
所以当元组创建的时候才可以给它赋值,否则在创建好元组后再赋值会出现报错的情况。但是还有一种情况,当元素是可变数据类型时,可对元素的值进行更改。
原则便是元组在创建时就分配好元素所需的地址,后续不可更改,以地址是否变换来作更新标准
情况1: 赋值会造成地址的改变,所以报错
t1 = (1, 2, 3, [4, 5, 6])
print(t1) # (1, 2, 3, [4, 5, 6])
t1[2] = 8 #报错——TypeError: 'tuple' object does not support item assignment
print(t1) # (1, 2, 3, [9, 5, 6])
情况2:元素是可变数据类型时,未改变其地址,可对元素里的内容进行更改。但不能对其空间作更改如扩大或压缩,这里对应的是扩大或压缩列表中元素的个数
t1 = (1, 2, 3, [4, 5, 6])
print(t1) # (1, 2, 3, [4, 5, 6])#列表可变数据类型
t1[3][0] = 9
print(t1) # (1, 2, 3, [9, 5, 6])
3.解压元组
解压,我对它的理解——解除扣押(解锁),给自由。因为元组是不可变数据类型,通过解压,对它的元素内容对一个释放(转移)
解压时需讲究一一对应
t = (1, 10.31, ('OK', 'python'))
(a, b, (c, d)) = t #或者 a, b, (c, d) = t
print(a, b, c, d)
# 1 10.31 OK python
3.1 解压中的不屑一顾——用通配符「*」
情况1:将某些元素解压到指定的元素——*元素名
t = 1, 2, 3, 4, 5
a, b, *drip, c = t
a, b, *throw, c = t
print(a, b, c) # 1 2 5
print(drip) # [3, 4]
print(throw) # [3, 4]
情况2:直接忽略某些元素——*_
t = 1, 2, 3, 4, 5
a, b, *_ = t #后续的3,4,5被忽略,没有解压
print(a, b) # 1 2