에르노트
파이썬 리스트 컴프리헨션 (List Comprehension) 본문
알면 알수록, 그리고 쓰면 쓸수록 파이썬은 참 잘 만들어진 언어라는 생각이 든다. 코틀린이나 모던 자바스크립트 같은 최신 언어들도 다뤄봤지만 역시 파이썬이 가장 직관적이고 편한 것 같다.
아무튼 파이썬에는 다소 독특한 리스트 초기화 방법이 있다. 바로 리스트 컴프리헨션(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']
'Dev > Python' 카테고리의 다른 글
파이썬 문자 유니코드 변환 (ord 함수, chr 함수) (1) | 2021.11.14 |
---|---|
파이썬 재귀 깊이 제한 해제 (sys.setrecursionlimit()) (0) | 2021.11.02 |
파이썬 self (takes 0 positional arguments but 1 was given FIX) (2) | 2021.07.31 |
파이썬 논리 연산자 - and, or, not (2) | 2021.07.24 |