Com ordenar llistes a Python

How Sort Lists Python



En aquest article es tractarà una guia sobre la classificació de llistes a Python. Un objecte de llista Python és una col·lecció d'un o més elements separats per comes. És un objecte iterable i es pot accedir als seus elements iterant per la llista mitjançant instruccions de bucle i altres expressions. Podeu ordenar una llista de Python mitjançant mètodes d'ordenació i ordenació, tots dos s'expliquen a l'article. Tots els exemples de codi d’aquest article es proven amb Python 3.9.5 a Ubuntu 21.04.

Mètode d'ordenació

El mètode d'ordenació ordena una llista al lloc. En altres paraules, modificarà l'objecte de llista que ordenareu i reordenarà el seu element. Si no necessiteu la llista original i no us importa que la llista canviï l'ordre dels elements al seu lloc, aquest és el mètode més eficient de Python per ordenar una llista. Penseu en aquest exemple:







el= [2, 8, 6, 4]

el.ordenar()

imprimir (el)

Després d'executar l'exemple de codi anterior, hauríeu d'obtenir la següent sortida:



[2, 4, 6, 8]

La primera sentència de l'exemple de codi defineix una llista. A continuació, es fa un mètode d'ordenació a la llista. Quan imprimiu la llista, podreu veure que s’ha canviat l’ordre de la llista original.



Per defecte, Python ordena una llista en ordre ascendent. Si voleu ordenar una llista en ordre descendent, utilitzeu el mètode invers, tal com es mostra a la mostra de codi següent:





el= [2, 8, 6, 4]

el.ordenar()

el.al revés()

imprimir (el)

Després d'executar l'exemple de codi anterior, hauríeu d'obtenir la següent sortida:

[8, 6, 4, 2]

El mètode invers també canvia una llista de Python al lloc sense crear una llista nova.



Si la vostra llista conté elements de cadenes, si crideu al mètode d'ordenació s'ordenarà alfabèticament on s'ordenen primer els símbols i els números. Mireu el següent exemple de codi:

el= ['s', 'A', 'Amb', '4', '#']

el.ordenar()
imprimir (el)

Després d'executar l'exemple de codi anterior, hauríeu d'obtenir la següent sortida:

['#', '4', 'A', 's', 'Amb']

També podeu utilitzar el mètode invers en una llista que conté elements de cadena.

el= ['s', 'A', 'Amb', '4', '#']

el.ordenar()

el.al revés()

imprimir (el)

Després d'executar l'exemple de codi anterior, hauríeu d'obtenir la següent sortida:

['Amb', 's', 'A', '4', '#']

Mètode ordenat

El mètode ordenat també ordena una llista Python, de la mateixa manera que el mètode ordenat. Tanmateix, en lloc de modificar la llista original, retorna una llista nova de manera que la llista original es deixi intacta per si la voleu tornar a utilitzar. Penseu en el codi següent:

llista1= ['s', 'A', 'Amb', '4', '#']

llista2= ordenat(llista1)

imprimir (llista1,llista2)

Després d'executar l'exemple de codi anterior, hauríeu d'obtenir la següent sortida:

['s', 'A', 'Amb', '4', '#'] ['#', '4', 'A', 's', 'Amb']

Podeu veure a la sortida que la llista1 està intacta i que la llista2 ara té elements ordenats. També podeu utilitzar el mètode invers de la llista2 per canviar la seva metodologia d’ordenació.

Argument invers

Podeu utilitzar l'argument invers com a alternativa a la funció inversa tant en mètodes d'ordenació com d'ordenació per obtenir una llista ordenada en ordre descendent. Només cal que proporcioneu un valor vertader per canviar l'ordre d'ordenació:

llista1= ['s', 'A', 'Amb', '4', '#']

llista2= ordenat(llista1,al revés=És cert)

imprimir (llista1,llista2)

Després d'executar l'exemple de codi anterior, hauríeu d'obtenir la següent sortida:

['s', 'A', 'Amb', '4', '#'] ['Amb', 's', 'A', '4', '#']

Utilització de la funció de tecla per especificar la vostra pròpia lògica per ordenar els elements d’una llista

Tant en els mètodes d'ordenació com d'ordenació, podeu especificar un argument clau addicional que tingui com a funció una funció cridable. A aquest argument clau se li pot assignar una funció existent des de mòduls Python integrats o podeu proporcionar la vostra pròpia funció amb una lògica personalitzada. Mireu el següent exemple de codi:

llista1= ['abcde', 'xyz', 'ijkl']

llista2= ordenat(llista1,clau=len)

imprimir (llista1,llista2)

llista1.ordenar(clau=len)

imprimir (llista1)

Després d'executar l'exemple de codi anterior, hauríeu d'obtenir la següent sortida:

['abcde', 'xyz', 'ijkl'] ['xyz', 'ijkl', 'abcde']

['xyz', 'ijkl', 'abcde']

L'exemple de codi il·lustra l'ús d'arguments clau tant en mètodes d'ordenació com d'ordenació. La funció que se li subministra s'anomena len, que determina la longitud d'un objecte de cadena o d'un iterable. La funció o anomenable originalment hauria de tenir només un argument. L'assigneu a l'argument clau sense utilitzar claus. La funció cridable subministrada a l'argument clau es fa servir a cada element de la llista. Els valors retornats d'aquest mètode que es pot cridar s'utilitzen com a clau per ordenar la llista. Per tant, el subministrament de la funció len a l’argument clau ordena els elements d’una llista en l’ordre de la seva longitud, és a dir, del més curt al més llarg. Com s'ha dit anteriorment, sempre podeu utilitzar el mètode invers per invertir la metodologia d'ordenació.

També podeu utilitzar la vostra pròpia funció personalitzada o funcions lambda d'un sol traç que retornin el valor d'una sola expressió. Feu un cop d'ull a la mostra de codi següent, on es mostra una llista amb tuples de l'inventari actual de caixes de fruites:

llista1= [('Mànec', 99), ('taronja', 51), ('plàtan', 76)]

llista1.ordenar(clau=lambdainventari: inventari[1])

imprimir (llista1)

Després d'executar l'exemple de codi anterior, hauríeu d'obtenir la següent sortida:

[('taronja', 51), ('plàtan', 76), ('Mànec', 99)]

La funció lambda es subministra amb un inventari d'arguments, que és cada element de la llista en forma de tupla. A continuació, retorna el segon element de cada tupla com a clau (a l'índex 1). La funció d'ordenació ordena totes les tuples pel seu segon element en ordre ascendent. També podeu utilitzar la funció inversa o l’argument invers del resultat final per invertir l’ordre d’ordenació.

Conclusió

Aquestes són algunes maneres mitjançant les quals podeu ordenar el contingut d’una llista iterable a Python. L'argument clau us permet escriure la vostra pròpia lògica d'ordenació personalitzada, adequada per a aplicacions que poden tenir necessitats diferents dels mètodes d'ordenació integrats.