Escriba un error al intentar extender una lista en Python

Necesito entender por qué:

years = range(2010,2016) years.append(0) 

es posible, volviendo:

 [2010,2011,2012,2013,2014,2015,0] 

y

 years = range(2010,2016).append(0) 

o

 years = [0].extend(range(2010,2016)) 

no funciona?

Entiendo que es un error de tipo del mensaje que recibí. Pero me gustaría tener un poco más de explicaciones detrás de eso.

Está almacenando el resultado del list.append() o list.extend() ; Ambos alteran la lista en su lugar y devuelven None . No devuelven el objeto de lista de nuevo.

No almacene el resultado de None ; almacene el range() resultado, luego extienda o agregue. Alternativamente, utilice concatenación:

 years = range(2010, 2016) + [0] years = [0] + range(2010, 2016) 

Tenga en cuenta que supongo que está utilizando Python 2 (su primer ejemplo no funcionaría de otra manera). En Python 3 range() no produce una lista; tendrías que usar la función list() para convertirla en una:

 years = list(range(2010, 2016)) + [0] years = [0] + list(range(2010, 2016)) 

append operaciones de append y extend en las listas no devuelven nada (devuelva solo None ). Es por eso que years no es la lista que esperabas.

En Python 3, el range devuelve una instancia de la clase de rango y no una lista. Si desea manipular el resultado del range , necesita una lista, así que:

 years = list(range(2010,2016)) years.append(2016) 

Finalmente, (y de manera similar al anexo anterior) extienda opera en la lista desde la que lo llama, en lugar de devolver la nueva lista, así que:

 years = list(range(2010,2016)) years.extend( list(range(2016,2020))) 

* Mientras que la función de range Python 2 devuelve una lista, el código anterior todavía funcionará bien en Python 2 *

¡Espero que esto ayude!