Kā kārtot sarakstus Python

Šis raksts iemācīs jums kārtot sarakstu Python.

Programmā Python varat izmantot sort() metodi, lai kārtotu sarakstu vietā. Vai arī varat izmantot iebūvēto sorted() funkciju, lai iegūtu sakārtotu saraksta kopiju.

Šajā apmācībā jūs uzzināsit:

  • Sort() metodes un funkcijas sorted() sintakse
  • Koda piemēri sarakstu kārtošanai augošā un dilstošā secībā
  • Pielāgojiet kārtošanu, izmantojot galveno parametru
  • Atšķirība starp sort() vs sorted()

Sāksim!👩🏽‍💻

Python sort() metodes sintakse

Sort() metode darbojas Python sarakstā. Un tas sakārto sarakstu vietā un maina sākotnējo sarakstu.

Python metodes sort() sintakse ir šāda:

<list>.sort(reverse = True | False, key = <func>)

Tagad parsēsim iepriekš minēto sintaksi.

  • ir jebkurš derīgs Python saraksta objekts.
  • reverss ir izvēles parametrs, kas tiek pieņemts vai nu True, vai False.
  • Reverse noklusējuma vērtība ir False, un saraksts tiek sakārtots augošā secībā. Piešķiriet True, lai sakārtotu sarakstu dilstošā secībā.
  • taustiņš ir arī izvēles parametrs, kas ir iestatīts uz .
  • var būt iebūvēta funkcija vai lietotāja definēta funkcija.

Nākamajā sadaļā jūs sāksit kodēt vienkāršus piemērus.

Kā kārtot Python sarakstu augošā secībā

Apsveriet saraksta numurus. Lai kārtotu sarakstu augošā secībā, sarakstā varat izsaukt sort() metodi.

▶ Palaidiet šādu koda fragmentu.

nums = [25,13,6,17,9]
nums.sort()
print(nums)

# Output: [6, 9, 13, 17, 25]

Saraksta numuri ir sakārtoti augošā secībā, un sākotnējais saraksts ir mainīts. To sauc par šķirošanu uz vietas.

Kā kārtot Python sarakstu dilstošā secībā

Lai kārtotu sarakstu dilstošā secībā, iestatiet reverse uz True, kā parādīts tālāk.

nums = [25,13,6,17,9]
nums.sort(reverse = True)
print(nums)

# Output: [25, 17, 13, 9, 6]

Varat redzēt, ka saraksts tagad ir sakārtots dilstošā secībā.

Kā lietot atslēgu ar Python sort() metodi

Šajā sadaļā izmantosim galveno parametru un pielāgosim kārtošanu.

Šeit mod5() ir funkcija, kas uzņem skaitli x un atgriež atlikušo daļu, ja skaitli x dala ar 5.

def mod5(x):
  return x % 5 

Un mēs vēlētos izmantot iepriekš minēto funkciju kā atslēgu.

Tagad palaidiet šādu koda šūnu.

nums = [25,13,6,17,9]
nums.sort(key = mod5)
print(nums)

# Output: [25, 6, 17, 13, 9]

Veltiet minūti, lai parsētu izvadi.

Ievērojiet, kā parastās kārtošanas vietā tagad pielāgojat šķirošanu atbilstoši atslēgai, kas ir mod5.

  • Tagad pirmais ir skaitlis, kas atstāj minimālo atlikumu, dalot ar 5.
  • Un skaitlis, kas atstāj lielāko atlikumu, dalot ar 5, ir pēdējais elements sakārtotajā sarakstā.

Lai pārbaudītu, vai tas tā ir, palaidiet tālāk norādīto koda fragmentu.

nums = [25,13,6,17,9]

for num in nums:
  print(f"{num} leaves remainder {num%5} when divided by 5")

# Output
25 leaves remainder 0 when divided by 5
13 leaves remainder 3 when divided by 5
6 leaves remainder 1 when divided by 5
17 leaves remainder 2 when divided by 5
9 leaves remainder 4 when divided by 5

5 precīzi dala 25, bet atlikums ir 0. Tātad tas ir pirmais elements sakārtotajā sarakstā. 6 atstāj atlikumu 1, tātad tas ir otrais elements utt. 9 atstāj atlikušo 4, dalītu ar 5, un tas ir pēdējais elements sakārtotajā sarakstā.

Tā vietā, lai noteiktu atsevišķu funkciju, varat arī izmantot lambda funkcijas. Python programmā lambdas ir vienas rindas anonīmas funkcijas. lambda args : izteiksme atgriež izteiksmi, kas aprēķināta args.

Tagad pārrakstīsim iepriekš minēto kārtošanu, izmantojot lambda izteiksmi, kā parādīts zemāk.

nums = [25,13,6,17,9]
nums.sort(key = lambda x:x%5)
print(nums)

# Output: [25, 6, 17, 13, 9]

Līdz šim esat iemācījušies kārtot skaitļu sarakstu. Tālāk apskatīsim, kā Python var kārtot virkņu sarakstu.

Kā kārtot Python sarakstu alfabētiskā secībā

Šajā sadaļā jūs iemācīsities kārtot virkņu sarakstu, izmantojot Harija Potera iedvesmotus piemērus. ✨

Mūsu piemērā studenti ir Cūkkārpas studentu saraksts. Un mēs vēlētos tos kārtot to vārdu alfabētiskā secībā.

Kārtojot virkņu sarakstu, noklusējuma kārtošana ir alfabētiskā secībā.

students = ["Harry","Ron","Hermione","Draco","Cedric"]

Izdrukāsim sakārtoto sarakstu, lai pārbaudītu šķirošanas rezultātu.

students.sort()
print(students)

# Output
['Cedric','Draco', 'Harry', 'Hermione', 'Ron']

Kā kārtot Python sarakstu apgrieztā alfabētiskā secībā

Lai kārtotu sarakstu apgrieztā alfabētiskā secībā, iestatiet reverse = True, kā parādīts tālāk esošajā koda fragmentā.

students.sort(reverse = True)
print(students)

# Output
['Ron', 'Hermione', 'Harry', 'Draco', 'Cedric']

No izvades jūs varat redzēt, ka saraksts patiešām ir sakārtots apgrieztā secībā.

Kā lietot taustiņu Parametrs Pielāgot kārtošanu

Šajā sadaļā pielāgosim kārtošanu, izmantojot izvēles atslēgas parametru.

Apsveriet šo sarakstu, mājas.

houses = [
            {1:"Draco","house":"Slytherin"},
            {2:"Harry","house":"Gryffindor"},
            {3:"Cedric","house":"Hufflepuff"}
         ]

Šeit mājas ir vārdnīcu saraksts. Katrā vārdnīcā ir divi atslēgu un vērtību pāri, no kuriem viens apzīmē skolēnu vārdus, bet otrs – māju, kurai viņi pieder.

Tagad mēs vēlētos sakārtot šo sarakstu mājas to māju alfabētiskā secībā, kurām tās pieder.

Kā jau jūs varētu nojaust, mums vajadzētu iestatīt galveno parametru uz konkrēto studentu māju.

Lai izgūtu katra studenta māju, varat definēt funkciju returnHouse(), kā parādīts zemāk.

def returnHouse(student):
  return student['house']

Šī funkcija atgriež māju, kurai pieder konkrētais students.

Tagad māju sarakstā varat izsaukt metodi sort (), kā parādīts attēlā.

houses.sort(key=returnHouse)

Zemāk esošajā izvadā ievērojiet, kā saraksts ir sakārtots pēc mājas, nevis pēc skolēnu vārdiem. Tāpēc mums ir Griffindors, Hufelis un Slīteris — alfabētiskā secībā.

print(houses)

# Output
[{2: 'Harry', 'house': 'Gryffindor'}, 
{3: 'Cedric', 'house': 'Hufflepuff'}, 
{1: 'Draco', 'house': 'Slytherin'}]

Lai attiecīgi definētu galveno parametru, varat izmantot arī lambda funkciju. Katram saraksta vienumam šī funkcija atgriež šī saraksta vienuma māju.

▶ Lai to pārbaudītu, palaidiet šo koda šūnu.

houses.sort(key=lambda student:student["house"])
print(houses)

# Output
[{2: 'Harry', 'house': 'Gryffindor'}, 
{3: 'Cedric', 'house': 'Hufflepuff'}, 
{1: 'Draco', 'house': 'Slytherin'}]

Visos līdzšinējos piemēros sarakstā esat izmantojis sort() metodi. Un tagad jūs zināt, ka tas maina sākotnējo sarakstu.

Ko darīt, ja vēlaties saglabāt sākotnējo sarakstu tādu, kāds tas ir, bet iegūt sakārtotu saraksta kopiju?

Lai to izdarītu, Python varat izmantot funkciju sorted ().

Funkcijas Python sorted() sintakse

Funkcija sorted() izmanto sarakstu vai jebkuru kolekciju kā argumentu. Un tas atgriež sakārtotu saraksta kopiju, un sākotnējais saraksts netiek mainīts.

Python funkcijas sorted() sintakse ir šāda:

<sorted_copy> = sorted(<list>, reverse = True | False, key = <func>)

Ievērojiet, kā sintakse ir ļoti līdzīga šķirošanas () metodei, kuru mēs redzējām iepriekš.

  • ir jebkurš derīgs Python saraksta objekts, un tas ir obligātais parametrs.
  • reverss un taustiņš ir izvēles parametri

Piezīme. Atšķirībā no metodes sort(), kas darbojas tikai uz sarakstiem, funkciju sorted() var izmantot, lai kārtotu jebkuru Python iterējamu, piemēram, sarakstus, virknes un vārdnīcas.

Kā kārtot Python sarakstu, izmantojot funkciju sorted()

#1. Šajā piemērā skaitļi ir skaitļu saraksts.

Varat izsaukt funkciju sorted() ar skaitļiem kā argumentu. Un piešķiriet to sarakstam sorted_nums1.

nums = [25,13,6,17,9]
sorted_nums1 = sorted(nums)
print(sorted_nums1)

# Output: [6, 9, 13, 17, 25]

Iepriekš redzamajā izvadā varat redzēt, ka skaitļi pēc noklusējuma ir sakārtoti augošā secībā.

Ņemiet vērā arī to, ka sākotnējie saraksta numuri netiek mainīti, jo sorted() atgriež jaunu sarakstu. Tas ir pārbaudīts tālāk.

print(nums)
 # Output: [25, 13, 6, 17, 9]

#2. Tagad iestatiet izvēles parametra apgriezto vērtību uz True un iegūstiet sorted_nums2.

Kā parādīts tālāk esošajā koda šūnā, sorted_nums2 ir jauns saraksts ar vienumiem, kas sakārtoti dilstošā secībā.

sorted_nums2 = sorted(nums,reverse = True)
print(sorted_nums2)

# Output: [25, 17, 13, 9, 6]

#3. Šajā piemērā strādāsim ar virkņu sarakstu.

Tāpat kā iepriekšējos piemēros, funkcijas sorted() izsaukšana atgriež jaunu sarakstu. Un preces ir sakārtotas alfabētiskā secībā.

fruits = ['pears','strawberry','apple','pineapple','blueberry']
sorted_fr1 = sorted(fruits)
print(sorted_fr1)

# Output:
['apple', 'blueberry', 'pears', 'pineapple', 'strawberry']

#4. Tagad pielāgosim kārtošanu, izmantojot izvēles atslēgas parametru. Iestatiet atslēgu uz len. Tādējādi saraksts tiks sakārtots pēc virkņu garuma.

Piezīme. Programmā Python iebūvētā funkcija len() uzņem jebkuru iterējamu, piemēram, sarakstus, virkni, korešus un tā tālāk. Un tas atgriež atkārtojamās daļas garumu.

Virkne ar īsāko garumu tiek parādīta vispirms sakārtotajā sarakstā, bet garākā virkne tiek parādīta sakārtotā saraksta beigās.

fruits = ['pear','strawberry','apple','pineapple','blueberry']
sorted_fr2 = sorted(fruits,key=len)
print(sorted_fr2)

# Output:
['pear', 'apple', 'pineapple', 'blueberry', 'strawberry']

Iepriekš redzamajā izvadā bumbieris ir īsākā virkne, bet zemenes ir garākā virkne.

Python sort() metode pret sorted() funkcija

Līdz šim jūs esat iemācījušies izmantot sort() metodi, kā arī sorted() funkciju. Šajā sadaļā uzskaitīsim atšķirības starp šīm divām metodēm.

Python .sort() MethodPython sorted() Funkcija Sakārto sarakstu vietā — modificē sākotnējo sarakstuAtgriež jaunu sakārtotu sarakstuDarbojas tikai ar Python sarakstiemDarbojas ar Python iterables, piemēram, sarakstiem, virknēm un citām kolekcijāmIr atgriešanas tips NavAtgriež sakārtotu iterējamā kopiju

Rezumējot 👩‍🏫

Es ceru, ka šī Python sarakstu apmācība jums bija noderīga.

Ātri apkoposim to, ko esam aptvēruši.

  • Izmantojiet list.sort(reverse = True | False, key = ) ar neobligāto reverse un galveno parametru, lai kārtotu sarakstu vietā.
  • Lai iegūtu sakārtotu saraksta kopiju, izmantojiet sorted (saraksts, apgrieztā vērtība = True | False, key = ).

Tagad, kad esat iemācījies kārtot Python sarakstus, uzziniet par sarakstu izpratni programmā Python. Vai arī varat iemācīties apstrādāt failus vai strādāt ar JSON failiem programmā Python.

Varat izmēģināt iepriekš sniegtos piemērus pcdream.lt tiešsaistes Python kompilatorā.

  Kā nosūtīt failus uz Discord