Sortare listă Python ()

Metoda sort () sortează elementele unei liste date într-o anumită ordine crescătoare sau descendentă.

Sintaxa sort()metodei este:

 list.sort (cheie = …, invers = …)

Alternativ, puteți utiliza, de asemenea, funcția încorporată sorted () a Python în același scop.

 sortat (listă, cheie = …, invers = …)

Notă: Cea mai simplă diferență între sort()și sorted()este: sort()modifică direct lista și nu returnează nicio valoare, în timp sorted()ce nu schimbă lista și returnează lista sortată.

sort () Parametri

În mod implicit, sort()nu necesită parametri suplimentari. Cu toate acestea, are doi parametri opționali:

  • invers - Dacă Truelista sortată este inversată (sau sortată în ordine descrescătoare)
  • cheie - funcție care servește ca cheie pentru compararea sortării

Returnează valoarea din sort ()

sort()Metoda nu returnează nici o valoare. Mai degrabă, schimbă lista originală.

Dacă doriți ca o funcție să returneze lista sortată în loc să schimbe lista originală, utilizați sorted().

Exemplul 1: Sortează o listă dată

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

Ieșire

 Lista sortată: („a”, „e”, „i”, „o”, „u”)

Sortați în ordine descrescătoare

sort()Metoda acceptă un reverseparametru ca argument opțional.

Setarea reverse = Truesortează lista în ordinea descrescătoare.

 list.sort(reverse=True)

Alternativ pentru sorted(), puteți utiliza următorul cod.

 sorted(list, reverse=True)

Exemplul 2: Sortează lista în ordine descrescătoare

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

Ieșire

 Lista sortată (în descrescătoare): („u”, „o”, „i”, „e”, „a”)

Sortați cu funcția personalizată folosind tasta

Dacă doriți propria dvs. implementare pentru sortare, sort()metoda acceptă și o keyfuncție ca parametru opțional.

Pe baza rezultatelor funcției cheie, puteți sorta lista dată.

 list.sort(key=len)

Alternativ pentru sortare:

 sorted(list, key=len)

Aici leneste funcția încorporată a Python pentru a număra lungimea unui element.

Lista este sortată pe baza lungimii fiecărui element, de la numărul cel mai mic la cel mai mare.

Știm că un tuplu este sortat folosind primul parametru implicit. Să vedem cum să personalizăm sort()metoda de sortare folosind al doilea element.

Exemplul 3: Sortează lista folosind tasta

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

Ieșire

 Lista sortată: ((4, 1), (2, 2), (1, 3), (3, 4))

Să luăm un alt exemplu. Să presupunem că avem o listă de informații despre angajații unui birou în care fiecare element este un dicționar.

Putem sorta lista în felul următor:

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

Ieșire

((„Nume”: „Alan Turing”, „vârstă”: 25, „salariu”: 10000), („Nume”: „John Hopkins”, „vârstă”: 18, „salariu”: 1000), („Nume ":" Mikhail Tal "," vârstă ": 40," salariu ": 15000), (" Nume ":" Sharon Lin "," vârstă ": 30," salariu ": 8000)) ((" Nume ":" John Hopkins "," vârstă ": 18," salariu ": 1000), (" Nume ":" Alan Turing "," vârstă ": 25," salariu ": 10000), (" Nume ":" Sharon Lin ", „vârstă”: 30, „salariu”: 8000), („Nume”: „Mikhail Tal”, „vârstă”: 40, „salariu”: 15000)) ((„Nume”: „Mikhail Tal”, „vârstă” : 40, „salariu”: 15000), („Nume”: „Alan Turing”, „vârstă”: 25, „salariu”: 10000), („Nume ":" Sharon Lin "," vârstă ": 30," salariu ": 8000), (" Nume ":" John Hopkins "," vârstă ": 18," salariu ": 1000))

Aici, pentru primul caz, funcția noastră personalizată returnează numele fiecărui angajat. Deoarece numele este un string, Python îl sortează implicit folosind ordinea alfabetică.

Pentru al doilea caz, vârsta ( int) este returnată și este sortată în ordine crescătoare.

Pentru al treilea caz, funcția returnează salariul ( int) și este sortată în ordinea descrescătoare folosind reverse = True.

Este o bună practică să folosiți funcția lambda atunci când funcția poate fi rezumată într-o singură linie. Deci, putem scrie și programul de mai sus ca:

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

Ieșire

((„Nume”: „Alan Turing”, „vârstă”: 25, „salariu”: 10000), („Nume”: „John Hopkins”, „vârstă”: 18, „salariu”: 1000), („Nume ":" Mikhail Tal "," vârstă ": 40," salariu ": 15000), (" Nume ":" Sharon Lin "," vârstă ": 30," salariu ": 8000)) ((" Nume ":" John Hopkins "," vârstă ": 18," salariu ": 1000), (" Nume ":" Alan Turing "," vârstă ": 25," salariu ": 10000), (" Nume ":" Sharon Lin ", „vârstă”: 30, „salariu”: 8000), („Nume”: „Mikhail Tal”, „vârstă”: 40, „salariu”: 15000)) ((„Nume”: „Mikhail Tal”, „vârstă” : 40, „salariu”: 15000), („Nume”: „Alan Turing”, „vârstă”: 25, „salariu”: 10000), („Nume ":" Sharon Lin "," vârstă ": 30," salariu ": 8000), (" Nume ":" John Hopkins "," vârstă ": 18," salariu ": 1000))

Pentru a afla mai multe despre funcțiile lambda, accesați Python Lambda Functions.

Articole interesante...