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]
相关推荐
许彰午35 分钟前
72_Python爬虫基础BeautifulSoup
爬虫·python·beautifulsoup
zhanghongyi_cpp1 小时前
10. 实验书3.4.2 筛选达到预警阈值的病虫害数据
python
tuddy7894641 小时前
Codex++ 安全边界探秘:从模型能力到风险防御
人工智能·python·安全
C++、Java和Python的菜鸟2 小时前
第1章 集合高级
java·jvm·python
梦帮科技2 小时前
UE5 GAS 实战:用 Gameplay Ability System 搭建「赛博修真」境界与技能体系
c++·人工智能·python·ue5·c#
码来的小朋友3 小时前
手把手教你用 Python + PyQt5 做一个可视化图片切图工具
开发语言·python·microsoft
weixin199701080163 小时前
[特殊字符]《京东订单API(jd.order.detail.get)对接ERP:企业认证+OAuth授权避坑指南》(附Python源码)
java·数据库·python
云烟成雨TD3 小时前
LangFlow 1.x 系列【3】入门案例
人工智能·python·agent
创世宇图3 小时前
【Python工程化实战】Python 服务的结构化日志体系:structlog + JSON 输出 + 日志分级策略
python·elk·structlog·结构化日志·可观测性
创世宇图4 小时前
【Python工程化实战】Kubernetes 中 Python 应用的优雅启停与健康检查:零停机滚动更新实战
python·云原生·kubernetes·优雅停机