Python:多变量赋值

相关文章

Python专栏https://blog.csdn.net/weixin_45791458/category_12403403.html?spm=1001.2014.3001.5482


Python中的赋值语句可以同时对多个变量进行对象绑定(赋值),既可以是多变量链式赋值,也可以是多变量平行赋值,如下所示。

a, b, c = 1, 2, 3 #多变量平行赋值
a = b = c = 1     #多变量链式赋值

一般情况下平行赋值时需要保证赋值号右端的表达式项数等于左侧的目标列表项数,否则会报错ValueError: too many values to unpack,但是也有特殊情况,这成为加星星目标。

如果目标列表包含一个带有星号前缀的目标,这称为"加星"目标:则该对象必须是至少有''目标列表项数减一''项数的可迭代对象。 该可迭代对象前面的项将按从左至右的顺序被赋值给加星目标之前的目标。 该可迭代对象末尾的项将被赋值给加星目标之后的目标。 然后该可迭代对象中剩余项的列表将被赋值给加星目标(该列表可以为空),如下例所示。

a, b, *c = 1, 2, 3, 4 #a被赋值为1,b被赋值为2,c被赋值为[3, 4]
a, b, *c, d = 1, 2, 3,4, 5 #a被赋值为1,b被赋值为2,b被赋值为3,d被赋值为[4, 5]

在Python中还可以解包赋值,此时也需要保证右端的可迭代对象的项数等于左侧的目标列表项数(其实对于赋值号右边有多个表达式的情况,会返回一个包含各表达式的元组),如下例所示,这里同样可以使用加星目标。

a, b, c = [1, 2, 3] #a被赋值为1,b被赋值为2,c被赋值为3
d, e, f = (4, 5, 6) #d被赋值为4,e被赋值为5,f被赋值为6
g, h, *i = [7, 8, 9, 10] #g被赋值为7,h被赋值为8,i被赋值为[9, 10]
相关推荐
_可乐无糖12 分钟前
深度解析 pytest 参数化与 --count 执行顺序的奥秘
android·python·ui·ios·appium·自动化·pytest
Wzt_blog27 分钟前
LLM实现视频切片&合成 前沿知识调研
python·音视频
不是二师兄的八戒1 小时前
深入学习 Python 爬虫:从基础到实战
python
zhonguncle1 小时前
像JSONDecodeError: Extra data: line 2 column 1 (char 134)这样的问题怎么解决
python·json
纪伊路上盛名在2 小时前
在vscode中使用R-1
开发语言·ide·vscode·python·jupyter·r语言·编辑器
棱角°2 小时前
自动连接校园网wifi脚本实践(自动网页认证)
python·自动化
一只小菜鸡3 小时前
python+django+elasticsearch实现自动化部署平台构建日志记录(前端vue-element展示)
前端·python·django
不是二师兄的八戒3 小时前
Python Selenium 库学习指南
python·selenium
网安CILLE4 小时前
2025年——【寒假】自学黑客计划(网络安全)
linux·网络·python·安全·web安全·网络安全·ddos
立秋67894 小时前
自动化日常任务:使用Python和PyAutoGUI打开记事本并保存文本
python·自动化