Python-luettelon lajittelu ()

Lajittelu () -menetelmä lajittelee tietyn luettelon elementit tietyssä nousevassa tai laskevassa järjestyksessä.

Menetelmän syntaksi sort()on:

 list.sort (avain =…, käänteinen =…)

Vaihtoehtoisesti voit käyttää samaan tarkoitukseen myös Pythonin sisäänrakennettua lajiteltu () -funktiota.

 lajiteltu (luettelo, avain =…, käänteinen =…)

Huomautus: Yksinkertaisin ero sort()ja sorted()on: sort()muuttaa listan suoraan ja ei palauta mitään arvoa, kun sorted()ei muuta luetteloa ja palaa lajitellut luettelosta.

lajittelu () -parametrit

Oletuksena sort()ei vaadi ylimääräisiä parametreja. Siinä on kuitenkin kaksi valinnaista parametria:

  • käänteinen - Jos True, lajiteltu luettelo on päinvastainen (tai lajiteltu laskevassa järjestyksessä)
  • avain - toiminto, joka toimii avaimena lajitteluvertailussa

Palautusarvo lajittelusta ()

sort()Menetelmä ei palauta mitään arvoa. Pikemminkin se muuttaa alkuperäistä luetteloa.

Jos haluat funktion palauttavan lajiteltujen luetteloiden alkuperäisen luettelon muuttamisen sijaan, käytä sorted().

Esimerkki 1: Lajittele annettu luettelo

 # vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort() # print vowels print('Sorted list:', vowels)

Tuotos

 Lajiteltu luettelo: ('a', 'e', ​​'i', 'o', 'u')

Lajittele laskevassa järjestyksessä

sort()Menetelmä hyväksyy reverseparametri valinnaisena argumentti.

Asetus reverse = Truelajittelee luettelon laskevassa järjestyksessä.

 list.sort(reverse=True)

Vaihtoehtoisesti sorted()voit käyttää seuraavaa koodia.

 sorted(list, reverse=True)

Esimerkki 2: Lajittele luettelo laskevassa järjestyksessä

 # vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort(reverse=True) # print vowels print('Sorted list (in Descending):', vowels)

Tuotos

 Lajiteltu luettelo (laskevassa muodossa): ('u', 'o', 'i', 'e', ​​'a')

Lajittele mukautetun toiminnon avulla näppäimellä

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

Avaintoiminnon tulosten perusteella voit lajitella annetun luettelon.

 list.sort(key=len)

Vaihtoehtoisesti lajiteltu:

 sorted(list, key=len)

Tässä lenon Pythonin sisäänrakennettu toiminto elementin pituuden laskemiseksi.

Luettelo on lajiteltu kunkin elementin pituuden mukaan pienimmästä lukumäärästä suurimpaan.

Tiedämme, että dupleksi lajitellaan oletusarvoisesti sen ensimmäisen parametrin avulla. Katsotaanpa, miten mukautetaan sort()lajittelutapa toisen elementin avulla.

Esimerkki 3: Lajittele luettelo näppäimellä

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

Tuotos

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

Otetaan toinen esimerkki. Oletetaan, että meillä on luettelo toimiston työntekijöistä, joissa jokainen osa on sanakirja.

Voimme lajitella luettelon seuraavasti:

 # sorting using custom key employees = ( ('Name': 'Alan Turing', 'age': 25, 'salary': 10000), ('Name': 'Sharon Lin', 'age': 30, 'salary': 8000), ('Name': 'John Hopkins', 'age': 18, 'salary': 1000), ('Name': 'Mikhail Tal', 'age': 40, 'salary': 15000), ) # custom functions to get employee info def get_name(employee): return employee.get('Name') def get_age(employee): return employee.get('age') def get_salary(employee): return employee.get('salary') # sort by name (Ascending order) employees.sort(key=get_name) print(employees, end='') # sort by Age (Ascending order) employees.sort(key=get_age) print(employees, end='') # sort by salary (Descending order) employees.sort(key=get_salary, reverse=True) print(employees, end='')

Tuotos

(('Nimi': 'Alan Turing', 'ikä': 25, 'palkka': 10000), ('nimi': 'John Hopkins', 'ikä': 18, 'palkka': 1000), ('nimi ':' Mikhail Tal ',' ikä ': 40,' palkka ': 15000), (' nimi ':' Sharon Lin ',' ikä ': 30,' palkka ': 8000)) ((' nimi ':' John Hopkins ',' ikä ': 18,' palkka ': 1000), (' nimi ':' Alan Turing ',' ikä ': 25,' palkka ': 10000), (' nimi ':' Sharon Lin ', 'ikä': 30, 'palkka': 8000), ('nimi': 'Mikhail Tal', 'ikä': 40, 'palkka': 15000)) (('nimi': 'Mikhail Tal', 'ikä') : 40, 'palkka': 15000), ('Nimi': 'Alan Turing', 'ikä': 25, 'palkka': 10000), ('Nimi ':' Sharon Lin ',' ikä: 30, 'palkka': 8000), ('nimi': 'John Hopkins', 'ikä': 18, 'palkka': 1000))

Tässä ensimmäisessä tapauksessa mukautettu toiminto palauttaa jokaisen työntekijän nimen. Koska nimi on a string, Python lajittelee sen oletuksena aakkosjärjestyksessä.

Toisessa tapauksessa ikä ( int) palautetaan ja lajitellaan nousevassa järjestyksessä.

Kolmannessa tapauksessa funktio palauttaa palkan ( int) ja lajitellaan laskevassa järjestyksessä käyttäen reverse = True.

On hyvä käytäntö käyttää lambda-toimintoa, kun toiminto voidaan tiivistää yhdelle riville. Joten voimme myös kirjoittaa yllä olevan ohjelman seuraavasti:

 # sorting using custom key employees = ( ('Name': 'Alan Turing', 'age': 25, 'salary': 10000), ('Name': 'Sharon Lin', 'age': 30, 'salary': 8000), ('Name': 'John Hopkins', 'age': 18, 'salary': 1000), ('Name': 'Mikhail Tal', 'age': 40, 'salary': 15000), ) # sort by name (Ascending order) employees.sort(key=lambda x: x.get('Name')) print(employees, end='') # sort by Age (Ascending order) employees.sort(key=lambda x: x.get('age')) print(employees, end='') # sort by salary (Descending order) employees.sort(key=lambda x: x.get('salary'), reverse=True) print(employees, end='')

Tuotos

(('Nimi': 'Alan Turing', 'ikä': 25, 'palkka': 10000), ('nimi': 'John Hopkins', 'ikä': 18, 'palkka': 1000), ('nimi ':' Mikhail Tal ',' ikä ': 40,' palkka ': 15000), (' nimi ':' Sharon Lin ',' ikä ': 30,' palkka ': 8000)) ((' nimi ':' John Hopkins ',' ikä ': 18,' palkka ': 1000), (' nimi ':' Alan Turing ',' ikä ': 25,' palkka ': 10000), (' nimi ':' Sharon Lin ', 'ikä': 30, 'palkka': 8000), ('nimi': 'Mikhail Tal', 'ikä': 40, 'palkka': 15000)) (('nimi': 'Mikhail Tal', 'ikä') : 40, 'palkka': 15000), ('Nimi': 'Alan Turing', 'ikä': 25, 'palkka': 10000), ('Nimi ':' Sharon Lin ',' ikä: 30, 'palkka': 8000), ('nimi': 'John Hopkins', 'ikä': 18, 'palkka': 1000))

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

Mielenkiintoisia artikkeleita...