2015-06-14 44 views
2

我看到有人在线写了一个有趣的python行,但无法理解它为什么起作用。因此,我们可以尝试在Python解释器下面几行:Python + =带有列表和元组

s=[1] 
s=s+(1,-1) 

这将导致一个错误“类型错误:只能串联列表(不是‘元组’),列出”。但是,如果以另一种方式进行:

s=[1] 
s+=(1,-1) 

将导致S = [1,1,-1]

所以我用思想X = X + Y等于X + = Y,有人可以告诉我他们是如何不同以及为什么第二种方式有效?提前致谢。

+0

第一个重复的不回答这个问题 - 它问为什么'+ ='改变列表。第二种更适用,尽管解释“为什么”的唯一真正尝试是与对称性有关。 – hpaulj

回答

1

代替+=使用list.extend

s = [1] 
s.extend((1,-1)) 
+0

你的答案并不遥远。它看起来像's + = ...'实现为's.extend(tuple(...))'(或v.v)。 's + = 1,-1'起作用。 – hpaulj