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 originallist
que deberían aparecer en el permutadolist
. Luego, usap
para hacer un nuevolist
simplemente 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