comprehension 표현식 써보기
파이썬을 만든 귀도 반 로섬은 2005년 글에서 map
, filter
reduce
같은 함수형 프로그래밍보다 list comprehension
이 더 읽기에 좋다고 했다. 그렇다면 이거는 어떻게 쓰는 걸까?
comprehension이란?
리스트를 간결하게 만들어낼 수 있는 문법이다. 기존에 [0, 1, 2, 3, 4, 5]
을 만들려고
lst = []
for i in range(6):
lst.append(i)
이런 식을 썼었다면
lst = [i for i in range(6)]
list comprehension
으로는 이렇게 한 줄로 가능하다.
[x for x in range(6) if x % 2 == 0]
# [0, 2, 4]
[x if x % 2 == 0 else '!' for x in range(6)]
# [0, '!', 2, '!', 4, '!']
또 내부에서 간단하게 if-else
문을 쓸 수 있다.
[수식 for 원소 in 리스트 if 조건문]
문법이 조금 다르지만 기본 구조는 위와 같다.
[[0 for _ in range(3)] for _ in range(2)]
# [[0, 0, 0],
# [0, 0, 0]]
중첩해서 쓸 수도 있다.