Pourquoi Python liste pas changer/annuler le décalage de méthodes?

Je me demande pourquoi la valeur par défaut list en Python n'a pas de shift, unshift méthodes. Peut-être il ya une raison évidente, comme la façon dont les listes sont classées dans la mémoire.

Donc, actuellement, je sais que je peux ajouter utiliser pour ajouter un élément à la fin d'une liste et de les supprimer pour supprimer un élément. Cependant, je ne peux utiliser la liste de concaténation de immitate le comportement d'un manque shift ou unshift méthode.

>>>a = [1,2,3,4,5]

>>>a.append(6)
>>>a
[1,2,3,4,5,6]

>>>a.pop()
[1,2,3,4,5]

>>>a = [0] + a # Unshift /Push
>>>a
[0,1,2,3,4,5]

>>>a = a[1:] # Shift /UnPush
>>>a
[1,2,3,4,5]

Ai-je raté quelque chose?

pop(0), insert(0,x) ?
Pourquoi? Demander aux auteurs!
Non, ceux sont par index.
Il pourrait être intéressant de noter que Python list type n'est en fait pas une liste chaînée, c'est un tableau. Ainsi, l'ajout d'une valeur au début de la liste est plus gourmand en ressources que pour une liste liée, et elle pourrait conduire à (encore plus) la confusion.
Pour aller plus loin, Python, les listes sont des tableaux noms (essentiellement comme un tableau de pointeurs), qui est également très différente de celle d'une mémoire contiguë tableau comme dans C. En Python, l'espace alloué pour les éléments de la liste est contiguë (en général), mais les éléments de la liste peuvent être simplement des noms de point d'arrêt à toutes sortes de crazy coins de la mémoire. Souvent, si vous avez besoin d'être en effectuant des opérations qui serait efficace pour les traditionnels tableaux, cela signifie que vous devriez être à l'aide de quelque chose qui met en œuvre le protocole de mémoire, de type array.tableau NumPy ou ndarray, au lieu de la liste.

OriginalL'auteur nowox | 2015-12-10