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.👩🏽💻
Tartalomjegyzé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.
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ó.
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.
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!