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]
相关推荐
Chase_______8 分钟前
Java 基础语言 ③:流程控制与数组——从条件分支到数组遍历,一篇通关
java·数据库·python
深度学习lover9 分钟前
<数据集>yolo 车牌识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·车牌识别
范范@17 分钟前
day2-python基础语法
开发语言·python
编码者卢布20 分钟前
【Azure Container App】容器应用的维护窗口设置
python·azure
夏至春来-美美26 分钟前
python 使用pytest的ini配置
开发语言·python·pytest
geovindu31 分钟前
python: Mutex Pattern
开发语言·python·设计模式·互斥锁模式
C137的本贾尼35 分钟前
告别硬编码:提示词模板入门
python·langchain
m0_3722570237 分钟前
RRF和Cross-Encoder rerank怎么实现
开发语言·windows·python
Cosolar1 小时前
大模型应用开发面试 • 每日三题|Day 002|记忆(Memory)、工具使用(Tool Use)和微调(Fine-tuning)
后端·python·llm
Carl_奕然1 小时前
【智能体】Agent的四种设计模式之:Plan-and-Execute
人工智能·python·设计模式