Python lajiteltu ()

Lajiteltu () -funktio palauttaa lajitellun luettelon iteroitavissa olevista kohteista.

sorted()Toiminto lajittelee elementit tietyn iterable tietyssä järjestyksessä (joko nouseva tai alenevassa ) ja palaa lajitellut iterable luettelona.

sorted()Funktion syntaksi on:

 lajiteltu (iteroitava, avain = ei mitään, käänteinen = väärä)

Lajiteltu () -funktion parametrit

sorted() voi ottaa enintään kolme parametria:

  • iteroitava - sarja (merkkijono, sekvenssi, luettelo) tai kokoelma (sarja, sanakirja, jäädytetty sarja) tai mikä tahansa muu iteraattori.
  • käänteinen (valinnainen) - Jos True, lajiteltu luettelo on päinvastainen (tai lajiteltu laskevassa järjestyksessä). Oletusarvo on, Falsejos sitä ei toimiteta.
  • avain (valinnainen) - toiminto, joka toimii avaintena lajitteluvertailussa. Oletusarvo on None.

Esimerkki 1: Lajittele merkkijono, luettelo ja sekoitus

 # vowels list py_list = ('e', 'a', 'u', 'o', 'i') print(sorted(py_list)) # string py_string = 'Python' print(sorted(py_string)) # vowels tuple py_tuple = ('e', 'a', 'u', 'o', 'i') print(sorted(py_tuple))

Tuotos

 ('a', 'e', ​​'i', 'o', 'u' ('P', 'h', 'n', 'o', 't', 'y') ('a' , 'e', ​​'i', 'o', 'u')

Huomaa, että lajiteltu luettelo palautetaan kaikissa tapauksissa.

Huomaa: Luettelossa on myös lajittelu () -menetelmä, joka toimii samalla tavalla kuin sorted(). Ainoa ero on, että sort()menetelmä ei palauta arvoa ja muuttaa alkuperäistä luetteloa.

Esimerkki 2: Lajittele laskevassa järjestyksessä

sorted()Toiminto hyväksyy reverseparametri valinnaisena argumentti.

Asetus reverse = Truelajittelee iteroitavan laskevassa järjestyksessä.

 # set py_set = ('e', 'a', 'u', 'o', 'i') print(sorted(py_set, reverse=True)) # dictionary py_dict = ('e': 1, 'a': 2, 'u': 3, 'o': 4, 'i': 5) print(sorted(py_dict, reverse=True)) # frozen set frozen_set = frozenset(('e', 'a', 'u', 'o', 'i')) print(sorted(frozen_set, reverse=True))

Tuotos

 ('u', 'o', 'i', 'e', ​​'a') ('u', 'o', 'i', 'e', ​​'a') ('u', 'o' , 'i', 'e', ​​'a')

avainparametri Python-lajiteltu () -funktiossa

Jos haluat oman toteutuksen lajittelua varten, sorted()hyväksyy myös keytoiminnon valinnaisena parametrina.

Avaintoiminnon palautetun arvon perusteella voit lajitella annetun iteroinnin.

 lajiteltu (iterable, key = len)

Tässä len()on Pythonin sisäänrakennettu toiminto objektin pituuden laskemiseksi.

Luettelo on lajiteltu elementin pituuden mukaan pienimmästä lukemasta suurimpaan.

Esimerkki 3: Lajittele luettelo käyttämällä lajiteltuja (), joilla on näppäintoiminto

 # take the second element for sort def take_second(elem): return elem(1) # random list random = ((2, 2), (3, 4), (4, 1), (1, 3)) # sort list with key sorted_list = sorted(random, key=take_second) # print list print('Sorted list:', sorted_list)

Tuotos

 Lajiteltu luettelo: ((4, 1), (2, 2), (1, 3), (3, 4))

Esimerkki 4: Lajittelu useilla avaimilla

Oletetaan, että meillä on seuraava luettelo:

 # Nested list of student's info in a Science Olympiad # List elements: (Student's Name, Marks out of 100, Age) participant_list = ( ('Alison', 50, 18), ('Terence', 75, 12), ('David', 75, 20), ('Jimmy', 90, 22), ('John', 45, 12) )

Haluamme lajitella luettelon siten, että korkeimpien pisteiden saanut opiskelija on alussa. Jos opiskelijoilla on yhtäläiset arvosanat, ne on lajiteltava siten, että nuorempi osallistuja tulee ensin.

Voimme saavuttaa tämän tyyppisen lajittelun useilla avaimilla palauttamalla dupleksin luvun sijaan.

Kaksi joukkoa voidaan verrata vertaamalla niiden alkuaineita alusta alkaen. Jos on tasapeli (elementit ovat samat), toista elementtiä verrataan jne.

 >>> (1,3)> (1, 4) False >>> (1, 4) >> (1, 4, 1) < (2, 1) True

Käytetään tätä logiikkaa rakentaaksemme lajittelulogiikkamme.

 # Nested list of student's info in a Science Olympiad # List elements: (Student's Name, Marks out of 100 , Age) participant_list = ( ('Alison', 50, 18), ('Terence', 75, 12), ('David', 75, 20), ('Jimmy', 90, 22), ('John', 45, 12) ) def sorter(item): # Since highest marks first, least error = most marks error = 100 - item(1) age = item(2) return (error, age) sorted_list = sorted(participant_list, key=sorter) print(sorted_list)

Tuotos

 (('Jimmy', 90, 22), ('Terence', 75, 12), ('David', 75, 20), ('Alison', 50, 18), ('John', 45, 12) )

Koska lajittelulogiikkafunktio on pieni ja sopii yhdelle riville, lambdafunktiota käytetään sisällä keysen sijaan, että välitettäisiin erillinen funktion nimi.

Yllä oleva ohjelma voidaan kirjoittaa lambdatoiminnon avulla seuraavasti:

 # Nested list of student's info in a Science Olympiad # List elements: (Student's Name, Marks out of 100 , Age) participant_list = ( ('Alison', 50, 18), ('Terence', 75, 12), ('David', 75, 20), ('Jimmy', 90, 22), ('John', 45, 12) ) sorted_list = sorted(participant_list, key=lambda item: (100-item(1), item(2))) print(sorted_list)

Tuotos

 (('Jimmy', 90, 22), ('Terence', 75, 12), ('David', 75, 20), ('Alison', 50, 18), ('John', 45, 12) )

Lisätietoja lambda-toiminnoista on Python Lambda -toiminnoissa.

Mielenkiintoisia artikkeleita...