将字符串添加到列表中

joa*_*uin 8 python string list

>>> b = []
>>> c = '1234'
>>> b += c
>>> b
['1', '2', '3', '4']
>>> 
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?这应该不行,对吗?还是我错过了一些明显的东西?

>>> b = []
>>> c = '1234'
>>> b + c
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    b + c
TypeError: can only concatenate list (not "str") to list
>>> 
Run Code Online (Sandbox Code Playgroud)

然后a += b 并不总是等同于a = a + b

NPE*_*NPE 14

字符串是可迭代的:元素是字符串的字符.将iterable添加到列表时,iterable的元素将附加到列表中.

以下任何一个都会执行您期望的操作(即附加字符串,而不是使用字符串的字符扩展列表):

b += [c]
Run Code Online (Sandbox Code Playgroud)

要么

b.append(c)
Run Code Online (Sandbox Code Playgroud)


Tim*_*ker 10

+=运营商扩展列表,而不是附加给它:

>>> b = []
>>> c = "1234"
>>> b.append(c)
>>> b
['1234']
>>> b.extend(c)
>>> b
['1234', '1', '2', '3', '4']
>>> b += c
>>> b
['1234', '1', '2', '3', '4', '1', '2', '3', '4']
>>> b += [c]
>>> b
['1234', '1', '2', '3', '4', '1', '2', '3', '4', '1234']
Run Code Online (Sandbox Code Playgroud)


rob*_*off 2

字符串是字符序列。列表操作+=采用任何序列并将序列的每个元素附加到列表中。

(实际上+=接受任何可迭代的。)

  • “+”是与“+=”不同的运算符。 (2认同)