Si j'ai une liste, [a,b,c,d,e]
comment puis-je réorganiser les articles de manière arbitraire comme [d,c,a,b,e]
?
Edit: je ne veux pas les mélanger. Je souhaite les réorganiser de manière prédéfinie. (par exemple, je sais que le 3ème élément de l'ancienne liste devrait devenir le premier élément de la nouvelle liste)
Réponses:
Tu peux le faire comme ça
la source
mylist[:] = [mylist[i] for i in myorder]
la source
la source
L'ordre final est-il défini par une liste d'indices?
modifier: meh. AJ était plus rapide ... Comment puis-je réorganiser une liste en python?
la source
la source
Vous pouvez fournir votre propre fonction de tri pour
list.sort()
:la source
Si vous utilisez numpy, il existe une manière intéressante de le faire:
Ce code renvoie:
la source
Si vous ne vous souciez pas tellement de l'efficacité, vous pouvez vous fier à l'indexation des tableaux de numpy pour le rendre élégant:
la source
D'après ce que je comprends de votre question, il semble que vous souhaitiez appliquer une permutation que vous spécifiez sur un
list
. Cela se fait en spécifiant un autrelist
(appelons-lep
) qui contient les indices des éléments de l'originallist
qui devraient apparaître dans le permutélist
. Vous utilisez ensuitep
pour en faire un nouveaulist
en remplaçant simplement l'élément à chaque position par celui dont l'index est à cette positionp
.Cela imprime
['d', 'c', 'a', 'b', 'e']
.Cela crée en fait un nouveau
list
, mais il peut être modifié de manière triviale pour permuter l'original "en place".la source
Une autre chose qui peut être considérée est l'autre interprétation comme le souligne
Code en Python 2.7
Principalement:
Réorganiser par index
Cela affichera ['c', 'd', 'b', 'a', 'e']
la source
la source
C'est ce que j'ai utilisé lorsque je suis tombé sur ce problème.
EX: pour les lettres minuscules
Il déplace simplement la liste vers un index spécifié
la source