이 글에서는 파이썬의 리스트 컴프리헨션(List Comprehension)과 enumerate() 함수를 함께 사용하여, 숫자와 별(*) 문자가 번갈아 나타나면서 점점 늘어나는 패턴을 만드는 방법을 알아봅니다.
리스트 컴프리헨션이란?
리스트 컴프리헨션은 기존 리스트를 기반으로 새로운 리스트를 간결한 한 줄의 문법으로 생성할 수 있는 파이썬의 강력한 기능입니다. 반복문과 조건문을 짧고 읽기 쉽게 표현할 수 있어, 함수형 프로그래밍 스타일을 지원하는 대표적인 예로 자주 언급됩니다.
enumerate() 함수란?
enumerate() 함수는 이터러블(iterable) 객체를 순회할 때 각 요소에 자동으로 카운터(인덱스 번호)를 붙여주는 내장 함수입니다. 시작 값을 지정할 수도 있어, 인덱스를 1부터 세어야 하는 경우에 특히 유용합니다.
예제 코드
# 정수 리스트 선언
my_list = [1, 2, 3]
# 리스트 출력
print("Printing my_list list : " + str(my_list))
response = [value for sub in ((i, "*" * j)
for j, i in enumerate(my_list, 1))
for value in sub]
# 결과 출력
print("The increasing element pattern IS : " + str(response))코드 동작 방식
내부 제너레이터 표현식에서 enumerate(my_list, 1)은 리스트의 각 요소 i와 1부터 시작하는 카운터 j를 함께 반환합니다. 그리고 "*" * j는 카운터 값만큼 별 문자를 반복 생성합니다. 이렇게 만들어진 (숫자, 별 문자열) 쌍을 외부 리스트 컴프리헨션이 하나씩 풀어서(sub) 평탄화(flat)된 단일 리스트로 만들어 줍니다.
실행 결과
Printing my_list list : [1, 2, 3] The increasing element pattern IS : [1, '*', 2, '**', 3, '***']
정리
리스트 컴프리헨션과 enumerate()를 조합하면 반복문 없이도 숫자와 패턴 문자가 교차하며 증가하는 리스트를 손쉽게 생성할 수 있습니다. 이 기법은 데이터 포맷팅, 시각적 패턴 생성 등 다양한 상황에서 활용할 수 있습니다.