当前位置: 首页 > 面试题库 >

Python内联增加多个变量

姚高爽
2023-03-14
问题内容

为什么这项工作

>> x, y = (1, 2)
>> print x, y
1 2

但是扩充会导致语法错误。

>> x, y -= (1, 2)
SyntaxError: illegal expression for augmented assignment

我期待有另一种方式:

>> x, y -= (1, 2)
>> print x, y
0 0

问题答案:

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

引用扩充作业文档:

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

强调我的。

就地扩展分配从转换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字符串中使用变量的干净方法。假设我想执行以下操作: 我正在寻找是否有与Perl中类似的东西来指示Python语法中的变量。 如果不是-用变量创建多行字符串的最干净方法是什么? 问题答案: 常用的方法是函数: 它可以与多行格式字符串一起正常工作: 您还可以传递带有变量的字典: 在语法上,最接近您要求的是模板字符串。例如: 我应该补充一点,尽管该功能更为常见

  • 问题内容: 所以我有四个桌子。每个表都有一个与前一个表ID相同的ID。因此,我的点击表中有一个ID和一个广告来源的ID。在广告表中,它有一个广告ID和一个来自其广告系列的ID。所以这是一个例子。 因此,要找出表4中的值从何而来,我需要遍历每个表并检查它们具有哪个ID。基本上,我想知道表1中的哪些值与表4中的值相关联。 表4中的内容是网站的访问者,表1中的内容是互联网广告。我想知道哪些访客来自哪些广

  • 问题内容: 我在Google和此站点中搜索了我的问题,但我仍然不明白该解决方案。 我有一段程序里面有一些数据。程序在大型阵列上崩溃,并显示虚拟内存不足的错误,因此我开始考虑文件。 在此之前: 之后: 我在Ubuntu上进行了测试,并通过系统监视器看到了这种内存增加。但是我很困惑,(和)参数没有变化。 问题是-实际内存使用量的指标是什么? 这是否表示真实指标是?(并且仅分配但仍未使用的内存) 问题答

  • 我试图从SSRS服务器读取报告,问题是我的内存流不能超过65536字节。 到目前为止,我已经尝试过使用内存流,但尚未成功设置其容量,然后再阅读报告本身 上面的MemoryStream必须在我读取文件之前增加它的容量。 我试过在我的应用程序中玩。配置,但我不知道从哪里开始设置内存流的字节容量

  • 操作步骤: 菜单栏: Refactor —>Inline 快捷键: Mac: option+Command + N