로딩
요청 처리 중입니다...

파이썬 for문 완벽 정리 (2편) | 실전 반복문 활용과 리스트 컴프리헨션 총정리

 파이썬 for문 완벽 정리 (2편) | 실전 반복문 활용과 리스트 컴프리헨션 총정리

range(len())는 데이터의 위치 번호를 순차적으로 반복하는 구조로, 인덱스 기반 접근을 가능하게 한다. 예를 들어 fruits의 각 인덱스에 해당하는 값을 다루려면 for i in range(len(fruits)): print(i, fruits[i])처럼 쓴다. 값 반복과 인덱스 반복의 차이는 전자처럼 값 자체를, 후자는 위치 번호를 반복한다. range는 숫자 생성 객체로 지연 평가되며 시작값, 종료값, 단계값을 받아 stop은 포함되지 않는다.

enumerate()와 비교하면 range(len(data))는 인덱스만 반복하는 것이고 enumerate(data)는 인덱스와 값을 함께 제공한다. Pythonic 코드의 대표 예는 for i, value in enumerate(data): print(i, value)다. 범용적 활용에서 range는 데이터 길이만큼의 인덱스 흐름을 만들고, 데이터의 위치 기반 접근의 핵심 도구로 작용한다.

언패킹 반복은 for문이 item의 구조를 자동으로 분해해 여러 변수에 바인딩하는 구조다. item은 반드시 iterable여야 하며, 튜플, 리스트, 문자열, range 등 다양한 형태를 다룰 수 있다. 예를 들어 데이터를 [(1,2),(3,4)] 처리할 때 a, b로 언패킹해 할당하는 흐름이 일반적이다. 연산 흐름은 iterable → iterator → next() → item 생성 → unpack → 바인딩 → 실행 순으로 진행된다.

zip()는 여러 iterable의 반복 흐름을 같은 속도로 동기화해 같은 위치 데이터를 튜플로 묶는 lazy iterator다. 사용 목적은 서로 대응되는 데이터를 함께 처리하는 것으로, 예를 들어 두 리스트를 같은 인덱스 위치에서 묶어 처리한다. 반환값은 zip 객체로서 필요할 때만 생성되며 가장 짧은 iterable에 맞춰 종료된다. enumerate와 함께 사용해 인덱스와 값을 함께 다루는 패턴도 흔하다.

중첩 for문은 바깥 반복이 한 번 실행될 때마다 안쪽 반복이 전체 실행되는 구조로, 데이터 구조의 차원 수에 대응하는 반복 공간을 형성한다. 2차원 데이터는 이중 반복, 3차원은 삼중 반복으로 확장되며, 행 우선(row-major)과 열 우선(column-major)의 방문 순서 차이를 고려해야 한다. 실무 패턴으로는 삼각형 모양의 출력을 포함한 다양한 차원 순회와, 중첩 구조의 브루트포스 탐색 등이 있다.

for문 제어는 반복 흐름과 종료 상태를 관리하는 기술이다. break는 반복 자체를 강제 종료하고, continue는 현재 반복만 건너뛰며, else는 정상 종료 여부를 판단한다. 중첩 반복에서 break는 가장 가까운 반복문만 종료하므로 바깥까지 확산하려면 추가 제어가 필요하다. 실무 예로 탐색 중 특정 조건에서 종료하거나 특정 조건에서 건너뛰는 패턴이 있다.

리스트 컴프리헨션은 for문의 반복 결과를 expression 기반으로 독립적으로 리스트를 생성하는 Pythonic 문법이다. 표현식 기반으로 값을 다루고, 독립된 스코프를 가지며, eager와 lazy 형태로 생성 방식이 나뉜다. 중첩 반복이나 조건 포함 컴프리헨션으로 더 복잡한 데이터 처리도 가능하며, 성능상 일반 append보다 빠를 때가 많다. 최종 구조는 기본형 [값 for 변수 in iterable]이며, 조건절 if를 포함해 필터링도 가능하다.

조건 포함 컴프리헨션은 for문으로 반복하면서 조건을 만족하는 값만 선택해 새로운 컬렉션을 만든다. [값 for 변수 in iterable if 조건]의 형식으로 동작하며, 조건 충족 여부에 따라 값이 저장되거나 버려진다. 여러 조건이나 중첩 for를 활용한 복잡한 패턴도 가능하고, 조건 위치와 파이프라인의 흐름을 정확히 이해하는 것이 중요하다. 최종 정의는 조건을 만족하는 값만 선언적으로 선택해 새로운 컬렉션을 만드는 Pythonic 데이터 필터링 문법이다.

중첩 컴프리헨션은 여러 개의 for 반복과 조건을 하나의 결과 생성 표현식으로 압축해 표현하는 문법이다. 바깥 for가 먼저, 안쪽 for가 뒤를 따른다는 점은 일반 중첩 for문과 동일하나, 결과식이 앞에 오는 구조로 작성된다. Cartesian Product를 다루거나 다차원 데이터를 순회할 때 유용하며, 중첩이 깊어지면 가독성이 저하될 수 있어 상황에 맞게 선택하는 것이 바람직하다. 최종 정의는 여러 for 반복과 조건을 하나의 표현식으로 축약해 다차원 순회를 가능하게 하는 문법이다.

# break # 파이썬활용 # 파이썬반복문 # 파이썬for문 # 파이썬 # 코딩 # 컴프리헨션 # 중첩for문 # 리스트컴프리헨션 # zip # Pythonfor문 # Python # enumerate # continue # 프로그래밍