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]
相关推荐
2301_7903009622 分钟前
Python深度学习入门:TensorFlow 2.0/Keras实战
jvm·数据库·python
程序员敲代码吗2 小时前
用Python生成艺术:分形与算法绘图
jvm·数据库·python
Yyyyy123jsjs2 小时前
如何通过免费的外汇API轻松获取实时汇率数据
开发语言·python
喵手2 小时前
Python爬虫实战:GovDataMiner —— 开放数据门户数据集元数据采集器(附 CSV 导出)!
爬虫·python·爬虫实战·python爬虫工程化实战·零基础python爬虫教学·open data·开放数据门户数据集列表
历程里程碑2 小时前
滑动窗口---- 无重复字符的最长子串
java·数据结构·c++·python·算法·leetcode·django
人工智能AI技术3 小时前
【Agent从入门到实践】43 接口封装:将Agent封装为API服务,供其他系统调用
人工智能·python
Darkershadow3 小时前
蓝牙学习之Time Set
python·学习·蓝牙·ble·mesh
m0_736919104 小时前
超越Python:下一步该学什么编程语言?
jvm·数据库·python
学习中的DGR4 小时前
[极客大挑战 2019]Http 1 新手解题过程
网络·python·网络协议·安全·http