Python sakārtots ()

Funkcija sorted () atgriež sakārtoto sarakstu no iterējamajiem vienumiem.

sorted()Funkcija sakārto elementi konkrētā iterable noteiktā secībā (nu uzlikšana vai dilstoša ) un atgriež sakārtoti iterable kā sarakstu.

Funkcijas sintakse sorted()ir šāda:

 kārtots (iterējams, atslēga = nav, reversa = nepatiesa)

Kārtotās () funkcijas parametri

sorted() var izmantot ne vairāk kā trīs parametrus:

  • iterējams - secība (virkne, kopa, saraksts) vai kolekcija (kopa, vārdnīca, sastāva kopa) vai jebkurš cits atkārtotājs.
  • reverse (pēc izvēles) - Ja True, sakārtotais saraksts tiek mainīts (vai sakārtots dilstošā secībā). Noklusējums ir, Falseja tas nav norādīts.
  • taustiņš (pēc izvēles) - funkcija, kas kalpo kā atslēga šķirošanas salīdzināšanai. Pēc noklusējuma None.

1. piemērs: kārtojiet virkni, sarakstu un kopu

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

Rezultāts

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

Ievērojiet, ka visos gadījumos tiek atgriezts sakārtots saraksts.

Piezīme: Sarakstā ir arī metode sort (), kas darbojas tāpat kā sorted(). Vienīgā atšķirība ir tā, ka sort()metode neatgriež vērtību un maina sākotnējo sarakstu.

2. piemērs: kārtojiet dilstošā secībā

sorted()Funkcija pieņem reverseparametru kā izvēles arguments.

Izmantojot iestatījumu, reverse = Trueiterējamais tiek kārtots dilstošā secībā.

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

Rezultāts

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

atslēga Parametrs Python sorted () funkcijā

Ja vēlaties, lai jūsu kārtojums tiktu kārtots, sorted()arī keykā izvēles parametru tiek pieņemta funkcija.

Pamatojoties uz atslēgas funkcijas atgriezto vērtību, jūs varat kārtot doto atkārtojamību.

 kārtots (atkārtojams, atslēga = len)

Šeit len()ir iebūvēta Python funkcija objekta garuma skaitīšanai.

Saraksts ir sakārtots, pamatojoties uz elementa garumu, no mazākā skaita līdz lielākajam.

3. piemērs: kārtojiet sarakstu, izmantojot sakārtotu (), kam ir taustiņa funkcija

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

Rezultāts

 Kārtots saraksts: ((4, 1), (2, 2), (1, 3), (3, 4))

4. piemērs: kārtošana ar vairākiem taustiņiem

Pieņemsim, ka mums ir šāds saraksts:

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

Mēs vēlamies kārtot sarakstu tā, lai sākumā būtu students ar visaugstākajām atzīmēm. Gadījumā, ja studentiem ir vienādas atzīmes, tie jāsakārto tā, lai jaunākais dalībnieks būtu pirmais.

Šādu šķirošanu mēs varam panākt ar vairākām atslēgām, skaitļa vietā atgriežot dubulto.

Divus grupējumus var salīdzināt, salīdzinot to elementus, sākot no pirmā. Ja ir neizšķirts (elementi ir vienādi), tiek salīdzināts otrais elements utt.

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

Izmantosim šo loģiku, lai izveidotu savu šķirošanas loģiku.

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

Rezultāts

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

Tā kā šķirošanas loģikas funkcija ir maza un ietilpst vienā rindā, lambdafunkcija tiek izmantota iekšpusē, keynevis tiek nodots atsevišķs funkcijas nosaukums.

Iepriekš minēto programmu var rakstīt, izmantojot lambdafunkciju šādā veidā:

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

Rezultāts

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

Lai uzzinātu vairāk par lambda funkcijām, apmeklējiet Python Lambda funkcijas.

Interesanti raksti...