20240104 파이썬 리스트 컴프리헨션
파이썬의 강력한 기능 중 하나인 리스트 컴프리헨션.
우선 컴프리헨션이 뭐냐
Comprehension
사전적 의미로는 “the ability to understand completely and be familiar with a situation, facts, etc”. 즉, 어떤것을 잘 이해하거나 어떤 상황에 익숙해지기 위한 능력.
파이썬에서 쓰이는 comprehension은 리스트, 딕셔너리, 집합과 같은 자료구조를 한줄로 적어 간결하고 좀 더 이해하기 쉽게 만드는 방법이다.
List Comprehension
따라서 list comprehension은 파이썬에서 리스트를 생성하는 간결하고 효율적인 방법으로, 복잡한 코드를 한 줄로 줄여 보기 쉽게 만들어주고 무엇보다 코드의 실행 속도를 높여준다. for문보다 2배 가까이 더 빠르다고 한다.
List Comprehension으로 리스트 생성하기
- 일반적인 리스트 생성하는 방법
>>> new_list = [] >>> for i in range(10): new_list.append(i) >>> print(new_list) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
일반적으로 for문을 사용해서 리스트를 생성하는 방법이 위와 같았다면,
- list comprehension으로 리스트 생성하는 방법
>>> new_list = [i for i in range(10)] >>> print(new_list) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
또는
>>> new_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> even = [i for i in new_list] >>> print(even) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
위와 같이 아주 간결하게 list comprehension을 사용하여 리스트를 생성할 수 있다.
List Comprehension에 조건 필터 추가하기
조건문은 for ~ in 구문 맨 뒤에 추가하면 된다. 즉 바로 위 코드였다면 in new_list 뒤에 추가하면 되는거.
>>> even = [i for i in new_list if i % 2 == 0]
>>> print(even)
[2, 4, 6, 8, 10]
List Comprehension의 변수에 어떠한 연산을 하고 싶다면
>>> even_squrare = [i**2 for i in new_list if i % 2 == 0]
>>> print(even)
[4, 16, 36, 64, 100]
Leave a comment