AD JB Toolbox 01

Python 강좌 / for·range·enumerate·zip으로 반복하기

for는 반복 가능한 객체의 항목을 하나씩 처리합니다. 항목만 필요하면 직접 반복하고, 위치가 필요하면 enumerate, 여러 모음을 함께 읽으려면 zip을 선택합니다.

값 반복과 숫자 범위

Python의 for는 리스트 인덱스를 직접 증가시키는 문법에 한정되지 않습니다. 리스트나 문자열을 직접 반복할 수 있습니다. range(start, stop, step)은 stop을 포함하지 않으며 step이 음수이면 감소합니다. range는 모든 숫자를 미리 담은 리스트와 다릅니다.

관련 동작과 지원 조건은 for·range·enumerate·zip으로 반복하기 관련 공식 문서에서 확인할 수 있습니다.

for value in range(1, 4):
    print(value)

1, 2, 3이 차례로 출력됩니다. stop을 포함한다고 생각하면 반복 횟수를 하나 잘못 계산하기 쉽습니다.

전체 예제와 실행 결과

별도의 실습 폴더에서 아래 파일을 UTF-8로 저장합니다. 가상환경을 선택한 터미널에서 python for_loop.py 명령으로 실행합니다. macOS·Ubuntu에서 가상환경을 사용하지 않는 경우 명령 이름을 python3으로 바꿉니다.

for_loop.py 파일의 전체 내용입니다.

names = ["coffee", "lunch", "bus"]
amounts = [3500, 8000, 2500]
for number, (name, amount) in enumerate(zip(names, amounts, strict=True), start=1):
    print(number, name, amount)
print(list(range(5, 0, -2)))

예상 결과는 다음과 같습니다.

1 coffee 3500
2 lunch 8000
3 bus 2500
[5, 3, 1]

enumerate와 zip의 길이 조건

enumerate는 인덱스와 항목을 함께 제공하며 start=1은 표시 번호를 1부터 시작하게 합니다. 리스트의 실제 인덱스가 바뀌는 것은 아닙니다. 예제의 이중 언패킹은 번호와 이름·금액 쌍을 각각 받는 구조입니다.

기본 zip은 가장 짧은 입력이 끝나면 중단합니다. 길이가 같아야 하는 데이터라면 strict=True로 조용한 누락을 막을 수 있습니다. 이 옵션은 Python 3.10 이상에서 지원합니다. 이름과 금액을 따로 보관하면 길이가 어긋날 수 있으므로 기록이 복잡해지면 딕셔너리 목록처럼 한 항목에 묶는 방법도 검토합니다.

반복 중 변경과 결과 확인

원본 리스트를 돌면서 같은 리스트에서 삭제하면 다음 항목을 건너뛸 수 있습니다. 삭제할 항목을 따로 모으거나 필터링한 새 결과를 만들세요. 단순히 읽는 반복과 데이터 구조를 바꾸는 작업을 구분하면 추적하기 쉽습니다.

  1. amounts의 마지막 항목을 지워 strict=True가 오류를 발생시키는지 확인합니다.
  2. strict 옵션을 빼면 두 항목만 출력되는지 비교한 뒤 원래 데이터를 복구합니다.
  3. range(5, 0, -2)의 끝을 -1로 바꾸어 1 다음에 -1이 포함되는지 예상하고 실행합니다.
같은 카테고리의 다른 글
Python 강좌 / macOS·Ubuntu에서 Python 실행 환경 준비하기

Python 강좌 / macOS·Ubuntu에서 Python 실행 환경 준비하기

macOS와 Ubuntu의 Python 설치 경로를 확인하고 개발용 가상환경을 만듭니다. 시스템 Python 보호, 배포판 버전 차이와 설치 오류의 확인 기준을 함께 다룹니다.

Python 강좌 / 튜플과 시퀀스 언패킹 이해하기

Python 강좌 / 튜플과 시퀀스 언패킹 이해하기

튜플 생성과 언패킹, 별표 수집과 값 교환을 익힙니다. 불변성의 범위와 항목 수 오류, 리스트·딕셔너리와의 선택 기준을 설명합니다.

Python 강좌 / 함수 정의하고 값 반환하기

Python 강좌 / 함수 정의하고 값 반환하기

def·매개변수·return으로 계산 함수를 작성합니다. 출력과 반환의 차이, 함수 책임과 입력 전제, 호출 오류의 확인 방법을 설명합니다.

Python 강좌 / 비교·논리 연산자와 참·거짓 판단하기

Python 강좌 / 비교·논리 연산자와 참·거짓 판단하기

비교·논리 연산자와 참·거짓 변환을 설명합니다. and·or의 단락 평가, 0과 None의 차이, ==와 is의 용도를 예제로 확인합니다.

Python 강좌 / 조건과 반복 종합 실습: 점수 집계 프로그램

Python 강좌 / 조건과 반복 종합 실습: 점수 집계 프로그램

점수 집계 프로그램으로 조건문·반복문·리스트를 연결합니다. 유효 범위, 합격 경계, 빈 입력과 제외 개수를 확인하며 평균 계산을 검증합니다.

Python 강좌 / 변수·주석·입력과 출력으로 첫 프로그램 만들기

Python 강좌 / 변수·주석·입력과 출력으로 첫 프로그램 만들기

변수 대입과 주석, input·print의 역할을 익힙니다. 입력 문자열을 금액으로 변환하고 f-string으로 출력하며 잘못된 입력의 원인을 확인합니다.

Python 강좌 / 숫자 자료형과 연산: 정수·실수·형 변환

Python 강좌 / 숫자 자료형과 연산: 정수·실수·형 변환

int·float·Decimal의 차이와 나눗셈·형 변환을 설명합니다. 음수와 십진 소수 예제로 금액 계산에서 정확도를 선택하는 방법을 확인합니다.

Python 강좌 / 리스트 만들고 항목 추가·수정·삭제하기

Python 강좌 / 리스트 만들고 항목 추가·수정·삭제하기

리스트의 추가·수정·삭제와 정렬을 실행 예제로 확인합니다. sort와 sorted, 얕은 복사, 빈 목록과 반복 중 변경의 차이를 설명합니다.

Python 강좌 / 딕셔너리로 키와 값 관리하기

Python 강좌 / 딕셔너리로 키와 값 관리하기

딕셔너리의 키·값 접근과 항목 갱신을 설명합니다. 분류별 지출 집계 예제로 get·items·정렬과 필수 키 누락 처리의 차이를 확인합니다.

Python 강좌 / for·range·enumerate·zip으로 반복하기

Python 강좌 / for·range·enumerate·zip으로 반복하기

for·range·enumerate·zip의 용도를 비교합니다. 번호와 지출 항목을 함께 출력하며 범위의 끝 제외, zip의 길이 불일치와 반복 중 변경 문제를 확인합니다.