Python에서 for
루프와 zip()
, range()
를 조합하면 코드를 간결하게 만들면서도 강력한 기능을 구현할 수 있습니다. 이번 포스팅에서는 이 세 가지를 조합하여 반복문을 효과적으로 다루는 방법을 알아보겠습니다.
1. 기본 개념
(1) range()
– 숫자 시퀀스 생성
range(start, stop, step)
을 사용하면 특정 범위의 숫자 리스트를 생성할 수 있습니다.
for i in range(1, 10, 2): # 1부터 9까지 2씩 증가
print(i, end=" ")
출력:
1 3 5 7 9
start
: 시작 값 (생략하면 0부터 시작)stop
: 종료 값 (포함되지 않음)step
: 증가 또는 감소 값 (기본값 1)
(2) zip()
– 여러 리스트 동시 순회
zip()
을 활용하면 여러 리스트를 한 번에 반복문으로 순회할 수 있습니다.
names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
for name, age in zip(names, ages):
print(f"{name} is {age} years old.")
출력:
Alice is 25 years old.
Bob is 30 years old.
Charlie is 35 years old.
zip()
은 여러 리스트를 묶어서 튜플을 반환합니다.- 가장 짧은 리스트의 길이에 맞춰 반복됩니다.
2. for
, zip
, range
조합하기
(1) 두 개의 range()
를 이용한 동시 반복
예제를 보면 두 개의 range()
를 조합해 서로 반대 방향으로 증가/감소하는 값을 출력할 수 있습니다.
for i, j in zip(range(1, 10, 1), range(10, 1, -1)):
print(i, ' ', j)
출력:
1 10
2 9
3 8
4 7
5 6
6 5
7 4
8 3
9 2
- 첫 번째
range(1, 10, 1)
은 1부터 9까지 증가 - 두 번째
range(10, 1, -1)
은 10부터 2까지 감소 zip()
을 사용해 두 개의 값을 동시에 반복
(2) 리스트 인덱스와 값 함께 가져오기
리스트의 인덱스와 값을 함께 가져올 때 zip(range(len(list)), list)
패턴을 활용할 수 있습니다.
fruits = ["apple", "banana", "cherry"]
for index, fruit in zip(range(len(fruits)), fruits):
print(f"{index}: {fruit}")
출력:
0: apple
1: banana
2: cherry
Python에서는 enumerate()
를 활용하면 더 간결하게 표현할 수도 있습니다.
for index, fruit in enumerate(fruits):
print(f"{index}: {fruit}")
3. 응용 예제
(1) 두 리스트를 병렬로 반복하며 조건 체크
scores = [90, 75, 88, 95]
names = ["Alice", "Bob", "Charlie", "David"]
for name, score in zip(names, scores):
if score > 80:
print(f"{name} passed with {score}.")
출력:
Alice passed with 90.
Charlie passed with 88.
David passed with 95.
(2) 2D 좌표 생성
두 개의 range()
를 활용하여 (x, y) 좌표 쌍을 만들 수도 있습니다.
for x, y in zip(range(0, 5), range(5, 0, -1)):
print(f"({x}, {y})")
출력:
(0, 5)
(1, 4)
(2, 3)
(3, 2)
(4, 1)
결론
range()
를 활용하면 간편하게 숫자 시퀀스를 생성할 수 있다.zip()
을 활용하면 여러 리스트를 동시에 순회할 수 있다.for
,zip
,range
를 조합하면 반복문을 효율적으로 사용할 수 있으며,enumerate()
같은 대체 옵션도 존재한다.
Python의 반복문을 자유롭게 활용하여 코드를 더욱 간결하고 강력하게 만들어 보세요! 🚀
답글 남기기