Periksa apakah item ada dalam array / daftar


203

Jika saya punya array string, dapatkah saya memeriksa apakah string ada di array tanpa melakukan forloop? Secara khusus, saya mencari cara untuk melakukannya dalam sebuah ifpernyataan, jadi kira-kira seperti ini:

if [check that item is in array]:

3
Saya pikir pertanyaannya sudah dijawab di sini
Tarun Ande

1

Jawaban:


396

Dengan asumsi Anda maksud "daftar" di mana Anda mengatakan "array", Anda dapat melakukannya

if item in my_list:
    # whatever

Ini berfungsi untuk koleksi apa pun, tidak hanya untuk daftar. Untuk kamus, memeriksa apakah kunci yang diberikan ada dalam kamus.


1
@ Jdi, dan loop itu akan berjalan lebih cepat daripada yang dikodekan secara eksplisit dalam Python, belum lagi menjadi lebih mudah dibaca.
Mark Ransom

17

Saya juga akan menganggap bahwa maksud Anda "daftar" ketika Anda mengatakan "array." Solusi Sven Marnach baik. Jika Anda akan melakukan pemeriksaan berulang pada daftar, maka mungkin layak untuk mengubahnya menjadi satu set atau frozenset, yang bisa lebih cepat untuk setiap pemeriksaan. Dengan asumsi daftar str Anda disebut subjects:

subject_set = frozenset(subjects)
if query in subject_set:
    # whatever

3

Gunakan fungsi lambda.

Katakanlah Anda memiliki array:

nums = [0,1,5]

Periksa apakah 5 ada di nums:

(len(filter (lambda x : x == 5, nums)) > 0)

Solusi ini lebih kuat. Anda sekarang dapat memeriksa apakah nomor yang memenuhi kondisi tertentu ada di array Anda nums.

Misalnya, periksa apakah nomor yang lebih besar atau sama dengan 5 ada di nums:

(len(filter (lambda x : x >= 5, nums)) > 0)

Ini berfungsi dengan Python2. Dengan Python 3.7, Anda akan mendapatkan kesalahan ini:TypeError: object of type 'filter' has no len()
Jun711

1

Anda harus menggunakan nilai. Untuk array. misalnya katakan Anda memiliki kerangka data yang memiliki nama kolom yaitu, uji ['Nama'], Anda dapat melakukannya

if name in test['Name'].values :
   print(name)

untuk daftar normal, Anda tidak perlu menggunakan nilai


Saya pikir Anda memerlukan objek DataFrame Pandas untuk menggunakan .values.
troymyname00

-3

Anda juga bisa menggunakan sintaks yang sama untuk array. Misalnya, mencari di dalam seri Pandas:

ser = pd.Series(['some', 'strings', 'to', 'query'])

if item in ser.values:
    # do stuff
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.