13
>>> 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)aとlist = list + (something)が異なることを行う理由がわかりません。+=また、リストに挿入する文字列を文字に分割するのはなぜですか?

4

3 に答える 3

5

list.__iadd__()任意のイテラブルを取ることができます。それを繰り返し処理し、各要素をリストに追加します。これにより、文字列が個々の文字に分割されます。list.__add__()リストを取ることしかできません。

于 2012-04-13T23:35:44.210 に答える
5

aList += 'chicken'の python 短縮形ですaList.extend('chicken')a += bとの違いa = a + bは、python が を呼び出す前にiaddwithを呼び出そうとすることです。これは、反復可能な foo に対して機能することを意味します。+=addalist += 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
于 2012-04-13T23:35:58.790 に答える
1

問題を解決するには、文字列をリストに追加するのではなく、リストをリストに追加する必要があります。

これを試して:

a = []
a += ["chicken"]
a += ["dog"]
a = a + ["cat"]

それらはすべて期待どおりに機能することに注意してください。

于 2012-04-13T23:39:22.327 に答える