Comment puis-je déplacer le dernier élément d'une liste à l'avant en python?
J'ai cherché à fond, mais ne peut pas trouver quoi que ce soit concernant cette exacte spécifiques. J'ai une liste:
a = [two, three, one]
Je veux déplacer one
à l'avant, de sorte qu'il devient:
a = [one, two, three]
La chose est, il pourrait être n'IMPORTE quelle quantité de numéros dans la liste. Supposons qu'il n'y est aucun moyen de savoir si il y aura 50 articles ou 3.
OriginalL'auteur Jared | 2011-06-27
Vous devez vous connecter pour publier un commentaire.
En gros:
Envisager d'utiliser
collections.deque
si vous faites cela souvent, mais.Malheureusement, cela ne fonctionne pas pour vider les listes.
Il ne devrait pas travailler pour vider les listes. Que voulez-vous déplacer dans une liste vide?
Légèrement mal lu la question, n'était pas sûr si l'OP veut aller toujours en dernier ou d'un objet.
De Plus, si vous ne voulez pas que les exceptions, vous pouvez toujours faire
if a: a.insert(0, a.pop())
. 😛OriginalL'auteur
La
-1
se rapporte l'indice du dernier élément.Cela fonctionne pour n'importe quel nombre d'éléments dans la liste.
a
, mais si le cas 'void' est possible, je préfère:a.insert(0, a.pop()) if a else None
Il semble bizarre, mais ça marche et que les opérations sont en placeOriginalL'auteur
Vous pouvez utiliser le code suivant:
OriginalL'auteur
Si vous souhaitez déplacer le premier élément de la liste à la dernière , vous pouvez utiliser cette -
OriginalL'auteur
Je préfère la deuxième manière parce que les opérations sont en place, alors que dans la première manière, une nouvelle liste est créée
a
doit être déplacé, de sorte deque est probablement mieux à moinsa
est très petiteJe suis intéressé par votre commentaire, mais je ne comprends pas ce que vous voulez dire
si vous utilisez insérer ou d'une tranche de cession, de La liste sous-jacente commence à le même emplacement de mémoire, afin de mettre un élément en avant est l'équivalent d'un[1]=a[0];a[2]=a[1];a[3]=[2]... Ce qui est fait au niveau C, donc est de ~100 fois plus rapide que son équivalent en code Python, mais le nombre de missions est proportionnelle à la longueur de la liste, de sorte que le fonctionnement est O(n)
Je vous remercie. C'est un vaste sujet, je vais l'étudier de manière plus approfondie plus tard. Je comprends que, pendant une opération, de l'emplacement des objets ne changent pas, mais les valeurs de pointeurs pointant vers le présent objets variation du sous-jacent C vecteur de pointeurs: le coût de l'opération est de O(n), OK; mais je ne qualifierais pas ces relèves "détachement". Une assignation est plus qu'un changement de valeur, puisqu'il implique un objet, pas une variable est un pointeur.
Par la manière, vous vouliez sans doute écrire: ....a[4] = a[3] ; a[3] = a[2] ; a[2] = a[1] ; a[1] = a[0] ; a[0] = valeur insérée.
OriginalL'auteur
Plaisir
insérer
Le meilleur moyen était juste indique que:
pop
Mais, si je dois faire quelque chose d'original, je vais faire ceci:
tranche
Et, dernier exercice, ce:
OriginalL'auteur