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

Python多重分配和参考

贡俊
2023-03-14
问题内容

为什么多重赋值为int而不是列表或其他对象提供不同的引用?

>>> a = b = 1
>>> a += 1
>>> a is b
>>>     False
>>> a = b = [1]
>>> a.append(1)
>>> a is b
>>>     True

问题答案:

在int示例中,您首先将a和分配了相同的对象b,然后a使用另一个对象(的结果a+1)重新分配。a现在指的是另一个对象。

在列表示例中,您为a和分配了相同的对象b,但是您并没有做任何更改。append仅更改列表对象的内部状态,而不更改其标识。因此,它们保持不变。

如果替换a.append(1)a = a + [1],则最终会得到不同的对象,因为再次需要为分配一个新对象(的结果a+[1]a

请注意,这a+=[1]会有所不同,但这是另一个问题。



 类似资料:
  • 问题内容: 以下Python表达式之间有什么区别: 第一给出的结果与第二给出的结果不同。 例如, 第一: 第二: y是第一的 3 和第二的 4 问题答案: 在赋值语句中,总是在对变量进行实际设置之前先对右侧进行全面评估。所以, 评估板y(我们称之为的结果),评估(呼叫),然后设置要和y到。也就是说,就像 相比之下, 设置x为y,然后设置,因此等效于

  • 问题内容: 我在python中使用队列时,即使代码对我来说看起来很完美,但我仍然在代码中出现错误,但是后来当我突然更改赋值样式时,代码开始工作。该代码看起来像以前一样。 后来我改变了这个,它开始工作 为什么两个代码的工作方式不同? 问题答案: Python中的变量是引用或名称,不像C中的变量等。 这段代码: 表示“允许名称引用通过调用在内存中创建的对象,并允许该名称引用指向的对象。” 这意味着两个

  • 因此,我昨天开始了一个问题:基于同一行中的值的多个pandas赋值,我想知道如何对一行数据进行排序,并将排序分配给同一行中的不同列。我已经按照Ed Chum的建议解决了这个问题:如何一次将一个函数应用于pandas数据帧中的多个列。 它确实起作用了,但我注意到我在这一过程中创建了错误的列。一旦我修复了这个bug,它就不再工作了。。。。 因此,我尝试在一个玩具示例上重现这个问题,但在玩具示例上也不起

  • 问题内容: 我正在寻找使用for循环来创建多个在迭代(i)上命名的变量,并为每个变量分配一个唯一的int。 如您所见,我迷路了。理想情况下,我正在寻找输出 有什么建议? 问题答案: 您可以一站式完成所有操作 然后您可以使用 但是使用列表而不是字典可能更好 然后您可以使用 甚至(获得前三个学期)

  • 问题内容: 我目前正在做一个包含多重匹配和功能得分的查询。JSON的重要部分如下所示: 但是,我也想包括不一定与查询匹配但具有大于0的特定数值的结果。我认为布尔查询可以做到这一点,但是我不知道如何将布尔查询与功能分数查询。 我知道多重匹配查询只是布尔查询的简写,我可以将多重匹配查询扩展到其布尔匹配部分,但是,我不知道如何在其中进行功能评分。 有任何想法吗?顺便说一下,我的版本是1.1.0。 问题答

  • 问题内容: 我注意到当我运行高度依赖CPU的python程序时,它仅使用一个内核。运行该程序时是否可以为其分配多个内核? 问题答案: 您必须为多个内核进行显式编程。有关Python中的许多并行处理解决方案,请参见此页面上的“对称多处理”选项。如果您不愿意比较这些选项,那么并行Python是一个不错的选择,请查看此处的示例。 但是,有些问题不能利用多核。考虑一下如何在三个朋友的帮助下更快地上楼梯。不