【问题标题】:python - Why does the += operator with lists is able to append a string but not list = list + "stri" [duplicate]python - 为什么带有列表的 += 运算符能够附加字符串但不能附加字符串 list = list +“stri” [重复]
【发布时间】:2022-01-12 13:42:54
【问题描述】:
l = list()

l = l + "string" #throws error
l += "string" #works

我只是想知道为什么自从我们被教导l = l + "something" 以来这种奇怪的行为与l += "something" 相同。

【问题讨论】:

  • 好吧,唯一明智的结论是:这些不一样,有人教错了。事实上,+ 仅适用于列表,而 += 则适用于任何可迭代对象。没有太多要说的了。
  • 看看l的内容,你可能会有更好的主意...
  • l += x 仅在 l.__iadd__ 未定义或定义为等同于 l.__add__ 时等同于 l = l + x
  • 您的标题不准确。您不能使用+= 附加字符串;添加到列表中的不是整个字符串,而是字符串中的每个字符。
  • "我们被教导 l = l + "something"l += "something" 相同"你被错误地教导。

标签: python list


【解决方案1】:

+ 添加到列表时需要一个列表。

+= 仅在更新列表时需要 iterablestr 值(无论好坏)是一个可迭代的单字符串,因此

l += "string"

导致's''t''r' 等附加到l+= 运算符或多或少等同于

l.extend("string")

【讨论】:

  • 这不是“或多或少等价”,它是一样的。
  • l.extend(...) 是一个表达式语句,它也产生值Nonel += ... 是一个赋值语句,没有自己的值。
  • 可以(虽然我无法想象我为什么要这样做)写print(l.extend(...)),但print(l += ...)是一个语法错误。
  • 好吧,除了那些挑剔的细节外,就列表而言,它们是the same operation。 ;)
猜你喜欢
  • 2015-05-31
  • 2014-10-10
  • 2016-04-18
  • 2012-12-05
  • 2012-09-14
  • 2018-04-12
  • 2018-09-13
  • 2011-11-11
  • 1970-01-01
相关资源
最近更新 更多