Saya melihat orang-orang menggunakan anyuntuk mengumpulkan daftar lain untuk melihat apakah suatu barang ada dalam daftar, tetapi apakah ada cara cepat untuk melakukannya ?:
Dengan daftar yang berisi array numpy, akankah ini memeriksa instance atau nilai numpy di dalam instance numpy?
Daniel Möller
Waspadalah! Ini cocok sementara ini sangat mungkin apa yang tidak Anda harapkan:o='--skip'; o in ("--skip-ias"); # returns True !
Alex F
3
@AlexF: Itu cocok karena ("--skip-ias")bukan tupel, tetapi string (tanda kurung tidak melakukan apa-apa, sama seperti (1)hanya bilangan bulat). Jika Anda ingin 1-tuple, Anda perlu menambahkan koma setelah satu item: ("--skip-ias",)(atau (1,)).
Blckknght
Perhatikan bahwa jika Anda membandingkan karakter, ini tidak peka huruf besar-kecil.
Tillson
65
Selain apa yang dikatakan orang lain, Anda mungkin juga tertarik untuk mengetahui bahwa apa yang indilakukan adalah memanggil list.__contains__metode, yang dapat Anda definisikan pada kelas apa pun yang Anda tulis dan bisa sangat berguna untuk menggunakan python sepenuhnya.
Penggunaan bodoh mungkin:
>>>classContainsEverything:def __init__(self):returnNonedef __contains__(self,*elem,**k):returnTrue>>> a =ContainsEverything()>>>3in a
True>>> a in a
True>>>Falsein a
True>>>Falsenotin a
False>>>
Saya datang dengan liner satu ini baru-baru ini untuk mendapatkan Truejika daftar berisi sejumlah kemunculan suatu item, atau Falsejika tidak mengandung kemunculan atau tidak sama sekali. Menggunakan next(...)memberikan ini nilai pengembalian default ( False) dan berarti itu harus berjalan secara signifikan lebih cepat daripada menjalankan seluruh pemahaman daftar.
list_does_contain = next((True for item in list_to_test if item == test_item), False)
Dalam kasus saya, saya memiliki daftar objek yang disebut Kategori dan perlu untuk menguji hanya untuk Link properti, sehingga solusi ini lebih cocok dalam kasus saya. Terima kasih
rodrigorf
3
any(item == test_item for item in list_to_test)akan bekerja juga, saya pikir?
seseorang
3
Metode daftar indexakan kembali -1jika item tidak ada, dan akan mengembalikan indeks item dalam daftar jika ada. Atau dalam ifpernyataan Anda dapat melakukan hal berikut:
if myItem in list:#do things
Anda juga dapat memeriksa apakah suatu elemen tidak ada dalam daftar dengan pernyataan if berikut ini:
Jawaban:
Anda dapat menggunakan sintaks ini:
Juga, operator terbalik:
Ini berfungsi dengan baik untuk daftar, tupel, set, dan dicts (centang tombol).
Perhatikan bahwa ini adalah operasi O (n) dalam daftar dan tupel, tetapi operasi O (1) dalam set dan dikt.
sumber
o='--skip'; o in ("--skip-ias"); # returns True !
("--skip-ias")
bukan tupel, tetapi string (tanda kurung tidak melakukan apa-apa, sama seperti(1)
hanya bilangan bulat). Jika Anda ingin 1-tuple, Anda perlu menambahkan koma setelah satu item:("--skip-ias",)
(atau(1,)
).Selain apa yang dikatakan orang lain, Anda mungkin juga tertarik untuk mengetahui bahwa apa yang
in
dilakukan adalah memanggillist.__contains__
metode, yang dapat Anda definisikan pada kelas apa pun yang Anda tulis dan bisa sangat berguna untuk menggunakan python sepenuhnya.Penggunaan bodoh mungkin:
sumber
Saya datang dengan liner satu ini baru-baru ini untuk mendapatkan
True
jika daftar berisi sejumlah kemunculan suatu item, atauFalse
jika tidak mengandung kemunculan atau tidak sama sekali. Menggunakannext(...)
memberikan ini nilai pengembalian default (False
) dan berarti itu harus berjalan secara signifikan lebih cepat daripada menjalankan seluruh pemahaman daftar.list_does_contain = next((True for item in list_to_test if item == test_item), False)
sumber
any(item == test_item for item in list_to_test)
akan bekerja juga, saya pikir?Metode daftar
index
akan kembali-1
jika item tidak ada, dan akan mengembalikan indeks item dalam daftar jika ada. Atau dalamif
pernyataan Anda dapat melakukan hal berikut:Anda juga dapat memeriksa apakah suatu elemen tidak ada dalam daftar dengan pernyataan if berikut ini:
sumber
index
Metode tidak kembali -1 jika elemen tidak hadir, itu melemparkanValueError
pengecualian.