>백엔드 개발 >파이썬 튜토리얼 >조건에 따라 목록을 효율적으로 분할하려면 어떻게 해야 합니까?

조건에 따라 목록을 효율적으로 분할하려면 어떻게 해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-13 16:23:20394검색

How Can I Efficiently Partition a List Based on a Condition?

조건에 따라 목록 분할

주어진 조건에 따라 목록을 둘로 분할할 때 목록을 두 번 반복하고 싶은 유혹이 듭니다. 다음과 같이 두 개의 새 목록을 생성합니다.

good = [x for x in mylist if x in goodvals]
bad = [x for x in mylist if x not in goodvals]

그러나 이 접근 방식에는 두 개의 별도 목록이 필요합니다. 목록에 대한 반복은 비효율적일 수 있습니다. 성능을 향상하려면 조건부 추가가 포함된 수동 반복 사용을 고려하세요.

good, bad = [], []
for x in mylist:
    (bad, good)[x in goodvals].append(x)

이 코드에서는

  • 두 개의 빈 목록(좋은 목록과 나쁜 목록)을 초기화하여 분할된 요소를 저장합니다. .
  • mylist의 요소를 반복합니다.
  • 각 요소 x에 대해 다음 표현식을 사용합니다. (bad, good)[x in goodvals] goodvals의 x 조건에 따라 적절한 목록을 선택합니다.
  • 이 표현식은 x가 조건을 충족하지 않으면 bad로 평가되고 그렇지 않으면 good으로 평가됩니다.
  • append 메서드를 사용하여 선택한 목록에 x를 추가합니다.

이 접근 방식은 두 번의 개별 반복이 필요하지 않으므로 순회를 2에서 1로 나열합니다. 또한 간결하고 읽기 쉬운 방식으로 분할 논리를 포착하므로 더욱 우아한 것으로 간주됩니다.

위 내용은 조건에 따라 목록을 효율적으로 분할하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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