목록의 여러 값에 대한 멤버십 테스트
질문:
어떻게 테스트할 수 있나요? 여러 값이 Python에서 목록의 구성원인 경우? 예상되는 결과는 각 값의 멤버십을 나타내는 부울 값을 반환하는 것이지만 현재 접근 방식에서는 예상치 못한 출력이 생성됩니다.
설명:
제공된 코드 조각 ' ['b', 'a', 'foo', 'bar']의 a','b'는 Python이 이를 개별 값에 대한 멤버십 테스트가 아닌 튜플로 해석하기 때문에 의도한 대로 작동하지 않습니다.
답변:
목록에 있는 여러 값의 구성원 자격을 올바르게 테스트하려면 다음 표현식을 사용하세요.
<code class="python">all(x in ['b', 'a', 'foo', 'bar'] for x in ['a', 'b'])</code>
목록에 있는 모든 값이 True인 경우 True를 반환합니다. 두 번째 목록은 첫 번째 목록의 구성원이고 그렇지 않으면 False입니다.
기타 옵션:
세트 사용:
<code class="python">set(['a', 'b']).issubset(set(['a', 'b', 'foo', 'bar'])) {'a', 'b'} <= {'a', 'b', 'foo', 'bar'}</code>
이 방법은 목록의 요소가 해시 가능한 경우에는 잘 작동하지만 목록이 큰 경우에는 비효율적일 수 있습니다.
속도 테스트:
벤치마크 결과는 다음과 같습니다. 하위 집합 테스트(집합 사용)는 일반적으로 all 표현식보다 빠르지만 목록이 작거나 하위 집합 작업이 집합과 함께 사용되지 않는 한 그 차이는 크지 않습니다. 그러나 목록의 요소가 해시 가능하지 않거나 목록이 큰 경우 all 표현식이 더 효율적일 수 있습니다.
결론:
all 표현식 사용 이는 일반적으로 목록의 여러 값을 테스트하는 데 좋은 방법입니다. 특히 요소가 해시 가능하지 않고 효율성이 중요한 경우에는 더욱 그렇습니다. 요소가 해시 가능하고 목록이 작은 경우 하위 집합 테스트를 통해 약간의 속도 이점을 얻을 수 있습니다.
위 내용은 Python 목록에서 여러 값의 멤버십을 테스트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!