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]

Categories:

Updated:

Leave a comment