Cómo ordenar una lista de Python
Método 1. Utilice la función miembro ordenar Lista para ordenar
Método 2. Utilice la función incorporada sorted para ordenar (desde 2.4)
El uso de estos dos métodos es básicamente el mismo, por lo que tomamos el primer método como ejemplo:
De Python 2.4, el método de clasificación tiene tres parámetros opcionales, como se describe en la Referencia de la biblioteca de Python
Copia el código de la siguiente manera:
cmp:cmp especifica dos parámetros (elementos iterables), que deberían devuelve un número negativo, cero o positivo, dependiendo de si el primer argumento se considera menor, igual o mayor que el segundo argumento:
"cmp=lambda x, y: cmp(x. lower(), y.lower())"
clave.
clave. key especifica una función que toma un argumento y se usa para extraer una clave de comparación de cada elemento de la lista: "Generalmente, el proceso de transformación inversa y de clave es mucho más rápido que especificar una función cmp equivalente. Esto se debe a que cmp se llama varias veces para cada elemento de la lista, mientras que key y reverse solo tocan cada elemento una vez.
Aquí hay un ejemplo específico de clasificación.
Ejemplo 1:
Copia el código de la siguiente manera:
>>>L =
>>>L.sort() p>
>>>L
>>L
>>[1,2,3, 4]
Ejemplo 2:
Copie el código de la siguiente manera:
>>>L =
>>>L.sort(reverse=True)
> >>L
>>>L
>>>L.gt;>
Ejemplo 3:
Copiar el código como sigue:
>>>L = [('b',2),('a',1),('c',3),('d',4)]
>>> L.sort(cmp= lambda x,y:cmp(x[1],y[1]))
>>>L
> >>[('a' , 1), ('b', 2), ('c', 3), ('d', 4)]
Ejemplo 4:
Copie el código de la siguiente manera:
>>>L = [('b', 2), ('a', 1), ('c', 3), ('d', 4)]
>>>L.sort(key=lambda x:x[1])
>>>L
>>>.[ ('a', 1), ('b', 2), ('c', 3), ('d', 4)]
Ejemplo 5:
Copiar el código de la siguiente manera:
>>>>L = [('b', 2), ('a', 1), ('c', 3), ('d', 4) ]
>> >& gt;Importar operador
>>>L.sort(key=operator.itemgetter(1))
>>>L
>> >L
>>>[('a',1), ('b',2), ('c' , 3), ('d' , 4)]
Ejemplo 6: (Método DSU: Decoración-Ordenar-Ordenar)
Copia el código de la siguiente manera:
>>>L = [('b',2), (' a',1), ('c',3), ('d',4)]
>>>A = [(x[1 ],i,x) para i,x en enumerate(L)]] Copie el código de la siguiente manera:
>>> L = [('d',2),('a',4 ),('b',3),('c ',2)]
>>> L.sort(clave=lambda x:x[1])
> >> L
>>> [('d', 2), ('c', 2), ('b', 3), ('a', 4)]
Vemos que L está ordenado por Ordenar por la segunda palabra clave, ¿qué pasa si queremos ordenar por la segunda palabra clave
y luego ordenar por la primera palabra clave? Hay dos métodos
Ejemplo 8:
Copia el código de la siguiente manera:
>>> L = [('d',2),(' a',4),('b',3)
,('c',2)]
>>> L.sort(clave=lambda x:(x[1], x[0]))
>>> L
>>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)]
Ejemplo 9:
Copie el código de la siguiente manera:
>>> L = [('d', 2), ('a', 4), ('b' , 3 ), ('c', 2)]
>>> L.sort(key=operator.itemgetter(1,0))
>>> L p>
>>> [('c', 2 ), ('d', 2), ('b', 3), ('a', 4)]
¿Por qué ejemplo 8 ¿Está bien? La razón es que las tuplas se comparan de izquierda a derecha. Después de comparar la primera tupla, si
es igual, se compara la segunda
.