栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python内联增加多个变量

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python内联增加多个变量

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

引用扩充作业文档:

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

强调我的。

就地扩展分配从转换

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

引擎盖下,增量赋值是二进制运算符(的一个特例

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

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

x -= 1y -= 2

或者,如果您真的很想弄乱,请使用

operator
模块并
zip()
应用于
operator.isub
组合(通过
itertools.starmap()
,然后使用元组分配:

from operator import subfrom itertools import starmapx, y = starmap(operator.isub, zip((x, y), (1, 2)))

此处

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

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

x, y = (val - delta for val, delta in zip((x, y), (1, 2)))


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/624062.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号