Cara Menemukan Indeks Item dalam Daftar Python

Diterbitkan: 2022-06-29

Dalam panduan ini, Anda akan mempelajari cara menemukan indeks elemen dalam daftar Python, baik menggunakan iterasi sederhana maupun metode daftar bawaan index() .

Saat bekerja dengan daftar Python, Anda mungkin perlu mencari tahu indeks tempat item tertentu muncul. Anda dapat melakukannya dengan:

  • Memutar daftar dan memeriksa apakah item pada indeks saat ini sama dengan nilai tertentu
  • Menggunakan index()

Anda akan mempelajari kedua hal di atas dalam tutorial ini. Mari kita mulai.

Daftar Python, Ditinjau Kembali

Di Python, daftar adalah kumpulan item—dari tipe data yang sama atau berbeda. Mereka bisa berubah ; Anda dapat memodifikasinya di tempat tanpa harus membuat daftar baru.

Perhatikan contoh buah- fruits ini: daftar 5 buah yang berbeda.

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

Anda bisa mendapatkan panjang objek Python apa pun dengan menggunakan fungsi len() bawaan. Jadi Anda dapat memanggil fungsi len() dengan objek list ( fruits ) sebagai argumen untuk mendapatkan panjangnya, seperti yang ditunjukkan di bawah ini.

 len(fruits) # Output: 5

Kami akan menggunakan daftar fruits sebagai contoh berjalan dalam tutorial ini.

Pengindeksan dalam Daftar Python

Python mengikuti pengindeksan nol . Jadi dalam setiap iterable Python, item pertama ada di indeks 0, item kedua ada di indeks 1, dan seterusnya. Jika panjang iterable adalah k , maka item terakhir berada pada indeks k - 1 .

Dalam Python, Anda dapat menggunakan fungsi range() untuk mendapatkan indeks saat Anda mengulang iterables.

Catatan : Saat Anda mengulang melalui range(k) , Anda mendapatkan indeks 0,1,2,…,(k-1). Jadi dengan mengatur k = len(list) , Anda bisa mendapatkan daftar semua indeks yang valid.

Sel kode berikut menjelaskan hal ini.

 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

Sekarang setelah kita membahas dasar-dasar daftar Python, mari pelajari cara menemukan indeks item dalam daftar.

python-temukan-dalam-daftar

Temukan Indeks Item Daftar dengan Iterasi Menggunakan untuk Loops

Mari kita perhatikan daftar buah- fruits dari bagian sebelumnya. Kita akan mempelajari cara menemukan indeks item tertentu dalam daftar ini dengan iterasi menggunakan for loop.

Menggunakan untuk Loop dan range() Fungsi

Mari kita perbaiki target : nilai yang kita cari dalam daftar.

Anda dapat menggunakan fungsi for loop dan range() untuk mendapatkan daftar indeks dari 0 hingga len(fruits) - 1 .

  • Ulangi daftar buah yang mengakses setiap indeks.
  • Periksa apakah item pada indeks saat ini i sama dengan target.
  • Jika True , cetak bahwa target telah ditemukan pada indeks i .
 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

Dalam contoh ini, target string 'mango' muncul tepat satu kali (pada indeks 1) dalam daftar fruits .

Namun, terkadang nilai target muncul lebih dari satu kali atau tidak muncul sama sekali. Untuk menangani kasus ini, mari ubah perulangan di atas dan bungkus konten di dalam fungsi yang disebut find_in_list .

Memahami Definisi Fungsi

Fungsi find_in_list memiliki dua parameter:

  • target : nilai yang Anda cari, dan
  • py_list : daftar Python yang Anda cari.
 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}")

Di badan fungsi, kami menginisialisasi daftar kosong target_indices . Kami mengulang daftar dan mengakses item daftar. Jika target telah ditemukan pada indeks tertentu, kami menambahkan indeks tersebut ke daftar target_indices menggunakan metode append() .

Catatan : Dalam Python, list.append(item) menambahkan item ke akhir list .

  • Jika target tidak pernah ditemukan, maka target_indices adalah daftar kosong; pengguna diberitahu bahwa target tidak ada dalam daftar.
  • Jika target ditemukan di lebih dari satu indeks, maka target_indices berisi semua indeks tersebut.

Selanjutnya, mari kita definisikan kembali daftar fruits -buahan seperti yang ditunjukkan.

Kali ini kita mencari string target 'mango' , yang muncul dua kali—pada indeks 1 dan 4.

 fruits = ["apple","mango","strawberry","pomegranate","mango","melon"] target = "mango" find_in_list(target,fruits) # Output mango is found at indices [1, 4]

Saat memanggil fungsi find_in_list dengan target dan buah- fruits sebagai argumen, kita melihat bahwa kedua indeks dikembalikan.

 target = "turnip" find_in_list(target,fruits) # Output Sorry, target not found!

Jika Anda mencoba mencari 'turnip' yang tidak ada dalam daftar fruits , Anda mendapatkan pesan bahwa target belum ditemukan.

Menggunakan untuk Loop dan menghitung() Fungsi

Dalam Python, Anda dapat menggunakan fungsi enumerate() untuk mengakses indeks dan item secara bersamaan—tanpa harus menggunakan fungsi range() .

Sel kode berikut menunjukkan bagaimana Anda bisa menggunakan fungsi enumerate() untuk mendapatkan indeks dan item.

 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

Sekarang, mari kita tulis ulang fungsi Python untuk menemukan indeks item dalam daftar menggunakan fungsi enumerate() .

 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}")

Seperti bagian sebelumnya, Anda sekarang dapat memanggil fungsi find_in_list dengan argumen yang valid.

Anda dapat menerjemahkan definisi fungsi di atas ke dalam pemahaman daftar yang setara dan kami akan melakukannya di bagian berikutnya.

Temukan Indeks Item Daftar dengan Iterasi Menggunakan Pemahaman Daftar

Pemahaman daftar dengan Python memungkinkan Anda membuat daftar dari daftar yang ada berdasarkan beberapa kondisi. Berikut konstruksi umumnya:

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

Gambar di bawah ini menjelaskan bagaimana mengidentifikasi unsur-unsur pemahaman daftar; menggunakan ini, Anda dapat mengonversi fungsi find_in_list menjadi pemahaman daftar.

python-temukan-dalam-daftar

Menggunakan di atas, ekspresi untuk pemahaman daftar untuk membuat indeks target adalah sebagai berikut.

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

Sebagai latihan, Anda dapat mencoba menjalankan cuplikan kode di atas untuk beberapa contoh lainnya.

Temukan Indeks dari Item Daftar Menggunakan Metode index()

Untuk menemukan indeks item dalam daftar Python, Anda juga dapat menggunakan metode .index() . Berikut sintaks umumnya:

 list.index(value,start,end)

Parsing metode di atas:

  • value adalah nilai target yang Anda cari.
  • start dan end adalah argumen posisi opsional ; Anda dapat menggunakannya untuk mencari menemukan indeks item dalam irisan daftar mulai dari start dan diperpanjang hingga end - 1 .

Catatan : Metode .index() hanya mengembalikan indeks kemunculan value pertama dalam list . Bahkan ketika Anda menemukan indeks suatu item dalam irisan daftar [start: end-1] , metode ini hanya mengembalikan indeks yang sesuai dengan kemunculan pertama item tersebut.

Mari kita lihat kembali contoh kita untuk memahami cara kerja metode .index() .

 fruits = ["apple","mango","strawberry","pomegranate","mango","melon"] target = "mango" fruits.index(target) 1

Meskipun ada dua kemunculan 'mango' dalam daftar fruits , Anda dapat melihat bahwa hanya indeks kemunculan pertama yang dikembalikan.

Untuk mendapatkan indeks kemunculan kedua mangga, kita dapat mencari melalui irisan daftar mulai dari indeks 2 dan berlanjut hingga indeks 5, seperti gambar di bawah ini.

 fruits.index(target,2,5) 4

Cara Menangani ValueErrors dengan Python

Sekarang mari kita lihat apa yang terjadi jika Anda mencoba mencari indeks item yang tidak ada dalam daftar, katakanlah, 'carrot' .

 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

Seperti yang terlihat pada sel kode di atas, ini melempar ValueError. Dengan Python, Anda dapat menangani ini sebagai pengecualian menggunakan blok try dan except .

Sintaks umum untuk menggunakan try-except adalah sebagai berikut.

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

Dengan menggunakan blok coba-kecuali di atas, kita dapat menangani ValueError sebagai pengecualian.

 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

Kode di atas melakukan hal berikut:

  • Jika target ada dalam daftar, itu mengembalikan indeks target.
  • Jika target tidak ada, ia menangani ValueError sebagai pengecualian dan mencetak pesan kesalahan.

Menyimpulkan

Berikut adalah ringkasan dari berbagai metode yang telah Anda pelajari untuk menemukan indeks item dalam daftar Python.

  • Anda dapat menggunakan fungsi for loop dan range() Python untuk mendapatkan item dan indeksnya masing-masing. Periksa apakah item pada indeks sesuai dengan target.
  • Anda juga dapat menggunakan fungsi enumerate() untuk mengakses item dan indeks secara bersamaan.
  • Anda dapat menggunakan kedua metode di atas di dalam ekspresi pemahaman daftar.
  • Untuk menemukan indeks item dalam daftar, Anda juga dapat menggunakan metode .index() bawaan .
  • list.index(value) mengembalikan indeks kemunculan nilai pertama dalam list . Jika nilainya tidak ada, itu memunculkan ValueError .
  • Anda dapat mencari melalui bagian tertentu dari daftar menggunakan list.index(value, start, end) untuk mencari kemunculan nilai dalam daftar slice [start:end-1] .

Selanjutnya, pelajari cara mengurutkan kamus Python berdasarkan kunci atau nilai. Selamat pemrograman Python!