에르노트

파이썬 리스트 컴프리헨션 (List Comprehension) 본문

Dev/Python

파이썬 리스트 컴프리헨션 (List Comprehension)

두콩 2021. 11. 12. 21:43

알면 알수록, 그리고 쓰면 쓸수록 파이썬은 참 잘 만들어진 언어라는 생각이 든다. 코틀린이나 모던 자바스크립트 같은 최신 언어들도 다뤄봤지만 역시 파이썬이 가장 직관적이고 편한 것 같다.

 

아무튼 파이썬에는 다소 독특한 리스트 초기화 방법이 있다. 바로 리스트 컴프리헨션(List Comprehension)이다. 파이썬에서는 대괄호([]) 안에 조건문과 반복문을 사용해서 표현된 식으로 리스트를 초기화 할 수 있고, 이를 리스트 컴프리헨션이라 한다.

 

그럼 왜 이걸 리스트 컴프리헨션이라고 부를까? 영단어 'Comprehension'에는 '이해, 포용, 포괄'이라는 뜻이 있다. 즉, 대괄호 안에 어떤 수식을 적더라도 리스트로 감싸안아 준다는 뜻으로 이해하면 편하다. 따라서 리스트 컴프리헨션의 결과(반환값은)는 항상 리스트임을 알 수 있다.

 

파이썬 리스트 컴프리헨션

새로운 문법을 알아야 할 필요는 없다. 기존에 파이썬 조건문과 반복문을 사용할 수 있다면 직관적으로 리스트 컴프리헨션을 사용할 수 있다. 아래에 파이썬 리스트 컴프리헨션이 유용하게 쓰이는 대표적인 예시들을 정리해보았다.

# 0부터 9 사이에 홀수로만 리스트 구성
arr = [i for i in range(10) if i%2 == 1]

arr: [1, 3, 5, 7, 9]

# 0부터 9 사이에 제곱수로 리스트 구성
arr2 = [i*i for i in range(10)]

arr2: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

# 0으로 구성된 4*3 2차원 리스트
arr3 = [[0]*4 for _ in range(3)]

arr3: [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

# 서로 다른 배열 요소 각각 더하기
a = ['a', 'b', 'c']
b = ['1', '2', '3']
arr4 = [i+j for i in a for j in b]

arr4: ['a1', 'a2', 'a3', 'b1', 'b2', 'b3', 'c1', 'c2', 'c3']

# 0부터 9 사이에 홀수면 'odd', 짝수면 'even'으로 리스트 구성
arr5 = ['odd' if i%2 == 1 else 'even' for i in range(10)]

arr5: ['even', 'odd', 'even', 'odd', 'even', 'odd', 'even', 'odd', 'even', 'odd']

Comments