„Python“ sąrašo rūšiavimas ()

Metodas „sort ()“ rūšiuoja nurodyto sąrašo elementus tam tikra didėjimo arba mažėjimo tvarka.

sort()Metodo sintaksė yra tokia:

 list.sort (raktas =…, atvirkštinis =…)

Arba tam pačiam tikslui galite naudoti integruotą „Python“ funkciją rūšiuoti ().

 rūšiuojamas (sąrašas, raktas =…, atvirkštinis =…)

Pastaba: Paprasčiausias skirtumas tarp sort()ir sorted()yra: sort()tiesiogiai keičia sąrašą ir negrąžina jokios vertės, o sorted()sąrašo nepakeičia ir pateikia surūšiuotą sąrašą.

rūšiuoti () parametrai

Pagal numatytuosius nustatymus sort()nereikia jokių papildomų parametrų. Tačiau jis turi du pasirenkamus parametrus:

  • atvirkštinis - jei True, rūšiuojamas sąrašas yra atvirkštinis (arba rūšiuojamas mažėjimo tvarka)
  • raktas - funkcija, naudojama kaip rūšiavimo palyginimo raktas

Grąžinti vertę iš rūšiavimo ()

sort()Metodas negrąžina jokios vertės. Veikiau pakeičia pradinį sąrašą.

Jei norite, kad funkcija grąžintų surūšiuotą sąrašą, o ne pakeistų pradinį sąrašą, naudokite sorted().

1 pavyzdys: rūšiuokite nurodytą sąrašą

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

Rezultatas

 Rūšiuotas sąrašas: („a“, „e“, „i“, „o“, „u“)

Rūšiuoti mažėjimo tvarka

sort()Metodas priima reverseparametrą kaip pasirenkamojo argumentų.

Nustatant reverse = Truesąrašas rūšiuojamas mažėjimo tvarka.

 list.sort(reverse=True)

Arba sorted()galite naudoti šį kodą.

 sorted(list, reverse=True)

2 pavyzdys: Rūšiuoti sąrašą mažėjimo tvarka

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

Rezultatas

 Rūšiuotas sąrašas (mažėjančia tvarka): („u“, „o“, „i“, „e“, „a“)

Rūšiuoti naudojant pasirinktinę funkciją naudojant klavišą

Jei norite, kad rūšiavimas būtų jūsų paties įdiegtas, sort()metodas taip pat priima keyfunkciją kaip pasirenkamą parametrą.

Pagal pagrindinės funkcijos rezultatus galite rūšiuoti pateiktą sąrašą.

 list.sort(key=len)

Arba rūšiuojami:

 sorted(list, key=len)

Čia lenyra „Python“ integruota funkcija skaičiuoti elemento ilgį.

Sąrašas rūšiuojamas pagal kiekvieno elemento ilgį, nuo mažiausio skaičiaus iki didžiausio.

Mes žinome, kad pagal numatytuosius nustatymus kelias rūšiuojamas naudojant pirmąjį parametrą. Pažvelkime, kaip pritaikyti sort()rūšiavimo metodą naudojant antrąjį elementą.

3 pavyzdys: Rūšiuoti sąrašą naudojant klavišą

 # 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)

Rezultatas

 Rūšiuotas sąrašas: ((4, 1), (2, 2), (1, 3), (3, 4))

Paimkime kitą pavyzdį. Tarkime, kad turime informacijos apie biuro, kuriame kiekvienas elementas yra žodynas, darbuotojus.

Sąrašą galime rūšiuoti taip:

 # 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='')

Rezultatas

((„Vardas“: „Alanas Turingas“, „amžius“: 25, „atlyginimas“: 10000), („vardas“: „John Hopkins“, „amžius“: 18, „atlyginimas“: 1000), („vardas“ ":" Michailas Talas "," amžius ": 40," atlyginimas ": 15000), (" vardas ":" Sharon Lin "," amžius ": 30," atlyginimas ": 8000)) ((" vardas ":" Johnas Hopkinsas, „amžius“: 18, „atlyginimas“: 1000), („vardas“: „Alanas Turingas“, „amžius“: 25, „atlyginimas“: 10000), („vardas“: „Sharon Lin“, „amžius“: 30, „atlyginimas“: 8000), („vardas“: „Michailas Talas“, „amžius“: 40, „atlyginimas“: 15000)) ((„vardas“: „Michailas Talas“, „amžius“) : 40, „atlyginimas“: 15000), („Vardas“: „Alanas Turingas“, „amžius“: 25, „atlyginimas“: 10000), („Vardas: „Sharon Lin“, „amžius“: 30, „atlyginimas“: 8000), („vardas“: „John Hopkins“, „amžius“: 18, „atlyginimas“: 1000))

Pirmuoju atveju mūsų pasirinktinė funkcija grąžina kiekvieno darbuotojo vardą. Kadangi vardas yra a string, „Python“ pagal nutylėjimą jį rūšiuoja naudodamas abėcėlės tvarka.

Antruoju atveju amžius ( int) grąžinamas ir rūšiuojamas didėjimo tvarka.

Trečiu atveju funkcija grąžina atlyginimą ( int) ir rūšiuojama mažėjančia tvarka naudojant reverse = True.

Gera praktika yra naudoti lambda funkciją, kai funkciją galima apibendrinti vienoje eilutėje. Taigi, aukščiau pateiktą programą taip pat galime parašyti taip:

 # 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='')

Rezultatas

((„Vardas“: „Alanas Turingas“, „amžius“: 25, „atlyginimas“: 10000), („vardas“: „John Hopkins“, „amžius“: 18, „atlyginimas“: 1000), („vardas“ ":" Michailas Talas "," amžius ": 40," atlyginimas ": 15000), (" vardas ":" Sharon Lin "," amžius ": 30," atlyginimas ": 8000)) ((" vardas ":" Johnas Hopkinsas, „amžius“: 18, „atlyginimas“: 1000), („vardas“: „Alanas Turingas“, „amžius“: 25, „atlyginimas“: 10000), („vardas“: „Sharon Lin“, „amžius“: 30, „atlyginimas“: 8000), („vardas“: „Michailas Talas“, „amžius“: 40, „atlyginimas“: 15000)) ((„vardas“: „Michailas Talas“, „amžius“) : 40, „atlyginimas“: 15000), („Vardas“: „Alanas Turingas“, „amžius“: 25, „atlyginimas“: 10000), („Vardas: „Sharon Lin“, „amžius“: 30, „atlyginimas“: 8000), („vardas“: „John Hopkins“, „amžius“: 18, „atlyginimas“: 1000))

Norėdami sužinoti daugiau apie „lambda“ funkcijas, apsilankykite „Python Lambda“ funkcijos.

Įdomios straipsniai...