2012-11-11 23 views
20

Diciamo che ho queste assegnazioni:List + = Tuple vs List = Lista + Tuple

points = [] 
point = (1, 2) 

Come mai quando faccio questo:

points += point 

Funziona completamente bene, e mi dà punti = [1, 2]. Tuttavia, se faccio qualcosa di simile:

points = points + point 

mi dà un TypeError: può solo concatenare lista (non "tuple") per elencare. Non sono queste affermazioni la stessa cosa, però?

risposta

20

La differenza è che list += equivale a list.extend(), che prende qualsiasi iterabile e estende l'elenco, funziona come una tupla è un iterabile. (E estende la lista sul posto).

D'altra parte, il secondo assegna un nuovo elenco di points, e tenta di concatenare una lista per una tupla, che non è fatto come non è chiaro quali sono i risultati attesi è (lista o tupla?).