Python在一行中实际上分配多个变量的实际步骤是什么?
我过去经常做A [0],A [1] = A [1],A [0]交换,但是最近我在分配链接列表时遇到了一个错误。
# insert self->node->...
def insert_next(self, node):
node.next, node.prev = self.next, self
self.next, self.next.prev = node, node
self.next
变得node
早于我的预期,所以分配成为
self.next, node.next = node, node
但是,如果我这样做
self.next.prev, self.next = node, node
有用!
我“假设”步骤是
1. cache values at the right side
2. assign to left side one by one, left to right
不
1. cache values at the right side
2. cache the ref at the left side
2. assign to ref one by one, left to right
那么,这些步骤是什么?
Python中有一种叫做“扩展分配”的东西。
长话短说,您可以通过任务扩展迭代。例如,以下代码评估并扩展右侧(实际上是一个元组)并将其分配给左侧:
a, b = 3, 5
要么
tup = (3, 5)
a, b = tup
这意味着在Python中,您可以用一行交换两个变量:
a, b = b, a
它评估右侧,创建一个元组(b, a)
,然后展开该元组并分配给左侧。
有一个特殊的规则,即 如果左侧变量中的任何一个“重叠”,则赋值从左到右进行 。
i = 0
l = [1, 3, 5, 7]
i, l[i] = 2, 0 # l == [1, 3, 0, 7] instead of [0, 3, 5, 7]
所以在您的代码中
node.next, node.prev = self.next, self
该分配是并行的,node.next
并且node.prev
不要“重叠”。但是对于下一行:
self.next, self.next.prev = node, node
作为self.next.prev
依赖于self.next
,它们“重叠”,从而self.next
首先被分配。
问题内容: Python如何将多个变量与一个值进行比较?,例如: 我希望返回一个列表: 问题答案: 方法1 方法2 使用元组或列表 方法3 最好是使用set集合
因此,我昨天开始了一个问题:基于同一行中的值的多个pandas赋值,我想知道如何对一行数据进行排序,并将排序分配给同一行中的不同列。我已经按照Ed Chum的建议解决了这个问题:如何一次将一个函数应用于pandas数据帧中的多个列。 它确实起作用了,但我注意到我在这一过程中创建了错误的列。一旦我修复了这个bug,它就不再工作了。。。。 因此,我尝试在一个玩具示例上重现这个问题,但在玩具示例上也不起
问题内容: 好的。所以我的问题很简单:如何在Python中使用eval分配变量的值?我试过了,但是那行不通。它返回一个SyntaxError。为什么不起作用? 问题答案: 因为是语句,而不是表达式。使用运行语句。 顺便说一下,有许多方法可以避免使用/,如果您只需要分配一个动态名称,例如可以使用字典,函数, 或 字典 : 更新 :尽管上面的代码在REPL中可以使用,但在函数内部则无法使用。如果没有其
各位早上好,我正在创建一个产品销售系统,这个话题会有点长,因为我想好好解释一下。 正在用Vaadin+MySQL+springboot+Maven开发的系统 在主屏幕上,我们有一个网格,上面有“新建”、“更改”和“删除”按钮: 当点击new按钮时,将打开一个窗口,开始“销售”产品: 这里的问题是这样的,当我点击“+项”时会出现以下情况: 问题:创建了一个滚动条(在窗口的右边),保存、关闭和+项按钮
问题内容: 我在Javascript中有一组全局计数器变量: 等等 然后,我有了一个Javascript函数,该函数接受一个映射到这些全局计数器的“索引”数字。在此函数内部,我需要使用传递给该函数的“索引”值来读写这些全局计数器。 我希望它如何工作的示例,但当然根本不起作用: 我希望我要实现的目标是明确的。如果没有,我会尽力澄清。谢谢。 编辑说明: 我不是要增加计数器的名称,而是要增加计数器包含的
问题内容: 我有: 我想把这些陈述变成几句话。 问题答案: 否。附加整个序列的方法是。