리스트에 대한 짧은 포함 기능이 있습니까? 하는 데 사용 하지만

사람들이 any목록에 항목이 있는지 확인하기 위해 다른 목록을 수집 하는 데 사용 하지만 빠른 방법이 있습니까? :

if list.contains(myItem):
    # do something



답변

이 구문을 사용할 수 있습니다 :

if myItem in list:
    # do something

또한 역 연산자 :

if myItem not in list:
    # do something

목록, 튜플, 세트 및 dicts (체크 키)에 적합합니다.

참고 이 튜플리스트의 O (n)를 연산하고,하지만 세트 dicts에서 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포함되어 있는지 , 또는 항목이 없거나 전혀 포함되어 있지 않은 경우이 라이너를 최근에 생각해 냈습니다 . 를 사용 next(...)하면 기본 반환 값 ( False) 이 제공 되며 전체 목록 이해를 실행하는 것보다 훨씬 빠르게 실행됩니다.

list_does_contain = next((True for item in list_to_test if item == test_item), False)


답변

아이템이 존재하지 않으면 list 메소드 index-1아이템을 반환하고리스트에 아이템의 인덱스가 있으면이를 반환합니다. 또는 if성명서에서 다음을 수행 할 수 있습니다.

if myItem in list:
    #do things

다음 if 문을 사용하여 요소가 목록에 없는지 확인할 수도 있습니다.

if myItem not in list:
    #do things


답변