1. ProgrammingPythonKako koristiti Lambda funkcije u Pythonu

Autor Alan Shovic, John Shovic

Python podržava koncept anonimnih funkcija, koje se nazivaju i lambda funkcije. Anonimni dio imena temelji se na činjenici da funkcija ne mora imati ime (ali može ga imati ako želite). Lambda dio se temelji na korištenju ključne riječi lambda da ih definira u Python-u. Lambda je također 11. pismo grčke abecede.

Ali glavni razlog što se naziv koristi u Python-u je taj što se termin lambda koristi za opis anonimnih funkcija u računici. Sada kada smo to sve razjasnili, možete koristiti ove informacije kako biste izazvali očaravajući razgovor na uredskim zabavama.

Minimalna sintaksa za definiranje lambda izraza (bez imena) s Python-om je:

Lambda argumenti: izraz

Kada ga koristite:

  • Zamijenite argumente podacima koji su preneseni u izraz. Zamijenite izraz izrazom (formulom) koji definira ono što želite da se vrati lambda.

Prilično uobičajen primjer upotrebe ove sintakse jeste kada pokušavate sortirati nizove teksta gdje neki nazivi počinju velikim slovima, a neki počinju malim slovima, kao u ovim imenima:

Adams, Ma, diMeola, Zandusky

Pretpostavimo da napišete sljedeći kôd da biste imena postavili na popis, razvrstali ih i zatim ispisali popis, ovako:

imena = ['Adams', 'Ma', 'diMeola', 'Zandusky']
names.sort ()
ispisa (imena)

Izlaz iz ovoga je:

['Adams', 'Ma', 'Zandusky', 'diMeola']

Dolazak diMeola nakon što je Zandusky početnicima izgleda pogrešno. Ali računala uvijek ne vide stvari kao mi. (Zapravo, oni ne "vide" ništa jer nemaju oči ili mozak ... ali to je i poanta.) Razlog diMeola dolazi nakon Zanduskog zato što se vrsta temelji na ASCII, što je sustav u kojem svaki znak predstavljen brojem.

Sva mala slova imaju brojeve koji su veći od velikih slova. Dakle, pri razvrstavanju sve riječi koje započinju malim slovima dolaze nakon riječi koje započinju velikim slovom. Ako ništa drugo, to barem jamči neznatni hmm.

Da biste pomogli u ovim pitanjima, metoda Python sort () omogućuje vam da u zagrade stavite key = izraz, gdje možete odrediti kako sortirati. Sintaksa je:

.sort (tipka = transformirati)

Dio transformacije je određena varijacija na podatke koji se sortiraju. Ako budete imali sreće i jedna od ugrađenih funkcija poput lena (za dužinu) će raditi za vas, onda to možete jednostavno koristiti umjesto transformacije, ovako:

names.sort (tipka = LEN)

Nažalost za nas, duljina niza ne pomaže u pisanju abecede. Pa kad to pokrenete, ispada da je naredba:

['Ma', 'Adams', 'diMeola', 'Zandusky']

Vrsta se kreće od najkraćeg niza (onoga s najmanje brojeva znakova) do najdužeg niza. Trenutačno nije od pomoći.

Ne možete pisati key = donji ili key = gornji da biste sortirali na malim ili velikim slovima jer donja i gornja slova nisu ugrađene funkcije (što možete brzo provjeriti pomoću ugrađenog googling python 3.7 funkcije).

Umjesto ugrađene funkcije, možete koristiti prilagođenu funkciju koju definirate sami koristeći def. Na primjer, možete stvoriti funkciju nazvanu lower () koja prihvaća niz i vraća taj niz sa svim njegovim slovima pretvorenim u mala slova. Evo funkcije:

def niže (bilo koja string):
"" "Pretvara niz u sva mala slova" ""
vrati anystring.lower ()

Donje je ime sastavljeno, a anystring je rezervirano mjesto za god string koji mu u budućnosti proslijedite. Return anystring.lower () vraća taj niz pretvoren u sva mala slova pomoću .lower () metode objekta str (string). (Pročitajte više o Python string metodama za više informacija.)

Ne možete koristiti zagrade key = niže u vrstama () () („niže“) nije ugrađena funkcija. To je metoda ... nije isto. Vrsta dosadnih sa svim tim buzzwordima.

Pretpostavimo da ovu funkciju napišete u Jupyterovu ćeliju ili .py datoteku. Tada funkciju nazovete nečim poput print (malim slovima ('Zandusky')). Ono što dobivate kao izlaz je taj niz pretvoren u mala slova, kao što vidite ispod.

prilagođena funkcija niže () u Pythonu

Ok, sada imate prilagođenu funkciju za pretvaranje bilo kojeg niza u sva mala slova. Kako to koristite kao vrsta ključa? Jednostavno, koristite tipku = transformirajte istu kao i prije, ali zamijenite transformaciju svojim nazivom prilagođene funkcije. Funkcija se zove malim slovom, tako da koristite .sort (tipka = mala slova), kao što je prikazano na sljedećem:

Def malim slovima (anystring):
"" "Pretvara niz u sva mala slova" ""
vrati anystring.lower ()
 
imena = ['Adams', 'Ma', 'diMeola', 'Zandusky']
names.sort (tipka = lowercaseof)

Izvođenje ovog koda za prikaz popisa imena stavlja ih u ispravnom redoslijedu, jer je sortiranje temeljilo na nizovima koji su sva mala slova. Izlaz je isti kao i prije, jer je samo razvrstavanje, koje se odvijalo iza scene, koristilo mala slova. Izvorni podaci su i dalje u izvornim velikim i malim slovima.

'Adams', 'diMeola', 'Ma', 'Zandusky'

Ako ste nakon svega toga još uvijek budni i svjesni, možda razmišljate: "U redu, riješili ste problem s sortiranjem. Ali mislio sam da ovdje govorimo o lambda funkcijama. Gdje je funkcija lambda? "Još nema funkcije lambde.

Ali ovo je savršen primjer gdje biste mogli koristiti lambda funkciju, jer Python funkcija koju zovete, malim brojem (), sve svoje poslove radi samo s jednim redom koda: return anystring.lower ().

Kada vaša funkcija može učiniti svoj jednostavan jednostavni izraz s jednim retkom, možete preskočiti def i ime funkcije i samo koristiti ovu sintaksu:

lambda parametri: izraz

Zamijenite parametre jednim ili više naziva parametara koje sami sastavljate (imena unutar zagrada nakon def i naziv funkcije u redovnoj funkciji). Zamijenite izraz onim što želite da se funkcija vrati bez riječi return. Dakle, u ovom primjeru ključ, pomoću lambda izraza, bio bi:

lambda anystring: anystring.lower ()

Sada možete vidjeti zašto je to anonimna funkcija. Uklonjen je cijeli prvi redak s nazivom funkcije malim slovima (). Prednost upotrebe lambda izraza je ta što uopće ne trebate vanjsku prilagođenu funkciju. Samo vam treba parametar nakon kojeg slijedi dvotočka i izraz koji mu govori što treba vratiti.

Slika ispod prikazuje kompletni kôd i rezultat njegovog izvršavanja. Dobivate pravilan redoslijed sortiranja bez potrebe za vanjskom funkcijom kupca poput malih slova (). Jednostavno koristite anystring: anystring.lower () (nakon riječi lambda) kao ključ sortiranja.

Python lambda izraz

Dodajmo i da je bilo koji niz nižih parametara od većine Pythonista-a. Python ljudi vole kratka imena, čak i jednoznačna imena. Na primjer, možete zamijeniti bilo koju nizu s (ili bilo kojim drugim slovom), kao na slijedećem tekstu, a kod će raditi potpuno isto:

imena = ['Adams', 'Ma', 'diMeola', 'Zandusky']
names.sort (tipka = lambda s: s.lower ())
ispisa (imena)

Na početku ove tirade spomenuto je da lambda funkcija ne mora biti anonimna. Možete im dati imena i nazvati ih kao i druge funkcije.

Na primjer, ovdje je lambda funkcija nazvana valuta koja uzima bilo koji broj i vraća niz u obliku valute (to jest, sa znakom vodećeg dolara, zarezima između tisuća i dvije znamenke za denar):

valuta = lambda n: f "$ {n:,. 2f}"

Evo jednog imenovanog postotka koji množi bilo koji broj koji mu pošaljete sa 100 i na kraju ga pokaže s dva posto znaka:

postotak = lambda n: f "{n: .2%}"

Sljedeća slika prikazuje primjere obje funkcije definirane na vrhu Jupterove ćelije. Zatim nekoliko ispisa ispisa poziva funkcije po imenu i prosljeđuje im neke uzorke podataka. Svaka izjava za ispis () prikazuje broj u željenom formatu.

Python formatiranje brojeva

Razlog zbog kojeg ih možete definirati kao jednoredne lambde je taj što možete sav posao obaviti u jednom retku, f "$ {n:,. 2f}" za prvi i f "{n: .2%}" za drugi. Ali to samo zato što možete to učiniti, ne znači da morate. Možete koristiti i redovne funkcije, kao što slijedi:

# Prikaži broj u obliku valute.
def valuta (n):
vratiti f "$ {n:,. 2f}"
 
def posto (n):
# Prikaži broj u postotku.
povratak f "{n: .2%}"

Pomoću ove dulje sintakse možete prenijeti i više informacija. Na primjer, možete zadati format koji je poravnan udesno unutar određene širine (recimo 15 znakova), tako da su svi brojevi izašli pravoravnani na istu širinu. Slika prikazuje ovu varijaciju na dvije funkcije.

Funkcija oblikovanja Pythona fiksne širine

Na slici iznad, drugi parametar je opcionalan i zadan je na 15 ako je izostavljen. Dakle, ako ga nazovete ovako:

ispis (valuta (9999))

… Dobivate 9.999,00 dolara jastuka s dovoljno razmaka s lijeve strane da bude 15 znakova širine. Ako ga nazovete ovako:

ispis (valuta (9999,20)

… I dalje dobijate 9 999,00 dolara, ali obloženo s dovoljno razmaka s lijeve strane da bude 20 znakova širine.

Gore upotrijebljeni .ljust () je Python-ova ugrađena metoda niza koja na lijevu stranu niza sadrži dovoljno razmaka da bi mu bila zadana širina. Tu je i metoda rjust () za podmetanje s desne strane. Možete unijeti i znak koji nije razmak. Google python 3 ljust rjust ako vam trebaju dodatne informacije.

Dakle, postoji mogućnost stvaranja vlastitih prilagođenih funkcija u Pythonu. U stvarnom životu, ono što želite učiniti jest, svaki put kada ustanovite da vam treba pristup istom komadu koda - istom bitku za prijavu - iznova i iznova u vašoj aplikaciji, nemojte jednostavno kopirati i zalijepiti taj komad kôd iznova i iznova. Umjesto toga, stavite sav taj kod u funkciju koju možete nazvati imenom.

Na taj način, ako odlučite promijeniti Python stringcode, ne morate proći da kopate po svojoj aplikaciji da biste pronašli sva mjesta koja trebate promijeniti. Samo ga promijenite u funkciji u kojoj je sve definirano na jednom mjestu.

  1. ProgrammingPythonKako definirati i koristiti Python liste

Autor Alan Shovic, John Shovic

Popis je najjednostavnijih podataka u Pythonu. Popis je bilo koji popis podataka koji su odvojeni zarezima unutar uglatih zagrada. Obično dodijelite ime Python popisu koristeći znak =, baš kao što biste to učinili i sa varijablama. Ako popis sadrži brojeve, onda nemojte koristiti navodnike oko njih. Na primjer, ovdje je popis rezultata ispitivanja:

bodovi = [88, 92, 78, 90, 98, 84]

Ako popis sadrži žice, tada bi se, kao i uvijek, ti ​​nizovi trebali nalaziti u jednim ili dvostrukim navodnicima, kao u ovom primjeru:

Da biste prikazali sadržaj popisa na zaslonu, možete ga ispisati kao što biste ispisali bilo koju redovnu varijablu. Na primjer, izvršavanje ispisa (studenata) u vašem kodu nakon definiranja tog popisa to prikazuje na zaslonu.

['Mark', 'Amber', 'Todd', 'Anita', 'Sandy']

To možda nije baš ono što ste imali na umu. Ali ne brinite, Python nudi puno sjajnih načina kako pristupiti podacima na popisima i prikazati ih koliko želite.

Referenciranje stavki popisa Python prema položaju

Svaka stavka na popisu ima položajni broj, počevši od nule, iako ne vidite nijedan broj. Bilo koju stavku na popisu možete uputiti prema njenom broju koristeći naziv za popis, a slijedi broj u uglatim zagradama. Drugim riječima, koristite ovu sintaksu:

listname [x]

Zamijenite naziv liste imenom popisa kojem pristupate i zamijenite x s brojem pozicije stavke koju želite. Zapamtite, prva stavka je uvijek broj nula, a ne jedna. Na primjer, u prvom retku u nastavku definiram popis pod nazivom studenti i zatim ispisujem broj nule s tog popisa. Rezultat je kod izvršenja koda prikazan naziv Mark.
students = ["Mark", "Amber", "Todd", "Anita", "Sandy"]
ispis (učenici [0])
oznaka

Kad čitate stavke s pristupnog popisa, profesionalci koriste riječ sub ispred broja. Na primjer, učenici [0] govorili bi kao studenti pod nulom.

Ovaj sljedeći primjer prikazuje popis s rezultatima. Funkcija print () ispisuje broj položaja posljednjeg rezultata na popisu, koji je 4 (jer je prvi uvijek nula).

bodovi = [88, 92, 78, 90, 84]
ispis (rezultati [4])
84

Ako pokušate pristupiti stavci popisa koja ne postoji, pojavit će se pogreška "indeks izvan dometa". Indeksni dio odnosi se na broj unutar uglatih zagrada. Na primjer, donja slika prikazuje mali eksperiment u Jupyterovoj bilježnici gdje je stvoren popis rezultata, a zatim je pokušao ispis rezultata [5].

Nije uspio i stvorio je pogrešku jer nema rezultata [5]. Postoje samo rezultati [0], bodovi [1], bodovi [2], bodovi [3] i rezultati [4], jer brojanje uvijek započinje s nulom od prvog na popisu.

Raspon indeksa Python

Pregledavanje po Python popisu

Za pristup svakoj stavci na popisu, samo koristite petlju s ovom sintaksom:

za x na popisu:

Zamijenite x promjenjivim imenom po vašem izboru. Zamijenite popis s imenom popisa. Jednostavan način čitanja koda je uvijek koristiti množinu za ime popisa (kao što su studenti, rezultati). Tada možete koristiti jedinstveno ime (učenik, rezultat) za naziv varijable. S tim pristupom ne morate koristiti ni brojeve pretplata (brojevi u uglatim zagradama). Na primjer, sljedeći kôd ispisuje svaki rezultat na popisu rezultata:

za rezultat u rezultatima:
ispis (rezultat)

Ne zaboravite da uvijek uvlačite kôd koji treba izvesti unutar petlje. Ova slika prikazuje potpuniji primjer gdje možete vidjeti rezultat pokretanja koda u Jupyterovoj bilježnici.

Pregledavanje po Python popisu

Provjera sadrži li popis Python stavku

Ako želite da vaš kôd provjeri sadržaj popisa da biste vidjeli sadrži li on već neku stavku, upotrijebite u nazivu popisa u izjavi if ili varijabli.

Na primjer, kôd na slici ispod stvara popis imena. Zatim dvije varijable pohranjuju rezultate pretraživanja popisa za imenima Anita i Bob. Ispis sadržaja svake varijable prikazuje True za onaj na kojem je ime (Anita) na popisu. Test da li se Bob nalazi na popisu dokazuje lažno.

Pogledajte je li stavka na popisu Python

Dobivanje duljine Python liste

Da biste odredili koliko je stavki na popisu, upotrijebite funkciju len () (kratka za duljinu). Stavite naziv popisa u zagrade. Na primjer, upišite sljedeći kôd u Jupyterovu bilježnicu ili prompt Python-a ili nešto drugo:

students = ["Mark", "Amber", "Todd", "Anita", "Sandy"]
ispis (LEN (studenti))

Izvođenje tog koda daje ovaj izlaz:

5

Na popisu je doista pet stavki, iako je posljednja uvijek jedna manja od broja, jer Python počinje brojati od nule. Tako se posljednja Sandy zapravo odnosi na studente [4], a ne na studente [5].

Dodavanje stavke na kraj Python popisa

Kad želite da vaš Python kôd doda novu stavku na kraj popisa, koristite .append () metodu sa vrijednošću koju želite dodati u zagradama. Unutar navodnika možete koristiti naziv varijable ili doslovno vrijednost.

Na primjer, na sljedećoj slici redak koji čita students.append ("Goober") dodaje ime Goober na popis. Linija koja glasi students.append (new_student) dodaje bilo što ime pohranjeno u varijablu nazvanoj new_student na popis. Metoda .append () uvijek se dodaje na kraj popisa. Kada ispisujete popis, na kraju vidite ta dva nova imena.

Popis dodataka Python-a

Možete koristiti test da biste vidjeli postoji li stavka na popisu, a zatim je dodate samo kada je stavka već nema. Na primjer, donji kôd neće dodati ime Amber na popis jer je to ime već na popisu:

student_name = "Amanda"

#Dodajte ime studenta, ali samo ako već nije na popisu.
ako student_name u studentima:
    ispis (ime_naznaka + "već na popisu")
drugo:
    students.append (student_name)
    ispis (ime_naznaka + "dodano na popis")

Umetanje stavke u popis Python

Iako metoda dodavanja () omogućuje dodavanje stavke na kraj popisa, metoda insert () omogućuje vam dodavanje stavke na popis na bilo kojem mjestu. Sintaksa za insert () je

listname.insert (pozicija, stavka)

Zamijenite naziv popisa s nazivom popisa, postavite ga na položaj u koji želite umetnuti stavku (na primjer, 0 da biste je učinili prvom stavkom, 1 da biste je učinili drugom stavkom i tako dalje). Zamijenite stavku vrijednošću ili imenom varijable koja sadrži vrijednost koju želite staviti na popis.

Na primjer, sljedeći kôd čini Lupeu prvom stavkom na popisu:

#Izradite popis nizova (imena).
students = ["Mark", "Amber", "Todd", "Anita", "Sandy"]

student_name = "Lupe"
# Na ime popisa dodajte ime učenika.
students.insert (0, student_name)

# Pokaži mi novi popis.
ispisa (studenti)

Ako pokrenete kôd, print (studenti) će nakon umetanja novog imena prikazati popis na sljedeći način:

['Lupe', 'Mark', 'Amber', 'Todd', 'Anita', 'Sandy']

Promjena stavke na popisu Pythona

Možete promijeniti stavku na popisu pomoću operatora = dodjele (provjerite ove uobičajene Python-ove operatore) baš kao i kod varijabli. Samo obavezno uključite broj indeksa u uglate zagrade stavke koju želite promijeniti. Sintaksa je:

listname [index] = NEWVALUE

Zamijenite naziv liste imenom popisa; zamijenite indeks pretplatom (indeksni broj) stavke koju želite promijeniti; i zamijenite novu vrijednost onom što želite staviti u stavku popisa. Na primjer, pogledajte ovaj kod:

#Izradite popis nizova (imena).
students = ["Mark", "Amber", "Todd", "Anita", "Sandy"]
studenti [3] = "Hobart"
ispisa (studenti)

Kad pokrenete ovaj kod, izlaz je sljedeći, jer je Anino ime promijenjeno u Hobart.

['Mark', 'Amber', 'Todd', 'Hobart', 'Sandy']

Kombiniranje Python popisa

Ako imate dva popisa koja želite kombinirati u jedan popis, upotrijebite funkciju exte () sa sintaksom:

original_list.extend (additional_items_list)

U kodu zamijenite original_list s nazivom popisa kojem ćete dodavati nove stavke popisa. Zamijenite dodatni_items_list imenom popisa koji sadrži stavke koje želite dodati prvom popisu. Evo jednostavnog primjera upotrebe popisa nazvanih list1 i list2. Nakon što izvršite list1.extend (list2), prvi popis sadrži stavke s oba popisa, kao što možete vidjeti na ispisu ispisa () izjave na kraju.

# Stvorite dva popisa imena.
list1 = ["Zara", "Lupe", "Hong", "Alberto", "Jake"]
list2 = ["Huey", "Dewey", "Louie", "Nader", "Bubba"]

# Dodaj listu2 imena na listu1.
list1.extend (Popis2)

# Ispiši listu 1.
ispis (List1)

['Zara', 'Lupe', 'Hong', 'Alberto', 'Jake', 'Huey', 'Dewey', 'Louie', 'Nader', 'Bubba']

Lako Parcheesi, zar ne?

Uklanjanje stavki Python popisa

Python nudi metodu uklanjanja () tako da možete ukloniti bilo koju vrijednost s popisa. Ako se stavka nalazi na popisu više puta, uklanja se samo prva pojava. Na primjer, sljedeći kôd prikazuje popis slova sa slovom C ponovljenom nekoliko puta. Tada kôd koristi slova.remove ("C") za uklanjanje slova C s popisa:

# Uklonite "C" s popisa.
letters.remove ( "C"),

# Pokaži mi novi popis.
ispisa (slova)

Kada stvarno izvršite ovaj kôd i zatim ispisujete popis, vidjet ćete da je uklonjeno samo prvo slovo C:

['A', 'B', 'D', 'C', 'E', 'C']

Ako trebate ukloniti sve stavke, možete upotrijebiti petlju dok ponavljate .remove sve dok stavka i dalje ostane na popisu. Na primjer, ovaj kôd ponavlja .remove sve dok je "C" još uvijek na popisu.

# Stvorite popis nizova.
slova = ["A", "B", "C", "D", "C", "E", "C"]

Ako želite ukloniti stavku na temelju njene pozicije na popisu, upotrijebite pop () s indeksnim brojem, a ne ukloni () s vrijednošću. Ako želite ukloniti zadnju stavku s popisa, upotrijebite pop () bez indeksnog broja.

Na primjer, sljedeći kôd stvara popis, jedan redak uklanja prvu stavku (0), a drugi uklanja zadnju stavku (pop () bez zagrade u zagradama). Ispis popisa pokazuje da su te dvije stavke uklonjene:

# Stvorite popis nizova.
slova = ["A", "B", "C", "D", "E", "F", "G"]
 
# Uklonite prvu stavku.
letters.pop (0)
#Uklonite posljednju stavku.
letters.pop ()
 
# Pokaži mi novi popis.
ispisa (slova)

Pokretanje koda pokazuje da je iskakanje prvih i zadnjih predmeta uistinu uspjelo:

['B', 'C', 'D', 'E', 'F']

Kad stavku () stavite na popis, možete pohraniti kopiju te vrijednosti u neku varijablu. Na primjer, ova slika prikazuje isti kod kao i gore. No, on pohranjuje kopije onoga što je uklonjeno u varijablama nazvanim first_removed i last_removed. Na kraju ispisuje Python popis, a također pokazuje koja su slova uklonjena.

uklonite stavke s popisa Python

Python također nudi naredbu del (skraćeno za brisanje) koja briše bilo koju stavku s popisa na temelju indeksnog broja (položaja). Ali opet, morate se sjetiti da je prva stavka jednaka nuli. Dakle, recimo da pokrenete sljedeći kôd za brisanje predmeta broj 2 s popisa:

# Stvorite popis nizova.
slova = ["A", "B", "C", "D", "E", "F", "G"]
 
# Ukloni stavku 2.
del slova [2]
 
ispisa (slova)

Pokretanje tog koda ponovno prikazuje popis, kako slijedi. Slovo C je izbrisano, što je ispravna stavka koju treba izbrisati jer su slova numerirana 0, 1, 2, 3, i tako dalje.

['A', 'B', 'D', 'E', 'F', 'G']

Također možete koristiti del da biste izbrisali cijeli popis. Samo nemojte koristiti kvadratne zagrade i indeksni broj. Na primjer, kôd koji vidite dolje stvara popis, a zatim ga briše. Pokušaj ispisa popisa nakon brisanja uzrokuje pogrešku, jer popis više ne postoji kad se izvrši izjava print ().

izbriši Python popis

Brisanje Pythonova popisa

Ako želite izbrisati sadržaj popisa, ali ne i sam popis, upotrijebite .clear (). Popis i dalje postoji; međutim, ne sadrži nijedan predmet. Drugim riječima, to je prazan popis. Sljedeći kod pokazuje kako biste to mogli testirati. Pokretanje koda na kraju prikazuje [], što vam daje do znanja da je popis prazan:

# Stvorite popis nizova.
slova = ["A", "B", "C", "D", "E", "F", "G"]
 
# Izbrišite popis svih unosa.
letters.clear ()
 
# Pokaži mi novi popis.
ispisa (slova)

[]

Prebrojanje koliko se predmeta pojavi na popisu Pythona

Možete upotrebljavati Python count () metodu za brojanje koliko puta se stavka pojavi na popisu. Kao i kod drugih metoda popisa, sintaksa je jednostavna:

listname.count (x)

Zamijenite naziv liste imenom svog popisa, a x vrijednošću koju tražite (ili imenom varijable koja sadrži tu vrijednost).

Kod na slici ispod računa koliko se puta slovo B pojavljuje na popisu, koristeći doslovno B unutar zagrada u .count (). Taj isti kod također broji broj razreda C, ali ta je vrijednost spremljena u varijabli samo da bi se prikazala razlika u sintaksi. Oba su brojala kao što možete vidjeti na izlazu programa na dnu. Jedna je dodana za brojanje vrijednosti F, ne upotrebljavajući nikakve varijable. F-ovi se broje pravo u kodu koji prikazuje poruku. Nema F ocjena, tako da se vraća nula, kao što možete vidjeti u rezultatu.

broje stavke popisa Python

Prilikom pokušaja kombiniranja brojeva i nizova kako biste stvorili poruku, imajte na umu da morate pretvoriti brojeve u žice koristeći funkciju str (). Inače, dobivate pogrešku koja glasi da nešto slično može povezati samo str (a ne "int") u str. U toj poruci int je kratki za cijeli broj, a str kratki za niz.

Pronalaženje indeksa stavke popisa Python

Python nudi .index () metodu koja vraća broj koji označava poziciju, na temelju broja indeksa, stavke na popisu. Sintaksa je:

listname.index (x)

Kao i uvijek, ime popisa zamijenite imenom popisa koji želite pretraživati. Zamijenite x onim što tražite (kao doslovno ili kao naziv varijable, kao i uvijek). Naravno, ne postoji jamstvo da je stavka na popisu, pa čak i ako postoji, ne postoji jamstvo da je stavka na popisu samo jednom. Ako stavka nije na popisu, pojavljuje se pogreška. Ako se stavka nalazi na popisu više puta, tada se vraća indeks prve odgovarajuće stavke.

Sljedeća slika prikazuje primjer gdje se program ruši u liniji f_index = grade.index (look_for) jer na popisu nema F.

Indeks stavki popisa Python

Jednostavan način za rješavanje problema je upotreba izjave if da biste vidjeli je li neka stavka na popisu prije nego što pokušate dobiti njen indeksni broj. Ako stavka nije na popisu, prikažite poruku da je tako. Inače, nabavite indeksni broj i pokažite ga u poruci. Ta šifra je sljedeća:

# Stvorite popis nizova.
ocjene = ["C", "B", "A", "D", "C", "B", "C"]
# Odlučite što tražiti
look_for = "F"
# Pogledajte je li predmet na popisu.
ako pogledate_za ocjene:
    # Ako je na popisu, uzmite i pokažite indeks.
    ispis (str (look_for) + "je u indeksu" + str (grade.index (look_for)))
drugo:
    # Ako nije na popisu, nemojte ni pokušavati indeksni broj.
    ispis (str (look_for) + "nije na popisu.")

Abeceda i sortiranje Python popisa

Python nudi metodu sortiranja () za sortiranje popisa. U svom najjednostavnijem obliku stavke na popisu sadrži abecedno (ako su to žice). Ako popis sadrži brojeve, oni su razvrstani najmanji do najveći. Za jednostavnu vrstu takve vrste upotrijebite sort () s praznim zagradama:

listname.sort ()

Zamijenite naziv popisa s imenom popisa. Sljedeća slika prikazuje primjer pomoću popisa nizova i popisa brojeva. U primjeru je za svaki od njih stvoren novi popis jednostavnim dodjeljivanjem svakog sortiranog popisa novom nazivu popisa. Tada kôd ispisuje sadržaj svakog razvrstanog popisa.

sortiranje Python liste

Ako vaš popis sadrži žice sa mješavinom velikih i malih slova, a ako rezultati te vrste ne izgledaju ispravno, pokušajte zamijeniti .sort () s .sort (key = lambda s: s.lower ()), a zatim ponovo pokrenuti kod.

Datumi su malo zamršeniji jer ih ne možete jednostavno unijeti kao žice, poput "31.12.2020." Moraju biti vrsta podataka o datumu za ispravno razvrstavanje. To znači da se koristi datumski modul i metoda datum () za definiranje svakog datuma. Možete dodati datume u popis kao i bilo koji drugi popis. Na primjer, u sljedećem retku kôd stvara popis od četiri datuma i kôd je sasvim u redu.

datumi = [dt.date (2020,12,31), dt.date (2019,1,31), dt.date (2018,2,28), dt.date (2020,1,1)]

Računalo sigurno neće imati ništa protiv ako ovako stvorite popis. Ali ako želite kôd učiniti čitljivijim sebi ili drugim programerima, možda biste trebali kreirati i dodavati svaki datum, jedan po jedan, tako da je malo lakše vidjeti što se događa i tako da nemate da se bave s toliko zareza u jednom retku koda. Slika ispod pokazuje primjer gdje je stvoren prazan popis pod nazivom datelist:

datelist = []
prikažite datume u Python-u

Potom je jedan po jedan datum dodan popisu koristeći sintaksu dt.date (godina, mjesec, dan).

Nakon kreiranja popisa, kôd ih koristi datelist.sort () da bi ih razvrstao u kronološki redoslijed (najranije do najnovije). Ne morate koristiti ispis (datelistički) u tom kodu jer ta metoda prikazuje datume s uključenim podacima o vrsti podataka, poput ovog:

[datetime.date (2018, 2, 28), datetime.date (2019, 1, 31), datetime.date (2020, 1, 1), datetime.date (2020, 12, 31)]

Nije najlakši za čitanje popis. Dakle, umjesto da ispisujete cijeli popis s jednom izjavom print (), možete svaki dan na popisu preslikati i svaki ispisati formatirano f-stringom% m /% d /% Y. To prikazuje svaki datum u vlastitom retku u mm / dd / gggg

Ako želite sortirati stavke obrnutim redoslijedom, stavite reverse = true unutar zagrade za sort () (i ne zaboravite napraviti veliko veliko slovo). Slika ispod prikazuje primjere sortiranja sva tri popisa u silaznom (obrnutom) redoslijedu koristeći reverse = True.

poredati podatke na Python popisu obrnuto

Obrtanje popisa Python

Također možete obrnuti redoslijed stavki na popisu pomoću .reverse metode. To nije isto što i sortiranje obrnuto, jer kada sortirate obrnuto, još uvijek sortirate: Z – A za žice, najveće do najmanje za brojeve, najnovije do najranije za datume. Kad obrnete popis, stavke na popisu jednostavno obrnete, bez obzira na njihov redoslijed, bez pokušaja sortiranja na bilo koji način.

Sljedeći kôd prikazuje primjer u kojem preokrećete redoslijed imena na popisu i zatim ga ispisujete. Izlaz prikazuje stavke popisa obrnute od izvornog reda:

# Stvorite popis nizova.
name = ["Zara", "Lupe", "Hong", "Alberto", "Jake"]
# Preokrenite popis
names.reverse ()
# Ispiši popis
ispisa (imena)
 
['Jake', 'Alberto', 'Hong', 'Lupe', 'Zara']

Kopiranje Pythonova popisa

Ako ikad trebate raditi s kopijom popisa, koristite metodu .copy () kako ne bi promijenili izvorni popis,. Na primjer, sljedeći je kod sličan prethodnom kodu, osim što umjesto obrnutog redoslijeda izvornog popisa, napravite kopiju popisa i obrnete ga. Ispis sadržaja svakog popisa pokazuje kako je prvi popis još u izvornom redoslijedu, dok je drugi obrnut:

# Stvorite popis nizova.
name = ["Zara", "Lupe", "Hong", "Alberto", "Jake"]
 
# Napravite kopiju popisa
backward_names = names.copy ()
# Preokrenite kopiju
backward_names.reverse ()
 
# Ispiši popis
ispisa (imena)
ispisa (backward_names)
 
['Zara', 'Lupe', 'Hong', 'Alberto', 'Jake']
['Jake', 'Alberto', 'Hong', 'Lupe', 'Zara']

Za buduće reference sljedeća tablica sažima metode koje ste naučili.