リストにアイテムが存在するかどうかを確認するために別のリストを収集するためにany
を使用している人がいますが、それを実行する簡単な方法はありますか?:
if list.contains(myItem):
# do something
この構文を使うことができます:
if myItem in list:
# do something
また、逆演算子:
if myItem not in list:
# do something
リスト、タプル、セット、辞書(チェックキー)に対してはうまくいきます。
注 これはリストとタプルではO(n)操作ですが、集合と辞書ではO(1)操作です。
他の人が言ったことに加えて、あなたはin
がすることはlist.__contains__
メソッドを呼び出すことであることを知ることに興味があるかもしれません。
ばかげた使用法は次のとおりです。
>>> 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
>>>
リストに項目の出現回数がいくつでも含まれている場合はTrue
、出現回数がまったく含まれていないかまったく含まれていない場合はFalse
を取得するために、最近この1つのライナーを思い付きました。 next(...)
を使用すると、これにデフォルトの戻り値(False
)が与えられ、リスト内包表記全体を実行するよりもかなり速く実行する必要があることを意味します。
list_does_contain = next((True for item in list_to_test if item == test_item), False)
リストメソッドindex
は、アイテムが存在しない場合は-1
を返し、存在する場合はリスト内のアイテムのインデックスを返します。 if
ステートメントでは、代わりに次のことを実行できます。
if myItem in list:
#do things
次のifステートメントを使用して、要素がリストに含まれていないかどうかも確認できます。
if myItem not in list:
#do things