ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python] List Comprehension (리스트내포): list를 효율적으로
    Python Study 2024. 8. 1. 22:23
    728x90

    [Python] List Comprehension (리스트내포): list를 효율적으로


    기본 구문

    [표현식 for 항목 in iterable if 조건]
    • 표현식: 새로운 리스트의 각 요소를 정의합니다.
    • 항목: 기존 리스트 또는 다른 iterable의 각 요소를 나타냅니다.
    • iterable: 순회 가능한 객체 (예: 리스트, 문자열, 튜플 등)
    • 조건 (선택 사항): 필터 역할을 하며, 조건이 참인 경우에만 요소가 리스트에 포함됩니다.

    예제

    1. 기본 사용법

    • 기존 리스트의 각 요소에 2를 곱한 새로운 리스트를 생성:
    numbers = [1, 2, 3, 4, 5]
    doubled = [num * 2 for num in numbers]
    print(doubled)  # 출력: [2, 4, 6, 8, 10]

     

    2. 조건 추가

    • 리스트의 요소 중 짝수만 포함:
    numbers = [1, 2, 3, 4, 5]
    evens = [num for num in numbers if num % 2 == 0]
    print(evens)  # 출력: [2, 4]

     

    3. 중첩 루프

    • 두 리스트의 각 요소의 곱을 구하는 리스트:
    list1 = [1, 2, 3]
    list2 = [4, 5, 6]
    products = [a * b for a in list1 for b in list2]
    print(products)  # 출력: [4, 5, 6, 8, 10, 12, 12, 15, 18]

     

    복잡한 예제

    문자열 리스트에서 문자열의 길이를 구하는 리스트를 생성:

    words = ["hello", "world", "python", "list", "comprehension"]
    lengths = [len(word) for word in words]
    print(lengths)  # 출력: [5, 5, 6, 4, 13]

     

    리스트 내포를 사용하여 1부터 10까지의 제곱수를 가지는 리스트를 생성:

    squares = [x**2 for x in range(1, 11)]
    print(squares)  # 출력: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

     

    리스트 내포를 사용하여 주어진 리스트에서 특정 조건을 만족하는 요소를 변환하여 새 리스트를 생성:

    # 원본 리스트
    original = ["apple", "banana", "cherry", "date"]
    
    # 'a'를 포함하는 단어를 대문자로 변환
    filtered = [fruit.upper() for fruit in original if 'a' in fruit]
    print(filtered)  # 출력: ['APPLE', 'BANANA', 'DATE']

     

    리스트 내포를 사용하여 중첩 리스트의 요소를 평탄화(flatten)하기:

    matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    flattened = [num for row in matrix for num in row]
    print(flattened)  # 출력: [1, 2, 3, 4, 5, 6, 7, 8, 9]

     

    리스트 내포의 장점

    • 간결함: 코드를 더 짧고 읽기 쉽게 만듭니다.
    • 성능: 일반적으로 for 루프보다 더 빠릅니다.
    • 유연성: 조건문과 중첩 루프를 쉽게 사용할 수 있습니다.

    리스트 내포의 주의사항

    • 가독성: 너무 복잡한 리스트 내포는 가독성을 떨어뜨릴 수 있습니다. 간단한 경우에 사용하는 것이 좋습니다.
    • 성능: 매우 큰 리스트를 생성하는 경우 메모리 사용량에 주의해야 합니다.
    728x90
Designed by Tistory.