Szeletelés és egyelés, avagy így lettünk hentesek és kertészek

Butcher by Chris Uminga

Mikor jövök már én? Imádok LISTÁKAT szeletelni!

Mielőtt azonban ilyen remek foglalkozásokat találunk magunknak, beszéljük meg, hogy mi az az index.

Az index nem egyéb, mint a lista egy elemének sorszáma a listán belül. A listák elemeinek számozása 0-tól indul mindig. Azaz az, amit te első elemnek mondanál, a nulladik. A listákban az elemek az indexük alapján is elérhetők. Ilyenkor

  • leírjuk a lista nevét
  • és közvetlenül mögé szögletes zárójelben a listaelem sorszámát

Íme:


foglalkozások = ['postás', 'rendőr', 'villanyszerelő', 'a szomszéd', 'gázos', 
                 'díjbeszedő', 'handlé', 'szódás', 'képkereskedő', 'a házmester', 
                 'a fia', 'kéményseprő']
print(foglalkozások[1])

A fenti kód negyedik sorában a foglalkozások lista első sorszámú elemét írjuk ki (ami tehát emberi fogalmak szerint a második), azaz a képernyőn a rendőr szó jelenik majd meg. A szódás a lista  7. sorszámú eleme, a házmester fia meg a 10. Ha elölről nézzük. A index értéke ugyanis lehet negatív is. Ilyenkor a lista végéről kezdünk, de – hogy egyszerű legyen az életed – ilyenkor az utolsó betű a -1 index, az utolsó előtti a -2, és így tovább.

Melyik mesterségeket írja ki ez a két sornyi Python-kód?


foglalkozások = ['postás', 'rendőr', 'villanyszerelő', 'a szomszéd', 'gázos', 
                 'díjbeszedő', 'handlé', 'szódás', 'képkereskedő', 'a házmester', 
                 'a fia', 'kéményseprő']
print(foglalkozások[5], foglalkozások[-4], foglalkozások[4])

  • díjbeszedő képkereskedő a szomszéd?
  • díjbeszedő képkereskedő gázos?
  • díjbeszedő szódás gázos?

(A gondolkodást megkönnyítendő íme a némileg kemény szövegű dal, ahonnan a foglalkozások jöttek.)

Ha a fenti kérdésre tudtál válaszolni, jöhet a hentes meg a kertész. A hentes szeletel, a kertész egyel.

Feladatok

Ezeknél a feladatoknál játsszuk azt, hogy csak egy lehetőséged van a helyes válaszra, jól gondold át az utasítást! Minden feladathoz a fenti foglalkozásos listát használd!

F0018a: Írasd ki ezeket a mesterségeket pozitív indexet használva!

  • villanyszerelő
  • képkereskedő
  • handlé

F0081b: Írasd ki ezeket a mesterségeket negatív indexet használva!

  • a házmester
  • díjbeszedő
  • postás

F0018c: Írasd ki ezeket a listákat egyetlen szeletelési művelettel!

  • [‘díjbeszedő’, ‘handlé’, ‘szódás’]
  • [‘szódás’, ‘képkereskedő’, ‘a házmester’, ‘a fia’]
  • [‘a szomszéd’, ‘gázos’, ‘díjbeszedő’, ‘handlé’, ‘szódás’, ‘képkereskedő’, ‘a házmester’]

F0018d: Írasd ki ezeket a listákat egyetlen szeletelési művelettel, negatív indexeket használva! (Figyelj, muszáj megadnod a -1 lépést is, különben üres listát kapsz. Így valójában ez nem is szeletelés, hanem egyelés.)

  • [‘a házmester’, ‘képkereskedő’]
  • [‘a házmester’, ‘képkereskedő’, ‘szódás’, ‘handlé’, ‘díjbeszedő’, ‘gázos’, ‘a szomszéd’]
  • [‘a fia’, ‘a házmester’, ‘képkereskedő’, ‘szódás’, ‘handlé’, ‘díjbeszedő’]

F0018e: Írasd ki ezeket a listákat egyetlen egyelést használva!

  • [‘a fia’, ‘képkereskedő’, ‘handlé’]
  • [‘a házmester’, ‘handlé’, ‘a szomszéd’]
  • [‘villanyszerelő’, ‘handlé’, ‘a fia’]
  • [‘handlé’, ‘gázos’, ‘villanyszerelő’]
  • [‘villanyszerelő’, ‘gázos’, ‘handlé’, ‘képkereskedő’, ‘a fia’]

F0018f: Mit írnak ki az alábbi utasítások?

  • print(foglalkozások[2::4])
  • print(foglalkozások[::3])
  • print(foglalkozások[::-1])
  • print(foglalkozások[-4:-11:-3])
  • print(foglalkozások[:10:3])
  • print(foglalkozások[::-3])

Az elmúlt alkalommal megismerkedtünk a lista adattípus néhány tagfüggvényével. Legközelebb a karakterlánc adattípust hasonlítjuk össze a listával.

(A hentes képe Christopher Uminga munkája, és innen származik: http://chrisuminga.tumblr.com/post/73009361901/here-is-my-bill-the-butcher-from-gangs-of-new-york)

 

Advertisements

Szeletelés és egyelés, avagy így lettünk hentesek és kertészek” bejegyzéshez ozzászólás

  1. Az első példa-kód magyarázatában a “a képernyőn a postás szó jelenik majd meg” javításra szorul –> ‘rendőr’

    Kedvelés

  2. Kedves raerek! Jól értem, ugye a F0018d alapján, hogy a python szeletelni csak elölröl hátrafele irányba tud, fordított irányba nem, ezért kell a hátulról előrefelé szeletelésnél a -1-es lépkedés?

    Kedvelés

    • Igen. De talán a megértés miatt szerencsésebb, ha úgy fogalmazol, hogy hátulról előre szeleteléskor külön szólni kell neki, hogy most visszafelé megyünk.

      Persze ez olyan butaságnak tűnik, mert igazán rájöhetne magától is, de képzelj el egy olyan programot, ahol mondjuk egy ciklus egyre rövidebb részlistákat írat ki, először 1-től 10-ig, aztán 5-tól tízig, aztán 9-től, aztán valamiért a végén így lenne, hogy print(listácska[13:10]). Ezen a ponton szeretnénk, ha a Python elkezdené visszafelé kiírni a dolgokat? Lehet hogy igen, lehet, hogy nem. Úgyhogy ha tényleg ezt akarjuk, akkor szólni kell neki:)

      Kedvelés

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s