Skip to content

파이썬 마스터하기: 두 개의 리스트를 쉽게 합치는 방법

Updated on

파이썬은 가독성이 좋고 우아한 구문으로 잘 알려져 있으며 개발자들이 편리하게 사용할 수 있는 다양한 내장 함수가 포함되어 있습니다. 이 중 하나인 zip() 함수는 여러 리스트를 병렬로 반복하는 다목적 도구로 유용하게 활용됩니다. 이 가이드에서는 파이썬 zip() 함수에 대해 자세히 살펴보며 동시에 여러 리스트를 순회하고, 그 결과로 해당하는 딕셔너리를 생성하는 방법을 소개하겠습니다.

PyGWalker는 시각화 도구를 사용하여 파이썬 판다스 데이터프레임으로부터 빠르게 데이터 시각화를 제공합니다. PyGWalker (opens in a new tab)는 pandas 데이터프레임과 polars 데이터프레임을 Tableau 스타일의 사용자 인터페이스로 변환하거나 시각 탐색을 가능하게 한 유틸리티 입니다.

PyGWalker for Data visualization (opens in a new tab)

파이썬 zip() 함수 이해하기

zip() 함수는 두 개 이상의 반복 가능한(list, tuple, set 등) 객체에서 요소를 한 쌍씩 추출하여 튜플로 묶는 파이썬 내장 함수입니다. 이 함수는 이러한 튜플을 생성하는 이터레이터를 반환합니다. 두 개 이상의 반복 가능한 객체의 길이가 다른 경우, 생성 된 출력의 길이는 가장 적은 항목을 가진 이터레이터로 결정됩니다.

list1 = ["a", "b", "c"]
list2 = [1, 2, 3]
zipped = zip(list1, list2)
print(list(zipped))

위 코드는 다음을 출력합니다:

[('a', 1), ('b', 2), ('c', 3)]

파이썬 zip() 함수를 이용한 병렬 반복

프로그래밍에서는 종종 두 개 이상의 리스트를 동시에 순회해야 하는 경우가 있습니다. 이때 zip() 함수를 사용하면 인덱싱을 줄이고 잠재적인 오류 가능성을 줄이므로 간단하고 효율적으로 처리할 수 있습니다.

학생 이름, 각 학생의 성적을 저장하는 두 개의 리스트를 고려해보세요. 각 학생의 이름과 성적을 출력하려면 다음과 같이 zip() 함수를 사용할 수 있습니다.

students = ["Alice", "Bob", "Charlie"]
grades = [85, 90, 95]
 
for student, grade in zip(students, grades):
    print(f"{student}: {grade}")

파이썬 zip() 함수를 사용하여 딕셔너리 생성하기

파이썬의 zip() 함수는 동적으로 딕셔너리를 생성하는 기능에 능합니다. 파이썬에서 딕셔너리는 데이터를 키-값 쌍으로 저장하는 데이터 구조입니다. 키와 해당 값이 들어있는 두 개의 리스트가 있는 경우, zip() 함수를 사용하여 딕셔너리를 만들 수 있습니다.

keys = ['apple', 'banana', 'cherry']
values = [1, 2, 3]

fruit_dict = dict(zip(keys, values)) print(fruit_dict)


이것은 출력합니다:

```python
{'apple': 1, 'banana': 2, 'cherry': 3}

이 기능은 데이터 분석 및 기타 실제 응용 프로그램에서 특히 유용하며, 동적으로 데이터 구조를 만들고 조작하는 많은 기회를 엽니다.

순서 없는 이터러블과 함께 사용하는 Python zip() 함수

리스트는 순서가 지정된 컬렉션입니다. 그러나 집합 및 사전과 같은 일부 Python 컬렉션은 요소에 특정 순서가 없으므로 비순서 컬렉션과 함께 zip() 함수를 사용하면 어떻게 될까요?

비순서 컬렉션과 함께 사용할 때 zip() 함수는 여전히 튜플을 생성합니다. 그러나 이러한 튜플의 순서는 Python이 컬렉션의 요소를 어떻게 내부적으로 정렬하는지에 따라 다릅니다.

set1 = {"apple", "banana", "cherry"}
set2 = {1, 2, 3}
zipped_set = zip(set1, set2)
print(list(zipped_set))

기억하세요. 집합은 순서가 없으므로 실행할 때마다 출력이 달라질 수 있습니다.


이전 섹션에서 Python의 zip() 함수의 일반적인 사용 사례를 살펴보았습니다. 이번에는 이 다재다능한 함수를 활용하여 다양한 시나리오에서 사용하는 방법을 설명하고 다른 Python 함수와 비교해보겠습니다.

Python의 zip() 함수를 활용한 실제 문제 해결

Python의 zip() 함수는 다양한 프로그래밍 문제를 해결하는 우수한 도구가 될 수 있습니다. 대용량 데이터를 처리하거나 동적으로 사전을 생성하는 경우, zip() 함수는 종종 우아한 해결책을 제공합니다.

제품 이름을 포함하는 한 목록과 그에 상응하는 가격이 포함된 다른 목록을 처리해야하는 상황을 상상해보십시오. 가장 높은 가격의 제품을 찾고 싶은 경우, zip() 함수를 사용하여 간편하게 수행할 수 있습니다.

products = ["Apples", "Bananas", "Cherries"]
prices = [1.5, 0.5, 3.2]
 
# 두 개의 리스트를 zip하고 max() 함수를 사용합니다.
max_price_product = max(zip(prices, products))
print(max_price_product)

출력은 가장 높은 가격을 가진 튜플을 보여주며, 가장 높은 비용을 가진 제품을 보여줍니다.

Python의 zip() vs enumerate() 함수

zip() 및 enumerate() 모두 iterable을 다루는 내장 Python 함수입니다. 우리가 보았듯이, zip() 함수는 여러 iterable을 동시에 반복하는 데 사용되며, enumerate() 함수는 iterable에 계수기를 추가하고 enumerate 오브젝트를 반환합니다.

이러한 함수는 유사하게 보일 수 있지만 각각 고유한 목적을 제공합니다. zip() 함수는 여러 목록을 병렬로 반복하거나 동적으로 사전을 생성하는 경우 이상적입니다. 대조적으로, enumerate() 함수는 원소 인덱스를 인쇄하거나 원소 인덱스로 목록을 반복하는 경우와 같이 원소와 함께 자동 계수기가 필요한 경우에 빛을 발합니다.

사전 생성을 위한 Python zip() 함수

이전에 보았듯이, Python의 zip() 함수는 사전을 생성하는 데 특히 강력합니다. 이는 수동으로 사전을 생성하기에 대규모 데이터 세트에서 비실용적 일 것이므로 특히 유용합니다. Python의 zip() 함수를 사용하면 동적으로 사전을 만들 수 있으며, 시간과 노력을 절약하며 코드를 더 읽기 쉽고 효율적으로 만듭니다.

names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]

person_dict = dict(zip(names, ages)) print(person_dict)


이것은 다음과 같이 출력됩니다:

```python
{'Alice': 25, 'Bob': 30, 'Charlie': 35}

결론

이로써 파이썬의 zip() 함수에 대한 깊은 이해를 마칩니다. 여러 리스트를 병렬로 탐색하거나 동적으로 사전을 생성하거나 깨끗하고 효율적인 코드를 작성하려는 경우, zip()은 파이썬 도구 상자에서 귀중한 도구가 될 수 있습니다.

FAQ

  1. 파이썬 zip() 함수란 무엇인가요?

    zip() 함수는 여러 리스트 또는 기타 iterable 객체를 병렬로 반복할 수 있도록 하는 내장 파이썬 함수입니다. 각 iterable에서 해당 요소를 짝지어 튜플로 구성된 zip 개체를 반환합니다.

  2. 파이썬 zip() 함수는 길이가 다른 리스트와 함께 사용될 때 어떻게 작동하나요?

    zip() 함수가 길이가 다른 리스트와 함께 사용될 때 결과 출력의 길이는 가장 짧은 목록에 의해 결정됩니다. 더 긴 목록의 추가 요소는 단순히 무시됩니다.

  3. 파이썬 zip() 함수는 세트와 사전과 함께 사용될 수 있나요?

    예, zip() 함수는 세트 및 사전을 포함한 모든 유형의 iterable과 함께 사용할 수 있습니다. 그러나 세트 및 사전은 순서가 없는 컬렉션입니다. 따라서 결과 튜플의 요소 순서가 예측할 수 없을 수 있습니다.