>  기사  >  백엔드 개발  >  코트 지퍼를 여는 것 이상: Python에서 &#zip_longest&# 마스터하기

코트 지퍼를 여는 것 이상: Python에서 &#zip_longest&# 마스터하기

PHPz
PHPz원래의
2024-08-10 07:09:081182검색

Beyond Zipping Up a Coat: Mastering

Python에서 길이가 다른 두 목록을 압축하려고 시도하면서 데이터가 손실되어 좌절감을 느꼈을 것입니다.
itertools.zip_longest가 문제를 해결해 드립니다. 여기서는 zip_longest() 사용법을 살펴보고, 이를 표준 zip과 비교하고, 그것이 빛나는 실제 시나리오를 탐구하고 싶습니다.

itertools.zip_longest가 무엇인가요?

Python의 itertools 모듈에 있는 zip_longest() 함수를 사용하면 여러 반복 가능 항목을 압축하여 짧은 반복 항목을 지정된 값(기본값)으로 채울 수 있습니다. 이렇게 하면 반복 가능한 항목의 길이가 다른 경우에도 데이터가 손실되지 않습니다.

실제예

교실에 학생들을 앉히려고 하는데 학생 수와 사용 가능한 책상 수가 일치하지 않는 시나리오를 생각해 보세요. 모든 학생이 자리를 잡고 가능한 한 모든 자리가 채워지도록 하고 싶습니다.

  • zip()을 사용하면 학생이나 책상이 부족해지는 순간 페어링이 중지됩니다. 이는 일부 책상이 비어 ​​있거나 일부 학생이 서 있을 수 있음을 의미합니다.

  • zip_longest()를 사용하면 모든 학생을 책상과 짝을 이룰 수 있으며, 책상이 부족할 경우 추가 학생이 일어서야 한다는 점을 알 수 있습니다. 또는 학생보다 책상이 더 많은 경우 추가 책상을 "비어 있음"으로 표시할 수 있습니다. 모든 학생이 계산되며 어떤 책상이 비어 ​​있는지 정확히 알 수 있습니다.

zip()zip_longest()

을 모두 사용하여 책상 수가 학생 수를 초과하는 예를 생각해 보세요.

zip() 사용

students = ['Alice', 'Bob']
desks = ['Desk 1', 'Desk 2', 'Desk 3']

# Using zip to pair students with desks
seating_zip = list(zip(students, desks))

print("Seating with zip:")
for student, desk in seating_zip:
    print(f"{student} is assigned to {desk}")

출력:

Seating with zip:
Alice is assigned to Desk 1
Bob is assigned to Desk 2

zip()을 사용하면 더 짧은 목록(학생)이 소진되는 즉시 페어링이 중지됩니다. 데스크 3은 할당되지 않은 상태로 유지되며 사용되지 않는다는 표시도 없습니다.

zip_longest() 사용

from itertools import zip_longest

students = ['Alice', 'Bob']
desks = ['Desk 1', 'Desk 2', 'Desk 3']

# Using zip_longest to pair students with desks
seating_zip_longest = list(zip_longest(students, desks, fillvalue='Empty Seat'))

print("\nSeating with zip_longest:")
for student, desk in seating_zip_longest:
    print(f"{student} is assigned to {desk}")

출력:

Seating with zip_longest:
Alice is assigned to Desk 1
Bob is assigned to Desk 2
Empty Seat is assigned to Desk 3

zip_longest()를 사용하면 모든 좌석을 채울 만큼 학생이 충분하지 않은 경우에도 모든 책상을 차지합니다. 이 경우 데스크 3은 "빈 좌석"과 짝을 이루어 이 데스크가 비어 있음을 나타냅니다. 이 접근 방식은 모든 리소스를 추적하여 누락된 항목이 없도록 해야 할 때 특히 유용합니다.

? zip_longest()의 장점:
데이터 보존: 더 짧은 반복 가능 항목을 채워 데이터가 손실되지 않도록 합니다.
유연성: 사용자 정의 채우기 값을 지정할 수 있습니다.
포괄적인 페어링: 길이가 다른 반복 가능 항목의 정렬이 필요한 데이터 처리 작업에 유용합니다.
? zip_longest()의 단점:
패딩이 원하지 않을 수 있음: 어떤 경우에는 패딩으로 인해 불필요한 복잡성이 발생할 수 있습니다.
메모리 사용량: 큰 반복 가능 항목과 큰 채우기 값을 처리하는 경우 더 많은 메모리를 사용할 수 있습니다.

? zip()의 장점:
간단하고 효율적: 동일한 길이의 반복 가능 항목과 잘 작동합니다.
더 적은 메모리 사용량: 패딩이 없다는 것은 잠재적으로 메모리 오버헤드가 더 적다는 것을 의미합니다.
? zip()의 단점:
데이터 손실: 가장 짧은 반복 가능한 항목으로 자르고 더 긴 항목의 데이터는 손실됩니다.

결론

zip_longest()는 특히 다양한 길이의 반복 가능 항목을 작업할 때 Python의 강력한 도구입니다. 누락된 값을 채워 데이터 무결성을 보장하므로 다양한 데이터 처리 작업에 이상적입니다. zip()은 더 간단하고 메모리 효율적이지만 zip_longest()는 다양한 실제 시나리오에 필요한 유연성을 제공합니다.

위 내용은 코트 지퍼를 여는 것 이상: Python에서 &#zip_longest&# 마스터하기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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