2011-09-28 64 views
2
In [26]: l=[] 

In [27]: s="asdsad" 

In [28]: l+=s 

In [29]: l 
Out[29]: ['a', 's', 'd', 's', 'a', 'd'] 

然而,不一致的Python加上操作者

In [30]: l+s 
--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 

/home/xiaohan/code/proteincrawler/id_crawler.py in <module>() 
----> 1 
     2 
     3 
     4 
     5 

TypeError: can only concatenate list (not "str") to list 

所以,+運營商在 '+ =' 和 '+' 是不同的。

但我認爲他們應該是一樣的,因爲他們都是

我錯了或有事幕後?

+0

從文章中「彈出」的唯一區別在於,在第二個加號運算符中,您沒有將結果賦值給變量。這是翻譯與操作:打印(l + s),也許,這弄亂了整個事情。你有沒有嘗試將l + s分配給一個新的變量? – DonCallisto

+4

@DonCallisto完全錯誤。 – agf

回答

8

這是解釋here。從鏈接複製:

這是因爲+=運營商正在做調用extend方法,它把它的參數作爲一個通用序列等價的,不強制類型。