itertools: äärettömät ja äärelliset iteraattorit
Käyttäkää count-, cycle-, islice-, chain- ja zip_longest-funktioita.
itertools: äärettömät ja äärelliset iteraattorit on ilmainen Python Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Python Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Python Academy-kurssilla on yhteensä 4 oppituntia.
Mikä itertools on
itertools on vakiokirjaston moduuli, joka tarjoaa muistia säästäviä rakennuspalikoita iteraattoreiden luomiseen. Kaikki funktiot palauttavat iteraattoreita, eivät listoja.
import itertools
# count: infinite counter
for i in itertools.islice(itertools.count(10, 2), 5):
print(i, end=" ") # 10 12 14 16 18count()
count(start, step) tuottaa äärettömän aritmeettisen jonon. Käyttäkää sitä aina yhdessä islice-funktion tai lopetusehdon kanssa.
import itertools
for n in itertools.count(1, 10):
if n > 40:
break
print(n, end=" ") # 1 11 21 31 41cycle()
cycle(iterable) toistaa iteroitavaa äärettömästi.
import itertools
colors = itertools.cycle(["red","green","blue"])
for _ in range(7):
print(next(colors), end=" ")
# red green blue red green blue redrepeat()
repeat(value, times) tuottaa saman arvon times kertaa tai äärettömän monta kertaa, jos times jätetään pois.
import itertools
print(list(itertools.repeat(42, 4))) # [42, 42, 42, 42]
print(list(map(pow, range(5), itertools.repeat(2))))
# [0, 1, 4, 9, 16]islice()
islice(it, stop) tai islice(it, start, stop, step) viipaloi iteraattorin materialisoimatta sitä.
import itertools
result = list(itertools.islice(range(100), 2, 10, 2))
print(result) # [2, 4, 6, 8]chain()
chain(*iterables) yhdistää useita iteroitavia peräkkäin yhdeksi iteraattoriksi.
import itertools
result = list(itertools.chain([1,2], [3,4], [5]))
print(result) # [1, 2, 3, 4, 5]
# chain.from_iterable for a list of iterables:
nested = [[1,2],[3,4]]
print(list(itertools.chain.from_iterable(nested)))zip_longest()
zip_longest yhdistää eripituisten iteroitavien alkiot ja täyttää puuttuvat arvot arvolla fillvalue.
import itertools
a = [1, 2, 3]
b = ["a", "b"]
print(list(itertools.zip_longest(a, b, fillvalue=0)))
# [(1, "a"), (2, "b"), (3, 0)]dropwhile() ja takewhile()
takewhile(pred, it) tuottaa alkioita niin kauan kuin predikaatti on tosi. dropwhile toimii päinvastoin.
import itertools
nums = [1, 3, 5, 6, 7, 9]
print(list(itertools.takewhile(lambda x: x % 2, nums)))
# [1, 3, 5]
print(list(itertools.dropwhile(lambda x: x % 2, nums)))
# [6, 7, 9]filterfalse()
filterfalse(pred, it) tuottaa alkiot, joille predikaatti on False — se on filter()-funktion komplementti.
import itertools
evens = list(itertools.filterfalse(lambda x: x%2, range(10)))
print(evens) # [0, 2, 4, 6, 8]starmap()
starmap(func, iterable) soveltaa funktiota kuhunkin iteroitavasta saatavaan argumenttituplaan.
import itertools, operator
pairs = [(2,3),(4,5),(1,10)]
result = list(itertools.starmap(operator.mul, pairs))
print(result) # [6, 20, 10]groupby()
groupby(it, key) ryhmittelee peräkkäiset alkiot, joilla on sama avainarvo. Lajitelkaa iteroitava ensin, jotta ryhmittely onnistuu oikein.
import itertools
data = sorted([("a",1),("b",2),("a",3)], key=lambda x:x[0])
for key, group in itertools.groupby(data, key=lambda x:x[0]):
print(key, list(group))Pikatarkistus
Mitä itertools.chain([1,2], [3,4]) tuottaa?
Kertaus
itertools tarjoaa äärettömiä iteraattoreita (count, cycle, repeat), viipalointia (islice), yhdistämistä (chain, zip_longest) ja suodatusta (takewhile, dropwhile, filterfalse). Kaikki ovat laiskoja ja muistia säästäviä.
Opi Python tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 76
- Oppitunnit
- 320
Usein kysytyt kysymykset
Onko oppitunti ”itertools: äärettömät ja äärelliset iteraattorit” ilmainen?
Kyllä – oppitunnin ”itertools: äärettömät ja äärelliset iteraattorit” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Python Academy-kurssin, päivitä CoddyKit PROhon. Python Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”itertools: äärettömät ja äärelliset iteraattorit”?
Käyttäkää count-, cycle-, islice-, chain- ja zip_longest-funktioita. Harjoittelet Python Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Python Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Python Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.
Kuinka kauan ”itertools: äärettömät ja äärelliset iteraattorit”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Python Academy-oppitunnilla?
Kyllä. Jokainen Python Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- itertools: äärettömät ja äärelliset iteraattorit
- itertools: kombinatoriikka
- functools: partial ja reduce
- functools: lru_cache ja cached_property