请在python [duplicate]中指定这两行的区别

a64a0gku  于 2023-01-22  发布在  Python
关注(0)|答案(1)|浏览(86)
    • 此问题在此处已有答案**:

How are Python in-place operator functions different than the standard operator functions?(2个答案)
2天前关闭。
声明

lst = []

python中这两行代码的区别是什么?为什么第一行可以工作,另一行不行

lst += 'a' # this line is working
lst = lst + 'a' # but this line is showing error 'can only concatenate list (not "str") to list'

不理解为什么这两个语句会给出不同的结果

iqxoj9l9

iqxoj9l91#

在一个列表中,+=extend是一样的,这个参数被看作是一个可迭代的,所以它对字符串进行迭代并将其相加,但是在一般情况下,它是不正确的,例如长度大于1的字符串。

>>> lst = []
>>> lst += "ab"
>>> lst
['a', 'b']  # not what is expected probably

或者加上一个整数

>>> lst += 0
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
TypeError: 'int' object is not iterable

另一方面,在lst + <right term>中,正确的项应该是一个列表,即使是tuple也会以错误结束。
在您的情况下,最佳解决方案是

lst += ['a']

lst.append('a')

这避免了创建列表只是为了将其添加到第一个列表。
顺便说一句,

lst = lst + other_list
  • 不同于 *
lst += other_list

因为它在具有添加的other_list的旧列表的副本上重新分配lst名称。

  • 最好注意,如果其他变量仍在引用旧的lst
  • 加上表演受到旧内容复制的影响。

相关问题