>  기사  >  백엔드 개발  >  왜 \"(\'a\', \'b\') in [\'b\', \'a\', \'foo\', \'bar\']\"가 다음과 같이 작동하지 않습니까? 목록에서 여러 값을 확인해야 합니까?

왜 \"(\'a\', \'b\') in [\'b\', \'a\', \'foo\', \'bar\']\"가 다음과 같이 작동하지 않습니까? 목록에서 여러 값을 확인해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-01 05:52:02157검색

Why Doesn't

여러 값이 목록에 속하는지 확인하는 방법

질문:

다음을 수행해야 합니다. 목록에 여러 값이 있는지 확인했지만 다음 코드는 예상치 못한 결과를 생성합니다.

'a','b' in ['b', 'a', 'foo', 'bar']

이 코드가 의도한 대로 작동하지 않는 이유는 무엇이며 여러 값의 구성원 자격을 효율적으로 확인할 수 있는 방법은 무엇입니까?

답변:

Python은 코드 조각을 원하는 목록 멤버십 테스트가 아닌 튜플 비교로 해석합니다. 여러 값이 있는지 테스트하려면 다음 접근 방식을 사용하세요.

all(x in container for x in items)

여기서 컨테이너는 테스트할 목록이나 다른 시퀀스이고 항목은 찾을 값이 포함된 반복 가능 항목입니다.

추가 고려 사항:

  • 속도 테스트: 위에서 언급한 접근 방식은 대부분의 경우에 잘 작동하지만 목록을 집합으로 변환하면 더 빠른 결과를 얻을 수 있습니다. 그러나 이러한 전환이 항상 가치 있는 것은 아닙니다. 벤치마크는 입력의 크기와 유형에 따라 속도 이점이 다르다는 것을 보여줍니다.
  • 설정 고려 사항: 세트는 해시 가능한 요소에 대한 포함 검사를 가속화할 수 있지만 생성에는 메모리 오버헤드가 필요합니다. 생성기는 대안을 제공하며 해시할 수 없는 요소가 있는 대규모 데이터 세트에 대해 더 효율적일 수 있습니다.

결론:

all(x in 컨테이너 for x in 항목) 방법은 목록이나 다른 컨테이너에 있는 여러 값의 멤버쉽을 확인하기 위한 다양하고 효율적인 솔루션입니다. 특정 요구 사항에 따라 세트로 변환하거나 생성기를 사용하면 성능을 더욱 최적화할 수 있습니다.

위 내용은 왜 \"(\'a\', \'b\') in [\'b\', \'a\', \'foo\', \'bar\']\"가 다음과 같이 작동하지 않습니까? 목록에서 여러 값을 확인해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.