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]
相关推荐
用户8356290780514 小时前
从手动编辑到代码生成:Python 助你高效创建 Word 文档
后端·python
c8i4 小时前
python中类的基本结构、特殊属性于MRO理解
python
liwulin05065 小时前
【ESP32-CAM】HELLO WORLD
python
Doris_20235 小时前
Python条件判断语句 if、elif 、else
前端·后端·python
Doris_20235 小时前
Python 模式匹配match case
前端·后端·python
这里有鱼汤6 小时前
Python量化实盘踩坑指南:分钟K线没处理好,小心直接亏钱!
后端·python·程序员
大模型真好玩6 小时前
深入浅出LangGraph AI Agent智能体开发教程(五)—LangGraph 数据分析助手智能体项目实战
人工智能·python·mcp
测试老哥6 小时前
Selenium 使用指南
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
百锦再7 小时前
[特殊字符] Python在CentOS系统执行深度指南
开发语言·python·plotly·django·centos·virtualenv·pygame
张子夜 iiii7 小时前
4步OpenCV-----扫秒身份证号
人工智能·python·opencv·计算机视觉