Saya melihat orang-orang menggunakan anyuntuk 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 anyuntuk 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 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:
>>> 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 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)
any(item == test_item for item in list_to_test)akan bekerja juga, saya pikir?
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:
if myItem not in list:
#do things
indexMetode tidak kembali -1 jika elemen tidak hadir, itu melemparkan ValueErrorpengecualian.