Hogyan lehet megtalálni egy elem indexét a Python listákban

Ebből az útmutatóból megtudhatja, hogyan keresheti meg egy elem indexét a Python-listában, egyszerű iterációkkal és egy beépített index() listametódussal.

Amikor Python-listákkal dolgozik, előfordulhat, hogy meg kell találnia azt az indexet, amelynél egy adott elem előfordul. Ezt a következőképpen teheti meg:

  • Végigpörgetve a listát, és ellenőrizni kell, hogy az aktuális indexben lévő elem megegyezik-e az adott értékkel
  • A beépített lista módszer használata index()

Ebből az oktatóanyagból a fentiek mindegyikét megtanulhatja. Kezdjük.👩🏽‍💻

Python listák, újralátogatva

A Pythonban a lista elemek gyűjteménye – azonos vagy különböző adattípusokból. Ezek változtathatók; a helyükön módosíthatja őket anélkül, hogy új listát kellene létrehoznia.

Tekintsük ezt a gyümölcspéldát: 5 különböző gyümölcs listája.

fruits = ["apple","mango","strawberry","pomegranate","melon"]

Bármely Python-objektum hosszát megtudhatja a beépített len() függvény használatával. Tehát meghívhatja a len() függvényt a lista objektum (gyümölcsök) argumentumával, hogy megkapja a hosszát, az alábbiak szerint.

len(fruits)
# Output: 5

Ebben az oktatóanyagban futó példaként a gyümölcslistát fogjuk használni.

Indexelés a Python listákban

A Python nulla indexelést követ. Tehát bármely Python iterálható elemben az első elem a 0 indexen van, a második elem az 1 indexen van, és így tovább. Ha az iterálható hossza k, akkor az utolsó elem a k – 1 indexnél van.

A Pythonban a range() függvényt használhatja indexek lekéréséhez, miközben ismétlődő ciklusokon keresztül halad.

Megjegyzés: Ha a tartományon (k) keresztül lépked, a 0,1,2,…,(k-1) indexeket kapja. Tehát a k = len(list) beállításával megkaphatja az összes érvényes index listáját.

A következő kódcella ezt magyarázza.

for i in range(len(fruits)):
  print(f"i:{i}, fruit[{i}] is {fruits[i]}")

# Output
i:0, fruit[0] is apple
i:1, fruit[1] is mango
i:2, fruit[2] is strawberry
i:3, fruit[3] is pomegranate
i:4, fruit[4] is melon

Most, hogy megismertük a Python-listák alapjait, tanuljuk meg, hogyan találhatjuk meg egy elem indexét a listában.

  Válassza ki az összetevőket és kapjon recepteket kalóriainformációkkal

Keresse meg egy listaelem indexét iterációval a ciklusokhoz

Tekintsük az előző szakasz gyümölcseinek listáját. Megtanuljuk, hogyan kereshetjük meg egy adott elem indexét ebben a listában iterációval a for ciklus használatával.

A Loop és a range() függvény használata

Javítsuk ki a célt: a listában keresett értéket.

Használhatja a for loop és a range() függvényt, hogy megkapja az indexek listáját 0-tól len(fruits) – 1-ig.

  • Lapozzon át az egyes indexekhez hozzáférő gyümölcsök listáján.
  • Ellenőrizze, hogy az aktuális i indexen lévő elem megegyezik-e a céllal.
  • Ha igaz, nyomtassa ki, hogy a cél megtalálható az i indexen.
fruits = ["apple","mango","strawberry","pomegranate","melon"]

target = "mango"

for i in range(len(fruits)):
  if fruits[i] == target:
   print(f"{target} found at index {i}")

# Output
mango found at index 1

Ebben a példában a „mango” célkarakterlánc pontosan egyszer jelenik meg (az 1. indexnél) a gyümölcsök listájában.

Előfordul azonban, hogy a célérték többször megjelenik, vagy egyáltalán nem jelenik meg. Ezen esetek kezeléséhez módosítsuk a fenti ciklust, és csomagoljuk be a tartalmat a find_in_list nevű függvénybe.

A függvénydefiníció megértése

A find_in_list függvénynek két paramétere van:

  • cél: a keresett érték, és
  • py_list: az a Python-lista, amelyben keres.
def find_in_list(target,py_list):
  target_indices = []
  for i in range(len(fruits)):
    if fruits[i] == target:
      target_indices.append(i)  
  if target_indices == []:
    print("Sorry, target not found!")
  else:
    print(f"{target} is found at indices {target_indices}")

A függvénytörzsben inicializálunk egy üres listát a target_indexes. Végigpörgetjük a listát, és elérjük a listaelemeket. Ha a cél egy adott indexen található, akkor az append() metódussal hozzáadjuk az indexet a target_indexes listához.

Megjegyzés: A Pythonban a list.append(item) hozzáad egy elemet a lista végéhez.

  • Ha a cél soha nem található, akkor a target_indexes egy üres lista; a felhasználó értesítést kap arról, hogy a cél nem szerepel a listában.
  • Ha a cél egynél több indexen található, akkor a target_indices tartalmazza az összes indexet.

Ezután határozzuk meg újra a gyümölcslistát az ábrán látható módon.

Ezúttal a „mango” célkarakterláncot keressük, amely kétszer fordul elő – az 1. és 4. indexnél.

fruits = ["apple","mango","strawberry","pomegranate","mango","melon"]
target = "mango"
find_in_list(target,fruits)

# Output
mango is found at indices [1, 4]

A find_in_list függvény meghívásakor target és fruits argumentumokkal azt látjuk, hogy mindkét index visszaadásra kerül.

target = "turnip"
find_in_list(target,fruits)

# Output
Sorry, target not found!

Ha megpróbál rákeresni a „répa” kifejezésre, amely nem szerepel a gyümölcslistában, akkor azt az üzenetet kapja, hogy a célpont nem található.

  6 legjobb sebezhetőséget vizsgáló eszköz és szoftver

A ciklus és az enumerate() függvény használata

A Pythonban az enumerate() függvény segítségével egyszerre érheti el az indexet és az elemeket – anélkül, hogy a range() függvényt kellene használnia.

A következő kódcella bemutatja, hogyan használhatja az enumerate() függvényt az indexek és az elemek lekéréséhez.

fruits = ["apple","mango","strawberry","pomegranate","mango","melon"]
for index,fruit in enumerate(fruits):
  print(f"Index {index}: {fruit}")

# Output
Index 0: apple
Index 1: mango
Index 2: strawberry
Index 3: pomegranate
Index 4: mango
Index 5: melon

Most írjuk át a Python függvényt, hogy az enumerate() függvény segítségével megtaláljuk a lista elemeinek indexét.

def find_in_list(target,py_list):
  target_indices = []
  for index, fruit in enumerate(fruits):
   if fruit == target:
    target_indices.append(index) 
  if target_indices == []:
    print("Sorry, target not found!")
  else:
    print(f"{target} is found at indices {target_indices}")

Az előző szakaszhoz hasonlóan most is meghívhatja a find_in_list függvényt érvényes argumentumokkal.

A fenti függvénydefiníciót lefordíthatja egy ekvivalens listaértelmezésre, és ezt megtesszük a következő részben.

Listaelem indexének keresése iterációval a listaértés segítségével

A Python listaértelmezései lehetővé teszik, hogy listákat hozzon létre a meglévő listákból bizonyos feltételek alapján. Íme az általános konstrukció:

new_list = [<output> for <items in existing iterables> if <condition is true>] 

Az alábbi ábra leírja, hogyan lehet azonosítani a listaértés elemeit; ennek segítségével konvertálhatja a find_in_list függvényt listaértelmezéssé.

A fentiek felhasználásával a lista megértésének kifejezése a célindexek létrehozásához a következő.

target_indices = [index for index,fruit in enumerate(fruits) if fruit==target]

Gyakorlatként megpróbálhatja futtatni a fenti kódrészletet néhány további példához.

Keresse meg egy listaelem indexét az index() módszerrel

Egy Python-listában lévő elem indexének megkereséséhez használhatja a beépített .index() metódust is. Íme az általános szintaxis:

list.index(value,start,end)

A fenti módszer elemzése:

  • az érték a keresett célérték.
  • kezdete és vége opcionális pozicionális argumentumok; segítségével kereshet egy elem indexét a listaszeletben, az elejétől kezdve a végéig – 1.
  A Microsoft Word oktatóeszközeinek használata

Megjegyzés: Az .index() metódus csak a listában szereplő érték első előfordulásának indexét adja vissza. Még akkor is, ha egy listaszeletben talál egy elem indexét [start: end-1]ez a metódus csak az elem első előfordulásának megfelelő indexet adja vissza.

Nézzük meg újra a példánkat, hogy megértsük, hogyan működik az .index() metódus.

fruits = ["apple","mango","strawberry","pomegranate","mango","melon"]
target = "mango"

fruits.index(target)
1

Annak ellenére, hogy a „mangó” két előfordulása is szerepel a gyümölcslistában, láthatja, hogy csak az első előfordulás indexe került visszaadásra.

Ahhoz, hogy megkapjuk a mangó második előfordulásának indexét, kereshetünk a listaszeletben a 2. indextől kezdve és egészen az 5. indexig, amint az alább látható.

fruits.index(target,2,5)
4

Hogyan kezeljük a ValueError-okat a Pythonban

Most pedig lássuk, mi történik, ha egy olyan elem indexét próbálja megkeresni, amely nem szerepel a listában, például „sárgarépa”.

target = "carrot"

fruits.index(target)

# Output
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-17-81bd454e44f7> in <module>()
      1 target = "carrot"
      2 
----> 3 fruits.index(target)

ValueError: 'carrot' is not in list

Ahogy a fenti kódcellában látható, ez a ValueError. A Pythonban ezt kivételként kezelheti a try and kivéve blokkok használatával.

A try-except használatának általános szintaxisa a következő.

try:
  # to do this
except <ErrorType>:
  # do this to handle <ErrorType> as exception

A fenti try-except blokkok használatával a ValueError-t kivételként kezelhetjük.

target = "carrot"
try:
  fruits.index(target)
except ValueError:
  print(f"Sorry, could not find {target} in list")

# Output
Sorry, could not find carrot in list

A fenti kód a következőket teszi:

  • Ha a cél szerepel a listában, akkor a cél indexét adja vissza.
  • Ha a cél nincs jelen, kivételként kezeli a ValueErrort, és kinyomtatja a hibaüzenetet.

Összegezve

Az alábbiakban összefoglaljuk azokat a különféle módszereket, amelyeket megtanult egy elem indexének megkeresésére a Python-listában.

  • Használhatja a Python for loop és range() függvényét az elemek és a hozzájuk tartozó indexek lekéréséhez. Ellenőrizze, hogy az indexek tételei megfelelnek-e a célnak.
  • Használhatja az enumerate() függvényt is az elem és az index egyidejű eléréséhez.
  • Mindkét fenti módszert használhatja egy listaértelmezési kifejezésen belül.
  • Egy elem indexének listában való kereséséhez használhatja a beépített .index() metódust is.
  • A list.index(value) a listában szereplő érték első előfordulásának indexét adja vissza. Ha az érték nincs jelen, akkor ValueError-t generál.
  • A list.index(érték, kezdet, vége) segítségével kereshet a lista egy bizonyos szeletében, hogy megkeresse egy érték előfordulását a listaszeletben [start:end-1].

Ezután tanulja meg a Python-szótárak kulcs vagy érték szerinti rendezését. Boldog Python programozást!