Si tengo una lista, [a,b,c,d,e]¿cómo puedo reordenar los artículos de manera arbitraria [d,c,a,b,e]?
Editar: no quiero mezclarlos. Quiero reordenarlos de una manera predefinida. (por ejemplo, sé que el tercer elemento de la lista anterior debería convertirse en el primer elemento de la nueva lista)

Respuestas:
Puedes hacerlo así
fuente
mylist[:] = [mylist[i] for i in myorder]fuente
fuente
¿El orden final está definido por una lista de índices?
editar: meh. AJ fue más rápido ... ¿Cómo puedo reordenar una lista en Python?
fuente
fuente
Puede proporcionar su propia función de clasificación para
list.sort():fuente
Si usa numpy, hay una manera ordenada de hacerlo:
Este código devuelve:
fuente
Si no le importa tanto la eficiencia, puede confiar en la indexación de matrices de numpy para que sea elegante:
fuente
Por lo que entiendo de su pregunta, parece que desea aplicar una permutación que especifique en un
list. Esto se hace especificando otrolist(llamémoslop) que contiene los índices de los elementos del originallistque deberían aparecer en el permutadolist. Luego, usappara hacer un nuevolistsimplemente sustituyendo el elemento en cada posición por aquel cuyo índice está en esa posición enp.Esto imprime
['d', 'c', 'a', 'b', 'e'].En realidad, esto crea un nuevo
list, pero puede modificarse trivialmente para permutar el original "en su lugar".fuente
Una cosa más que se puede considerar es la otra interpretación señalada por darkless
Código en Python 2.7
Principalmente:
Reordenar por índice
Esto imprimirá ['c', 'd', 'b', 'a', 'e']
fuente
fuente
Esto es lo que usé cuando me encontré con este problema.
EX: para las letras minúsculas
Simplemente cambia la lista a un índice específico
fuente