>>> aList = []
>>> aList += 'chicken'
>>> aList
['c', 'h', 'i', 'c', 'k', 'e', 'n']
>>> aList = aList + 'hello'
Traceback (most recent call last):
File "<pyshell#16>", line 1, in <module>
aList = aList + 'hello'
TypeError: can only concatenate list (not "str") to list
我不明白为什么要做list += (something)
和list = list + (something)
做不同的事情。另外,为什么+=
将字符串拆分为要插入列表的字符?
答案 0 :(得分:5)
list.__iadd__()
可以进行任何迭代;它迭代它并将每个元素添加到列表中,这导致将字符串拆分为单个字母。 list.__add__()
只能列出一个列表。
答案 1 :(得分:5)
aList += 'chicken'
是aList.extend('chicken')
的python简写。 a += b
和a = a + b
之间的区别在于python尝试在调用iadd
之前使用+=
调用add
。这意味着alist += foo
将适用于任何可迭代的foo。
>>> a = []
>>> a += 'asf'
>>> a
['a', 's', 'f']
>>> a += (1, 2)
>>> a
['a', 's', 'f', 1, 2]
>>> d = {3:4}
>>> a += d
>>> a
['a', 's', 'f', 1, 2, 3]
>>> a = a + d
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: can only concatenate list (not "dict") to list
答案 2 :(得分:1)
要解决您的问题,您需要将列表添加到列表中,而不是将字符串添加到列表中。
试试这个:
a = []
a += ["chicken"]
a += ["dog"]
a = a + ["cat"]
请注意,它们都按预期工作。