반응형
파이썬에서는 enumerate()와 zip() 함수를 활용하여 반복문을 보다 효율적으로 작성할 수 있습니다. enumerate()는 리스트나 튜플과 같은 순회 가능한(iterable) 객체의 인덱스와 값을 동시에 반환하며, zip()은 여러 개의 iterable을 병렬로 묶어 처리할 때 사용됩니다.
🔹 1. enumerate() 함수란?
enumerate() 함수는 반복문에서 현재 항목의 인덱스를 함께 가져올 때 유용합니다.
✅ 예제 1: 리스트에서 인덱스와 값을 함께 출력
fruits = ["사과", "바나나", "체리"]
for index, fruit in enumerate(fruits):
print(f"{index}: {fruit}")
출력 예시:
0: 사과
1: 바나나
2: 체리
📌 설명:
- enumerate(fruits)는 각 요소의 **인덱스(index)**와 값을 튜플 형태로 반환합니다.
- for index, fruit in enumerate(fruits):에서 index와 fruit을 각각 변수에 저장하여 사용합니다.
🔹 2. enumerate()의 start 인자
기본적으로 enumerate()는 인덱스를 0부터 시작하지만, start 인자를 활용하면 원하는 숫자부터 시작할 수 있습니다.
✅ 예제 2: start 값 변경하기
colors = ["빨강", "초록", "파랑"]
for index, color in enumerate(colors, start=1):
print(f"{index}번째 색상: {color}")
출력 예시:
1번째 색상: 빨강
2번째 색상: 초록
3번째 색상: 파랑
📌 설명:
- enumerate(colors, start=1)로 설정하면 인덱스가 1부터 시작합니다.
- 순서가 중요한 경우 유용하게 활용할 수 있습니다.
🔹 3. zip() 함수란?
zip() 함수는 여러 개의 리스트(또는 iterable)를 묶어서 하나의 튜플로 반환합니다. 여러 개의 리스트를 동시에 순회할 때 사용하면 매우 유용합니다.
✅ 예제 3: 두 개의 리스트 병렬 순회
names = ["철수", "영희", "민수"]
ages = [25, 24, 23]
for name, age in zip(names, ages):
print(f"{name}의 나이는 {age}살입니다.")
출력 예시:
철수의 나이는 25살입니다.
영희의 나이는 24살입니다.
민수의 나이는 23살입니다.
📌 설명:
- zip(names, ages)는 ("철수", 25), ("영희", 24), ("민수", 23)의 형태로 데이터를 묶어 반환합니다.
- for name, age in zip(names, ages):에서 각각의 값을 추출하여 출력합니다.
🔹 4. zip()을 활용한 여러 개의 리스트 순회
zip()을 활용하면 두 개 이상의 리스트를 동시에 다룰 수 있습니다.
✅ 예제 4: 세 개의 리스트 묶기
students = ["Alice", "Bob", "Charlie"]
scores = [90, 85, 88]
grades = ["A", "B", "B+"]
for student, score, grade in zip(students, scores, grades):
print(f"{student}의 점수는 {score}점이며, 등급은 {grade}입니다.")
출력 예시:
Alice의 점수는 90점이며, 등급은 A입니다.
Bob의 점수는 85점이며, 등급은 B입니다.
Charlie의 점수는 88점이며, 등급은 B+입니다.
📌 설명:
- zip(students, scores, grades)를 사용하여 세 개의 리스트를 한 번에 순회할 수 있습니다.
- 이처럼 zip()은 여러 개의 데이터셋을 병렬로 처리할 때 매우 유용합니다.
🔹 5. zip()과 enumerate() 함께 사용하기
두 함수를 조합하면 인덱스, 값1, 값2 등을 동시에 다룰 수 있습니다.
✅ 예제 5: enumerate()와 zip() 함께 활용하기
products = ["노트북", "스마트폰", "태블릿"]
prices = [1500000, 1000000, 600000]
for index, (product, price) in enumerate(zip(products, prices), start=1):
print(f"{index}. {product}의 가격은 {price}원입니다.")
출력 예시:
1. 노트북의 가격은 1500000원입니다.
2. 스마트폰의 가격은 1000000원입니다.
3. 태블릿의 가격은 600000원입니다.
📌 설명:
- zip(products, prices)를 통해 제품과 가격을 묶습니다.
- enumerate(zip(products, prices), start=1)을 사용하여 리스트의 인덱스와 함께 출력합니다.
🔹 6. zip()과 unzip (해제)
zip()을 사용하여 묶은 데이터를 다시 분리할 수도 있습니다.
✅ 예제 6: zip(*)을 활용한 언패킹
pairs = [("A", 1), ("B", 2), ("C", 3)]
letters, numbers = zip(*pairs)
print(letters)
print(numbers)
출력 예시:
('A', 'B', 'C')
(1, 2, 3)
📌 설명:
- zip(*pairs)을 사용하면 리스트 안의 튜플을 개별 리스트로 분리할 수 있습니다.
반응형
'IT > Python Basic' 카테고리의 다른 글
[Python] 초급 퀴즈17 - 예외 처리 (try-except, raise, finally) (0) | 2025.02.19 |
---|---|
[Python] 초급 퀴즈16 - 파일 입출력 (open, with, read/write) (0) | 2025.02.19 |
[Python] 초급 퀴즈15 - 딕셔너리 메서드, 키/값 접근, 집합 연산 (0) | 2025.02.19 |
[Python] 초급 개념19 - collections 모듈 활용 (0) | 2025.02.19 |
[Python] 초급 개념17 - lambda 함수와 map(), filter(), reduce() (0) | 2025.02.19 |
[Python] 초급 개념16 - random 모듈 활용 (0) | 2025.02.19 |
[Python] 초급 개념15 - 날짜와 시간 (datetime, time 모듈) (0) | 2025.02.19 |
[Python] 초급 개념14 - 모듈과 패키지 (import, from, as) (0) | 2025.02.18 |
댓글