ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python]List Comprehension을 활용한 코드 최적화
    코딩/파이썬 2023. 7. 29. 16:35
    반응형

    이번에는 Python의 강력한 기능 중 하나인 리스트 컴프리헨션(List Comprehension)에 대해 알아보겠습니다. 초보자가 사용하기에는 문법이 약간 복잡하지만, 한 번 알면 이해하고 활용하는 데 큰 어려움이 없을 것입니다.

     

    Python List Comprehension의 이해

     

    목차

     

    1. Python List Comprehension이란?

    List Comprehension은 Python에서 리스트를 생성하는 간결하고 효율적인 방법입니다. 복잡한 코드를 한 줄로 줄여 보기 쉽게 만들어주며, 코드의 실행 속도를 높여줍니다. 아래 일반적인 리스트 생성과 List Comprehension을 이용한 생성 방법을 비교해 보도록 하겠습니다.

     

    # 1. 일반적인 방법으로 리스트를 생성하는 예
    numbers = []
    for i in range(10):
        numbers.append(i)
    print(numbers) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    # 2. List Comprehension을 사용하여 같은 리스트를 생성하는 예
    numbers = [i for i in range(10)]
    print(numbers) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

     

    위 두 번째에 있는 아래 부분이 List Comprehension 으로 생성하는 방법입니다. 
    리스트 괄호 [ ] 내에 for 문을 넣고, 매 루프의 결과를 i 를 list의 요소로 삽입합니다. 

     

    numbers = [ i for i in range(10)]

     

     

    2. List Comprehension의 장점

    가독성 향상

    List Comprehension의 가장 큰 장점 중 하나는 코드의 가독성을 향상시킨다는 것입니다. 코드가 줄어들어 전체적인 프로그램 구조를 이해하는 데 도움이 됩니다.


    속도 향상

    또한, List Comprehension은 일반적인 for loop나 map, filter 함수에 비해 처리 속도가 빠르다는 장점도 있습니다.

     

    # 시간 측정을 위한 코드
    import time
    
    start = time.time() 
    numbers = [i for i in range(1000000)] 
    end = time.time() 
    print('List Comprehension Time:', end-start)
    
    start = time.time() 
    numbers = []
    for i in range(1000000):
        numbers.append(i)
    end = time.time() 
    print('For loop Time:', end-start)

     

    위 코드로 List Comprehension와 일반적인 for 과 실행 시간 비교가 가능합니다. 
    아래 jupyter 에서 실행해보면 list comprehension이 for문 보다 2배 가까이 빠른 것을 확인할 수 있습니다.

     

     

    3. 사용 예시

    다양한 경우에 List Comprehension을 활용할 수 있습니다. 이를테면, 리스트에서 특정 조건에 맞는 요소만을 선택하거나, 각 요소에 함수를 적용하는 것 등이 가능합니다. 아래는 주요 사례를 몇 가지 들어보았습니다.

     

    짝수만 추출

    # 짝수만 추출하는 예시
    numbers = [i for i in range(10) if i % 2 == 0]
    print(numbers) # [0, 2, 4, 6, 8]

     

    리스트 요소 제곱하기

    # 각 요소에 함수 적용 예시
    squares = [i**2 for i in range(10)]
    print(squares) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

     

    문자열 리스트에서 특정 길이 이상의 단어만 선택

    words = ["apple", "banana", "cherry", "date"]
    long_words = [word for word in words if len(word) > 5]
    print(long_words) # ['banana', 'cherry']

     

    문자열 리스트에 대문자 변환 함수 적용하기  

    words = ["apple", "banana", "cherry", "date"]
    uppercase_words = [word.upper() for word in words]
    print(uppercase_words) # ['APPLE', 'BANANA', 'CHERRY', 'DATE']

     

    중첩된 리스트를 단일 리스트로 펼치기 (Flattening):

    nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    flat_list = [num for sublist in nested_list for num in sublist]
    print(flat_list) # [1, 2, 3, 4, 5, 6, 7, 8, 9]

     

    결론적으로, Python의 List Comprehension은 코드를 보다 간결하게 작성할 수 있게 해주고, 처리 속도를 향상시키는 훌륭한 도구입니다. 앞서 제시한 예시들을 바탕으로 실제 코드 작성에 활용해보시기 바랍니다. 초보자분들도 조금의 연습만 있다면 이 기능을 쉽게 활용하실 수 있을 것입니다.

    반응형

    댓글

Designed by Tistory.