Valmistautuminen ohjelmointihaastatteluihin · Oppitunti

Järjestä usean kentän perusteella

Ratkaise tasatilanteet tuple-avaimilla ja reversellä

Oppitunti 2/413 vaihetta

Järjestä usean kentän perusteella on ilmainen Valmistautuminen ohjelmointihaastatteluihin-oppitunti CoddyKitissä. Tämä on oppitunti 2/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 Valmistautuminen ohjelmointihaastatteluihin-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Valmistautuminen ohjelmointihaastatteluihin-kurssilla on yhteensä 4 oppituntia.

Kun yksi key ei riitä

Joskus alkiot ovat ensimmäisen kentän perusteella tasatilanteessa, joka on ratkaistava. Ratkaisuna on tupla-avain, joka luettelee kentät tärkeysjärjestyksessä.

Tuplat vertailevat vasemmalta oikealle

Python vertailee tupleja alkio kerrallaan: ensin tarkistetaan ensimmäinen alkio, ja toista tarkastellaan vasta, jos ensimmäiset ovat tasan.

print((1, 9) < (1, 2))   # False
print((1, 2) < (2, 0))   # True

Tupla-avain kahdelle kentälle

Palauttakaa key-funktiosta tupla, jos haluatte lajitella ensin ensimmäisen kentän ja sitten toisen. Näin henkilöt lajitellaan iän ja sen jälkeen nimen mukaan.

people.sort(key=lambda p: (p.age, p.name))

Ensisijainen ja toissijainen järjestys

Vasemmanpuoleinen kenttä määrittää ensisijaisen lajittelun ja seuraava kenttä ratkaisee tasatilanteet. Vaihtamalla tuplan järjestystä muutatte sitä, kumpi kenttä määrää.

data = [(2, "b"), (1, "z"), (1, "a")]
print(sorted(data))
# [(1, 'a'), (1, 'z'), (2, 'b')]

Yhdistäkää nouseva ja laskeva järjestys

Jos haluatte järjestää yhden kentän nousevasti ja toisen laskevasti, negatoikaa tupla-avaimessa se numeerinen kenttä, jonka haluatte laskevaan järjestykseen.

items.sort(key=lambda x: (x.group, -x.score))

Negaatio toimii vain luvuilla

Miinusmerkkitemppu toimii vain luvuilla. Merkkijonokentän kääntämiseksi teidän on ketjutettava lajitteluja negatoimisen sijaan.

Vakaa lajittelu mahdollistaa ketjuttamisen

Koska lajittelu on vakaa, voitte lajitella ensin toissijaisen avaimen ja sitten ensisijaisen avaimen, jolloin tasatilanteet pysyvät oikeassa järjestyksessä.

rows.sort(key=lambda r: r.name)
rows.sort(key=lambda r: r.age, reverse=True)

Ketjutus vai yksi tupla

Yksi tupla-avain on yksinkertaisissa tapauksissa nopeampi ja selkeämpi. Ketjutetut lajittelut ovat hyödyllisiä, kun yksi kenttä lajitellaan merkkijonona nousevasti ja toinen laskevasti.

itemgetter nopeutta varten

Indekseihin perustuville tupleille itemgetter on selkeä ja nopea key. Se poimii useita kenttiä kerralla prioriteettijärjestyksessä.

from operator import itemgetter
rows.sort(key=itemgetter(1, 0))

Tasatilanteen ratkaisijat tekevät tulosteesta deterministisen

Viimeisen yksilöllisen tasatilanteen ratkaisijan, kuten id:n, lisääminen tekee tulosteesta saman jokaisella suorituskerralla. Tiukat tarkistimet arvostavat tätä.

Suunnitelkaa key ennen koodausta

Lukekaa tehtävä ja kirjoittakaa lajittelukentät tärkeysjärjestykseen. Selkeä tupla-avain muuttaa monimutkaisen vertailun yhdeksi lyhyeksi riviksi.

Pikatarkistus

Haluatte lajitella opiskelijat arvosanan mukaan nousevasti ja sitten nimen mukaan nousevasti.

Kertaus

Voitte ratkaista tasatilanteet tupla-avaimella, käyttää lukujen negaatiota laskevaan järjestykseen ja ketjuttaa vakaita lajitteluja eri suuntien yhdistämiseksi. Tasatilanteen ratkaisijat pitävät tulosteen siistinä. ✅

Aloita maksutta

Opi Valmistautuminen ohjelmointihaastatteluihin 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
90
Oppitunnit
360

Usein kysytyt kysymykset

Onko oppitunti ”Järjestä usean kentän perusteella” ilmainen?

Kyllä – oppitunnin ”Järjestä usean kentän perusteella” 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 Valmistautuminen ohjelmointihaastatteluihin-kurssin, päivitä CoddyKit PROhon. Valmistautuminen ohjelmointihaastatteluihin-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Järjestä usean kentän perusteella”?

Ratkaise tasatilanteet tuple-avaimilla ja reversellä Harjoittelet Valmistautuminen ohjelmointihaastatteluihin-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Valmistautuminen ohjelmointihaastatteluihin-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Valmistautuminen ohjelmointihaastatteluihin-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Järjestä usean kentän perusteella”-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ä Valmistautuminen ohjelmointihaastatteluihin-oppitunnilla?

Kyllä. Jokainen Valmistautuminen ohjelmointihaastatteluihin-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. sorted() ja key-funktio
  2. Järjestä usean kentän perusteella
  3. Mukautettu järjestys functools.cmp_to_keyillä
  4. Miksi lajittelu ensin avaa ratkaisuja
← Takaisin: Valmistautuminen ohjelmointihaastatteluihin