Python Cookbook学习笔记
1.1 复杂变量的拆分赋值
1.1.1 通用知识
- 关键点
- 变量不需要事先声明, 赋值即声明了变量
- 未声明(赋值)的变量调用时会出错
1.1.2 参数的拆分
使用多个参数来拆分一个复杂的数据类型。
- 注意事项
- 赋值左侧的变量个数与右侧的对象的数据个数要严格一致,不能多也不能少
- 错误示范1:
d = [1,2,3,4,5] _, a, b = d #传入参数过少 print(a,b)
- 错误示范2:
d = [1,2,3,4,5] _, a, b, c, d, e = d #传入参数过多 print(a,b)
- 个人观点:数值个数不能预知的数据类型,使用拆分的方式容易出错,需要谨慎使用。
- 赋值左侧的变量个数与右侧的对象的数据个数要严格一致,不能多也不能少
1.1.2.1 拆分元组
x, y = (4,5)
print(x)
print(y)
1.1.2.2 拆分字典
d = [4,5]
x, y = d
print('x:', x, 'y', y)
1.1.3 拆分字符串
s = 'abc'
a,b,c = s
print('a: ', a, "b: ", b, "c: ", c)
1.1.4 丢弃部分值
如果不元组、字典等有5个值,但只想取中间的3个,则使用“_”忽略
d = [1,2,3,4,5]
_, a, b, c, _ = d
print(a,b,c)
1.1.5 不确定值个数的数据拆分
当待拆分的数据值个数不确定时,如果不想取某些部分的值,可以将这部分丢到列表中。
- 只取第1,2个值
d = [1,2,3,4,5]
a,b,*c = d # *c表示像其他值都丢到c中。
print(a,b, c)
- 取首尾值
d = (1,2,3,4,5)
a, *b, c = d
print(a, c)
- 取末尾两个值
d = (1,2,3,4,5)
*a, b, c = d
print(b, c)
- 还可以使用*args丢到函数参数里,类似于一个参数压缩包,让函数参数自己去拆
d = (1,2,3,4,5)
*a, b, c, d = d
print(b, c)
def test(a, b):
print("a is: ", a, ", b is: ", b)
test(*a)
1.1.6 拆分支持嵌套
如果元组中存在元组,拆分时可以进行嵌套拆分,如下所示
l = (1, 2, 3, (4, 5))
a, *_, (*_, b) = l # 第1个*_丢弃外层的多余元素,第2个*_丢弃第2层的多余元素。
print(a, b)
🕮说明:丢弃的元素,一般使用"_", 或"ign"变量名承接。
作者声明:本文用于记录和分享作者的学习心得,水平有限,难免存在表达错误,欢迎交流和指教!
Copyright © 2022~2024 All rights reserved.