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

list .__ iadd__和list .__ add__的不同行为

赫连黎昕
2023-03-14
问题内容

考虑以下代码:

>>> x = y = [1, 2, 3, 4]
>>> x += [4]
>>> x
[1, 2, 3, 4, 4]
>>> y
[1, 2, 3, 4, 4]

然后考虑一下:

>>> x = y = [1, 2, 3, 4]
>>> x = x + [4]
>>> x
[1, 2, 3, 4, 4]
>>> y
[1, 2, 3, 4]

为什么这两个有区别?

(是的,我尝试搜索此内容)。


问题答案:

__iadd__更改列表,然后__add__返回一个 列表,如所示。

x += y第一次尝试调用的表达式__iadd__,如果失败,将__add__在赋值之后调用(请参见Sven的评论进行较小的更正)。从那时list起,__iadd__它就完成了这一点’o突变魔术。



 类似资料:
  • 由于某些原因,我无法理解如何使用流将这个深度嵌套的列表转换为新的列表。 我尝试了很多不同的迭代,比如:

  • 问题内容: 下面的行给我错误: 是什么原因? 编辑 我知道如果我将第二个ArrayList更改为List,它不会给我错误。我想知道错误的原因。谢谢 问题答案: 如果您有一个,则可以向其中添加一个。但您不能这样做,因此后者可能不是的一种。

  • Rotate List 描述 Given a list, rotate the list to the right by k places, where k is non-negative. For example: Given 1->2->3->4->5->nullptr and k = 2, return 4->5->1->2->3->nullptr. 分析 先遍历一遍,得出链表长度len,注

  • Reorder List 描述 Given a singly linked list $$L: L0 \rightarrow L_1 \rightarrow \cdots \rightarrow L{n-1} \rightarrow Ln$$, reorder it to: $$L_0 \rightarrow L_n \rightarrow L_1 \rightarrow L{n-1} \righ

  • Partition List 描述 Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x. You should preserve the original relative order of the n

  • 之前我们学习了字符串,整数,浮点数几种基本数据类型,现在我们接着学习两种新的数据类型,列表(List)和元组(tuple)。 目录