如何解决清单上的Python append与+运算符,为什么它们给出不同的结果?
解释“为什么”:
该+
操作将数组元素添加到原始数组。该array.append
操作将数组(或任何对象)插入原始数组的末尾,从而导致对该点的self引用 (因此无限递归)。
此处的区别在于,通过连接元素来添加数组时,+操作的作用是特定的(与其他数组一样重载,请参见本章的序列)。但是,append- method确实按照您的要求进行操作:将对象附加在您赋予它的右侧(数组或任何其他对象),而不是获取其元素。
替代
使用extend()
,如果你想使用的作用类似于+运算符的功能(如其他人在这里显示为好)。相反,这样做是不明智的:尝试使用+运算符模仿列表的追加(有关原因,请参阅我之前的链接)。
小历史
有趣的是,有一段历史:1993年2月Python中的数组模块的诞生。这也许会让您感到惊讶,但是在序列和列表出现之后才添加了数组。
解决方法
为什么这两个操作(append()
分别+
)给出不同的结果?
>>> c = [1,2,3]
>>> c
[1,3]
>>> c += c
>>> c
[1,3,1,3]
>>> c = [1,3]
>>> c.append(c)
>>> c
[1,[...]]
>>>
在最后一种情况下,实际上存在无限递归。c[-1]
和c
一样。为什么与+
操作不同?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。