항목이 배열 / 목록에 있는지 확인


203

문자열 배열이 있으면 for루프 를 수행하지 않고 문자열이 배열에 있는지 확인할 수 있습니까? 특히, 나는 if문장 내에서 그것을 할 수있는 방법을 찾고 있습니다 .

if [check that item is in array]:

3
나는 질문이 이미 여기에
Tarun Ande

1
또는 여기에 더 좋습니다 : stackoverflow.com/questions/12934190/…
torina

답변:


395

"배열"이라고 말하는 "목록"을 의미한다고 가정하면 할 수 있습니다

if item in my_list:
    # whatever

이것은 목록뿐만 아니라 모든 컬렉션에 적용됩니다. 사전의 경우 주어진 키가 사전에 있는지 확인합니다.


1
@jdi와 그 루프는 파이썬에서 명시 적으로 코딩 된 것보다 훨씬 빠르게 실행되며 읽기 쉽습니다.
Mark Ransom

17

또한 "배열"이라고 말할 때 "목록"을 의미한다고 가정하겠습니다. Sven Marnach의 솔루션이 좋습니다. 목록에서 반복적 인 검사를 수행하려는 경우이를 세트 또는 고정 세트로 변환하는 것이 좋습니다. 각 검사마다 더 빠를 수 있습니다. strs 목록을 다음과 같이 가정합니다 subjects.

subject_set = frozenset(subjects)
if query in subject_set:
    # whatever

3

람다 함수를 사용하십시오.

배열이 있다고 가정 해 봅시다.

nums = [0,1,5]

5가 있는지 확인하십시오 nums.

(len(filter (lambda x : x == 5, nums)) > 0)

이 솔루션은 더욱 강력합니다. 이제 특정 조건을 만족하는 숫자 가 배열에 있는지 확인할 수 있습니다 nums.

예를 들어 5보다 크거나 같은 숫자가 있는지 확인하십시오 nums.

(len(filter (lambda x : x >= 5, nums)) > 0)

이것은 Python2에서 작동합니다. Python 3.7을 사용하면 다음과 같은 오류가 발생합니다.TypeError: object of type 'filter' has no len()
Jun711

1

배열에는 .values를 사용해야합니다. 예를 들어 열 이름이 test [ 'Name'] 인 데이터 프레임이 있다고 가정하면

if name in test['Name'].values :
   print(name)

일반 목록의 경우 .values를 사용할 필요가 없습니다.


.values를 사용하려면 Pandas DataFrame 객체가 필요하다고 생각합니다.
troymyname00

-3

배열에 동일한 구문을 사용할 수도 있습니다. 예를 들어 Pandas 시리즈 내에서 검색하는 경우 :

ser = pd.Series(['some', 'strings', 'to', 'query'])

if item in ser.values:
    # do stuff
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.