Adapun pertanyaan pertama Anda: kode itu baik-baik saja dan harus berfungsi jika item
sama dengan salah satu elemen di dalamnya myList
. Mungkin Anda mencoba menemukan string yang tidak sama persis dengan salah satu item atau mungkin Anda menggunakan nilai float yang menderita ketidaktepatan.
Adapun pertanyaan kedua Anda: Sebenarnya ada beberapa cara yang mungkin jika "menemukan" hal-hal dalam daftar.
Memeriksa apakah ada sesuatu di dalam
Ini adalah use case yang Anda gambarkan: Memeriksa apakah ada sesuatu di dalam daftar atau tidak. Seperti yang Anda ketahui, Anda dapat menggunakan in
operator untuk itu:
3 in [1, 2, 3] # => True
Memfilter koleksi
Artinya, menemukan semua elemen dalam urutan yang memenuhi kondisi tertentu. Anda dapat menggunakan daftar pemahaman atau ekspresi generator untuk itu:
matches = [x for x in lst if fulfills_some_condition(x)]
matches = (x for x in lst if x > 6)
Yang terakhir akan mengembalikan generator yang dapat Anda bayangkan sebagai semacam daftar malas yang hanya akan dibangun segera setelah Anda mengulanginya. Omong-omong, yang pertama persis sama dengan
matches = filter(fulfills_some_condition, lst)
di Python 2. Di sini Anda dapat melihat fungsi tingkat tinggi di tempat kerja. Dalam Python 3, filter
tidak mengembalikan daftar, tetapi objek seperti generator.
Menemukan kejadian pertama
Jika Anda hanya menginginkan hal pertama yang cocok dengan suatu kondisi (tetapi Anda belum tahu apa itu), boleh saja menggunakan for for (mungkin menggunakan else
klausa juga, yang sebenarnya tidak terlalu terkenal). Anda juga bisa menggunakan
next(x for x in lst if ...)
yang akan mengembalikan pertandingan pertama atau menaikkan StopIteration
jika tidak ada yang ditemukan. Atau, Anda dapat menggunakan
next((x for x in lst if ...), [default value])
Menemukan lokasi suatu barang
Untuk daftar, ada juga index
metode yang kadang-kadang bisa berguna jika Anda ingin tahu di mana elemen tertentu ada dalam daftar:
[1,2,3].index(2) # => 1
[1,2,3].index(4) # => ValueError
Namun, perhatikan bahwa jika Anda memiliki duplikat, .index
selalu kembalikan indeks terendah: ......
[1,2,3,2].index(2) # => 1
Jika ada duplikat dan Anda ingin semua indeks maka Anda dapat menggunakannya enumerate()
:
[i for i,x in enumerate([1,2,3,2]) if x==2] # => [1, 3]
myList
.