Python Listelerinde Bir Öğenin Dizini Nasıl Bulunur?
Yayınlanan: 2022-06-29Bu kılavuzda, hem basit yinelemeler hem de yerleşik bir liste yöntemi index() kullanarak bir Python listesindeki bir öğenin dizinini nasıl bulacağınızı öğreneceksiniz.
Python listeleriyle çalışırken, belirli bir öğenin oluştuğu dizini bulmanız gerekebilir. Bunu şu şekilde yapabilirsiniz:
- Listede dolaşmak ve mevcut dizindeki öğenin belirli bir değere eşit olup olmadığını kontrol etmek
- Yerleşik liste yöntemini kullanma
index()
Bu eğitimde yukarıdakilerin her ikisini de öğreneceksiniz. Başlayalım.
Python Listeleri, Tekrar Ziyaret Edildi
Python'da liste, aynı veya farklı veri türlerinden oluşan bir öğeler topluluğudur. Değişkendirler ; yeni bir liste oluşturmak zorunda kalmadan bunları yerinde değiştirebilirsiniz.
Bu örnek fruits
düşünün: 5 farklı meyveden oluşan bir liste.
fruits = ["apple","mango","strawberry","pomegranate","melon"]
len()
işlevini kullanarak herhangi bir Python nesnesinin uzunluğunu elde edebilirsiniz. Böylece, aşağıda gösterildiği gibi, uzunluğunu almak için argüman olarak liste nesnesi ( fruits
) ile len()
işlevini çağırabilirsiniz.
len(fruits) # Output: 5
Bu eğitimde fruits
listesini çalışan bir örnek olarak kullanacağız.
Python Listelerinde İndeksleme
Python sıfır indekslemeyi takip eder. Bu nedenle, herhangi bir Python yinelenebilirinde, ilk öğe 0 dizininde, ikinci öğe 1 dizininde vb. Yinelenebilirin uzunluğu k
ise, son öğe k - 1
dizinindedir.
Python'da, yinelenebilirler arasında dolaşırken dizinleri almak için range() işlevini kullanabilirsiniz.
Not :
range(k)
arasında döngü yaptığınızda, 0,1,2,…,(k-1) endekslerini alırsınız. Böylecek = len(list)
ayarını yaparak tüm geçerli indekslerin listesini alabilirsiniz.
Aşağıdaki kod hücresi bunu açıklar.
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
Şimdi Python listelerinin temellerini ele aldığımıza göre, bir listedeki bir öğenin indeksini nasıl bulacağımızı öğrenelim.

Döngüler İçin Kullanarak Yinelemeyle Liste Öğesinin Dizinini Bulun
Bir önceki bölümdeki liste fruits
ele alalım. Bu listedeki belirli bir öğenin dizinini for
döngüsünü kullanarak nasıl bulacağımızı öğreneceğiz.
For Loop ve range() İşlevini Kullanma
target
: listede aradığımız değeri düzeltelim.
0
ile len(fruits) - 1
arasındaki dizinlerin listesini almak için for
loop ve range()
işlevini kullanabilirsiniz.
- Her dizine erişen meyveler listesinde dolaşın.
- Mevcut i dizinindeki öğenin hedefe eşit olup olmadığını kontrol edin.
-
True
ise,target
i
dizininde bulunduğunu yazdırın.
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
Bu örnekte, 'mango'
hedef dizesi, fruits
listesinde tam olarak bir kez (1 dizinde) görünür.
Ancak bazen hedef değer birden fazla görünür veya hiç görünmez. Bu durumları ele almak için, yukarıdaki döngüyü değiştirelim ve içeriği find_in_list adlı bir işlevin içine find_in_list
.
Fonksiyon Tanımını Anlama
find_in_list
işlevinin iki parametresi vardır:
-
target
: aradığınız değer ve -
py_list
: Aradığınız Python listesi.
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}")
İşlev gövdesinde, boş bir target_indices
listesi başlatırız. Listede dolaşıyoruz ve liste öğelerine erişiyoruz. Hedef belirli bir dizinde bulunursa, append()
yöntemini kullanarak bu dizini target_indices
listesine ekleriz.
Not : Python'da
list.append(item)
item
list
sonuna ekler.
- Hedef hiçbir zaman bulunamazsa,
target_indices
boş bir listedir; kullanıcıya hedefin listede bulunmadığı bildirilir. - Hedef birden fazla dizinde bulunursa,
target_indices
tüm bu dizinleri içerir.
Ardından, fruits
listesini gösterildiği gibi yeniden tanımlayalım.
Bu sefer, 1. ve 4. indekslerde iki kez meydana gelen 'mango'
target
dizesini arıyoruz.
fruits = ["apple","mango","strawberry","pomegranate","mango","melon"] target = "mango" find_in_list(target,fruits) # Output mango is found at indices [1, 4]
Argüman olarak target
ve fruits
ile find_in_list
işlevini çağırdığımızda, her iki dizinin de döndürüldüğünü görüyoruz.
target = "turnip" find_in_list(target,fruits) # Output Sorry, target not found!
fruits
listesinde olmayan 'turnip'
aramasını denerseniz, hedefin bulunamadığına dair bir mesaj alırsınız.
For Loop ve enumerate() İşlevini Kullanma
Python'da, range()
işlevini kullanmak zorunda kalmadan hem dizine hem de öğelere aynı anda erişmek için enumerate()
işlevini kullanabilirsiniz.
Aşağıdaki kod hücresi, hem dizinleri hem de öğeleri almak için enumerate()
işlevini nasıl kullanabileceğinizi gösterir.

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
Şimdi listedeki öğelerin indeksini bulmak için enumerate()
işlevini kullanarak Python işlevini yeniden yazalım.
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}")
Önceki bölümde olduğu gibi, artık geçerli argümanlarla find_in_list
işlevini çağırabilirsiniz.
Yukarıdaki fonksiyon tanımını eşdeğer bir liste kavrayışına çevirebilirsiniz ve bunu bir sonraki bölümde yapacağız.
Liste Anlamayı Kullanarak Yinelemeyle Liste Öğesinin Dizinini Bulun
Python'daki liste kavramaları, bazı koşullara dayalı olarak mevcut listelerden listeler oluşturmanıza olanak tanır. İşte genel yapı:
new_list = [<output> for <items in existing iterables> if <condition is true>]
Aşağıdaki şekil, liste anlama öğelerinin nasıl tanımlanacağını açıklamaktadır; bunu kullanarak find_in_list
işlevini bir liste kavrayışına dönüştürebilirsiniz.

Yukarıdakileri kullanarak, hedef indeksler oluşturmak için liste anlama ifadesi aşağıdaki gibidir.
target_indices = [index for index,fruit in enumerate(fruits) if fruit==target]
Bir alıştırma olarak, birkaç başka örnek için yukarıdaki kod parçacığını çalıştırmayı deneyebilirsiniz.
index() Yöntemini Kullanarak Liste Öğesinin Dizinini Bulun
Python listesindeki bir öğenin dizinini bulmak için yerleşik .index()
yöntemini de kullanabilirsiniz. İşte genel sözdizimi:
list.index(value,start,end)
Yukarıdaki yöntemi ayrıştırma:
-
value
, aradığınız hedef değerdir. -
start
veend
isteğe bağlı konumsal bağımsız değişkenlerdir; bunları,start
başlayıpend - 1
.
Not : .index() yöntemi, yalnızca
list
value
ilk oluşumunun dizinini döndürür. [start: end-1] liste diliminde bir öğenin dizinini bulsanız bile, bu yöntem yalnızca öğenin ilk oluşumuna karşılık gelen dizini döndürür.
.index()
yönteminin nasıl çalıştığını anlamak için örneğimizi tekrar gözden geçirelim.
fruits = ["apple","mango","strawberry","pomegranate","mango","melon"] target = "mango" fruits.index(target) 1
fruits
listesinde iki 'mango'
oluşumu olmasına rağmen, yalnızca ilk oluşumun dizininin döndürüldüğünü görebilirsiniz.
Mangonun ikinci oluşumunun indeksini almak için, aşağıda gösterildiği gibi indeks 2'den başlayıp indeks 5'e kadar uzanan liste diliminde arama yapabiliriz.
fruits.index(target,2,5) 4
Python'da ValueErrors Nasıl İşlenir
Şimdi listede olmayan bir öğenin indeksini bulmaya çalışırsanız, diyelim ki 'carrot'
ne olacağını görelim.
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
Yukarıdaki kod hücresinde görüldüğü gibi, bu bir ValueError atar. Python'da, try
ve except
bloklarını kullanarak bunu bir istisna olarak ele alabilirsiniz.
try-except
kullanılacak genel sözdizimi aşağıdaki gibidir.
try: # to do this except <ErrorType>: # do this to handle <ErrorType> as exception
Yukarıdaki try-except bloklarını kullanarak ValueError'u bir istisna olarak işleyebiliriz.
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
Yukarıdaki kod aşağıdakileri yapar:
- Listede hedef varsa, hedefin dizinini döndürür.
- Hedef mevcut değilse, ValueError'ı bir istisna olarak ele alır ve hata mesajını yazdırır.
Özetliyor
Python listesindeki bir öğenin dizinini bulmak için öğrendiğiniz farklı yöntemlerin bir özetini burada bulabilirsiniz.
- Öğeleri ve ilgili dizinlerini almak için Python'un for loop ve range() işlevini kullanabilirsiniz. Endekslerdeki öğelerin hedefle eşleşip eşleşmediğini kontrol edin.
- Öğeye ve dizine aynı anda erişmek için enumerate() işlevini de kullanabilirsiniz.
- Yukarıdaki yöntemlerin her ikisini de bir liste anlama ifadesinin içinde kullanabilirsiniz.
- Bir listedeki bir öğenin dizinini bulmak için yerleşik .index() yöntemini de kullanabilirsiniz.
- list.index(value) , list içindeki değerin ilk oluşumunun dizinini döndürür. Değer mevcut değilse, ValueError değerini yükseltir.
- Liste diliminde [start:end-1] bir değerin oluşumunu aramak için list.index(value, start, end) kullanarak listenin belirli bir diliminde arama yapabilirsiniz.
Ardından, bir Python sözlüğünü anahtara veya değere göre sıralamayı öğrenin. Mutlu Python programlama!