Saya melihat orang-orang menggunakan any
untuk mengumpulkan daftar lain untuk melihat apakah suatu barang ada dalam daftar, tetapi apakah ada cara cepat untuk melakukannya ?:
if list.contains(myItem):
# do something
Saya melihat orang-orang menggunakan any
untuk mengumpulkan daftar lain untuk melihat apakah suatu barang ada dalam daftar, tetapi apakah ada cara cepat untuk melakukannya ?:
if list.contains(myItem):
# do something
Jawaban:
Anda dapat menggunakan sintaks ini:
if myItem in list:
# do something
Juga, operator terbalik:
if myItem not in list:
# do something
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.
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 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:
>>> class ContainsEverything:
def __init__(self):
return None
def __contains__(self, *elem, **k):
return True
>>> a = ContainsEverything()
>>> 3 in a
True
>>> a in a
True
>>> False in a
True
>>> False not in a
False
>>>
Saya datang dengan liner satu ini baru-baru ini untuk mendapatkan True
jika daftar berisi sejumlah kemunculan suatu item, atau False
jika 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)
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 dalam if
pernyataan 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:
if myItem not in list:
#do things
index
Metode tidak kembali -1 jika elemen tidak hadir, itu melemparkan ValueError
pengecualian.