Python Academy · Oppitunti

Sisäkkäiset silmukat ja silmukkamallit

Yhdistäkää sisäkkäisiä silmukoita ruudukkojen, kuvioiden ja kertymien käsittelyyn.

Oppitunti 4/414 vaihetta

Sisäkkäiset silmukat ja silmukkamallit on ilmainen Python Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/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.

Johdanto

Silmukoiden yhdistäminen mahdollistaa esimerkiksi matriisien läpikäynnin, monitasoisen haun ja yhdistelmien muodostamisen.

Perustason sisäkkäinen silmukka

Kaksi for-silmukkaa: ulompi suoritetaan N kertaa ja sisempi M kertaa jokaista ulomman silmukan kierrosta kohden — yhteensä N*M iteraatiota.
for i in range(3):
    for j in range(3):
        print(i, j)

Kertotaulu

Sisäkkäiset silmukat muodostavat taulukoita luontevasti. Ulompi silmukka vastaa riviä ja sisempi saraketta.
for i in range(1, 4):
    for j in range(1, 4):
        print(f'{i*j:3}', end='')
    print()

Kolmiomalli

Tulostakaa * i kertaa kullakin rivillä: for i in range(1,6): print('*'*i). Tämä havainnollistaa, miten sisemmän silmukan toistomäärä riippuu ulommasta silmukasta.
for i in range(1, 6):
    print('*' * i)

Matriisin läpikäynti

Sisäkkäiset silmukat ovat vakiintunut tapa käydä läpi kaksiulotteisen listan jokainen alkio.
matrix = [[1,2,3],[4,5,6]]
for row in matrix:
    for val in row:
        print(val, end=' ')
    print()

Kertymämalli

Laskekaa kaikkien alkioiden summa: total = 0; for row in matrix: for v in row: total += v
matrix = [[1,2],[3,4]]
total = sum(v for row in matrix for v in row)
print(total)

Alkioiden etsiminen

Etsikää arvo kaksiulotteisesta listasta ja tallentakaa sen sijainti sisäkkäisen silmukan avulla.
matrix = [[1,2,3],[4,5,6],[7,8,9]]
for i, row in enumerate(matrix):
    for j, val in enumerate(row):
        if val == 5:
            print(f'Found at ({i},{j})')

Yhdistelmät ilman toistoa

for i in range(n): for j in range(i+1, n): muodostaa kaikki listan yksilölliset parit.
items = ['a','b','c']
for i in range(len(items)):
    for j in range(i+1, len(items)):
        print(items[i], items[j])

Sisäkkäisten silmukoiden tehokkuus

O(n^2) on sisäkkäisille silmukoille tavallinen aikavaativuus. Jos sisempi silmukka tekee dict-haun listan läpikäynnin sijaan, aikavaativuus voidaan pienentää muotoon O(n).
# Efficient: use a set for inner lookup
data = {1, 2, 3, 4}
result = [x for x in range(10) if x in data]  # O(n)
print(result)

Litistäminen sisäkkäisellä comprehensiolla

[x for row in matrix for x in row] on litistävä sisäkkäinen comprehension. Lukekaa se vasemmalta oikealle: ulompi silmukka tulee ensin.
matrix = [[1,2],[3,4]]
flat = [x for row in matrix for x in row]
print(flat)

Poistuminen sisäkkäisistä silmukoista

Käyttäkää lippua tai sijoittakaa silmukat funktion sisään ja poistukaa usealta tasolta siististi return-komennolla.
def find_in_matrix(matrix, target):
    for i, row in enumerate(matrix):
        for j, val in enumerate(row):
            if val == target:
                return (i, j)
    return None
print(find_in_matrix([[1,2],[3,4]], 3))

Pikatarkistus

Mikä on range(4)- ja range(3)-funktioita käyttävien kahden sisäkkäisen silmukan iteraatioiden kokonaismäärä?

Kertaus

Sisäkkäiset silmukat: yhteensä N*M iteraatiota. Käyttäkää niitä esimerkiksi kuvioihin, matriisien läpikäyntiin ja yhdistelmiin. Litistäkää rakenteet comprehensionilla. Poistukaa silmukoista return-komennolla tai lippumuuttujan avulla.

Jatka eteenpäin

Hienoa työtä! Siirtykää seuraavaan oppituntiin jatkaaksenne taitojenne kehittämistä.
Aloita maksutta

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 ”Sisäkkäiset silmukat ja silmukkamallit” ilmainen?

Kyllä – oppitunnin ”Sisäkkäiset silmukat ja silmukkamallit” 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 ”Sisäkkäiset silmukat ja silmukkamallit”?

Yhdistäkää sisäkkäisiä silmukoita ruudukkojen, kuvioiden ja kertymien käsittelyyn. 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 4/4.

Kuinka kauan ”Sisäkkäiset silmukat ja silmukkamallit”-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

  1. if / elif / else -lauseet
  2. for-silmukat ja range()
  3. while-silmukat ja silmukan ohjaus
  4. Sisäkkäiset silmukat ja silmukkamallit
← Takaisin: Python Academy