> 백엔드 개발 > 파이썬 튜토리얼 > Python에서 `zip([iter(s)]*n)`은 어떻게 효율적으로 목록을 동일한 청크로 분할합니까?

Python에서 `zip([iter(s)]*n)`은 어떻게 효율적으로 목록을 동일한 청크로 분할합니까?

Barbara Streisand
풀어 주다: 2024-11-21 03:48:11
원래의
670명이 탐색했습니다.

How does `zip([iter(s)]*n)` efficiently split a list into equal chunks in Python?

Python에서 zip([iter(s)]n) 분해

Python에서 zip() 함수는 여러 반복 가능한 항목의 요소를 결합합니다. 하나의 반복 가능한 튜플로 만듭니다. zip([iter(s)]n) 구문과 함께 사용하면 목록을 동일한 크기의 덩어리로 분할하는 편리한 방법을 제공합니다.

작동 방식:

[iter(s)]n 표현식은 목록 s에 대한 반복자의 n 복사본을 포함하는 목록을 만듭니다. 반복자의 각 복사본은 목록의 시작 부분에서 시작됩니다. *args는 목록을 zip()에 대한 인수로 압축을 풀어 n개의 반복 가능 항목이 함수에 전달되도록 합니다.

자세한 내용:

zip의 기능을 재현하려면 ([iter(s)]n) 자세한 코드 사용:

def verbose_chunk(s, n):
  """Returns a list of chunks of equal size from a list."""
  chunks = []
  for i in range(n):
    chunk = []
    for j in range(len(s) // n):
      chunk.append(next(iter(s)))
    chunks.append(tuple(chunk))
  return chunks
로그인 후 복사

이 코드는 먼저 원하는 청크 수를 반복합니다. 각 청크에 대해 중첩 루프를 사용하여 목록의 요소를 반복하고 청크에 추가합니다. 그런 다음 청크는 튜플로 변환되어 청크 목록에 추가됩니다.

예:

s = [1,2,3,4,5,6,7,8,9]
n = 3

print(list(zip(*[iter(s)]*n)))  # [(1,2,3),(4,5,6),(7,8,9)]
print(verbose_chunk(s, n))  # [(1,2,3),(4,5,6),(7,8,9)]
로그인 후 복사

두 접근 방식 모두 간결한 zip을 사용하여 동일한 결과를 생성합니다. ([iter(s)]n) 목록을 청크로 분할하는 데 더 효율적인 구문을 제공하는 표현식입니다.

위 내용은 Python에서 `zip([iter(s)]*n)`은 어떻게 효율적으로 목록을 동일한 청크로 분할합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿