您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python内联增加多个变量

Python内联增加多个变量

您不能在多个目标上使用增强分配语句。

引用扩充作业文档

由扩展赋值语句完成的赋值与普通赋值的处理方式相同。类似地,除了可能 的就地 行为外,通过扩充分配执行的二进制操作与正常的二进制操作相同。

强调我的。

就地扩展分配从转换target -= expressiontarget = target.__isub__(expression)__i...__每个操作员都有相应的钩子),并且不支持将该操作转换为多个目标。

引擎盖下,增量赋值是二进制运算符(的一个特例+*-等等), 的分配。因为实现是基于那些运算符的,而二进制运算符只有两个操作数,所以原始实现建议中永远不会包含多个目标。

您只需要简单地分别应用分配:

x -= 1
y -= 2

或者,如果您真的很想弄乱,请使用operator模块并zip()应用于operator.isub组合(通过itertools.starmap(),然后使用元组分配:

from operator import sub
from itertools import starmap

x, y = starmap(operator.isub, zip((x, y), (1, 2)))

此处isub将确保调用正确的钩子,以对支持它的可变类型进行就地减法。

或者,如果要处理不支持就地操作的类型,则使用生成器表达式就足够了:

x, y = (val - delta for val, delta in zip((x, y), (1, 2)))
python 2022/1/1 18:28:29 有191人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶