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

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

if [check that item is in array]:



답변

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

if item in my_list:
    # whatever

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


답변

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

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


답변

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

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

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)


답변

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

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

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


답변

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

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

if item in ser.values:
    # do stuff


답변