내장 기능을 사용하여 서로 다른 크기의 목록 압축
두 개의 목록을 병합할 때 내장된 zip 기능은 더 짧은 목록을 반복할 수 없지만 크기가 다른 목록의 경우 itertools.cycle 함수를 활용하여 이 결과를 얻을 수 있습니다.
Python 패키지 itertools의 사이클은 소진된 후에도 iterable의 요소를 반복적으로 반환하는 반복자입니다. zip과 사이클을 결합하면 목록 간의 크기 불일치를 처리하고 필요에 따라 더 긴 목록이 반복되도록 할 수 있습니다.
예:
A = [1, 2, 3, 4, 5, 6, 7, 8, 9]
B = ["A", "B", "C"]
# Use itertools.cycle to repeat the shorter list
from itertools import cycle
zip_list = zip(A, cycle(B)) if len(A) > len(B) else zip(cycle(A), B)
이 예에서는:
결과:
zip_list에는 생성기 객체로 다음 튜플이 포함됩니다:
[(1, 'A'), (2, 'B'), (3, 'C'), (4, 'A'), (5, 'B'), (6, 'C'), (7, 'A'), (8, 'B'), (9, 'C')]
작동 방식:
itertools.cycle은 반복 가능한 항목(이 경우 B)의 복사본을 생성하고 해당 요소를 반복적으로 반환합니다. zip이 A를 반복하면서 각 요소를 순환 반복기에서 사용 가능한 다음 요소와 쌍을 이룹니다.
A가 B보다 짧으면 반복기가 소진되면 프로세스가 B의 처음부터 다시 시작됩니다. 반대로 A가 더 길면 B 반복자는 병합된 목록의 나머지 부분을 채우기 위해 계속 순환합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3