Python에서 목록 이해를 사용하는 방법

Python에서 목록 이해를 사용하는 방법을 알아보세요. 간결한 루프를 작성하고, 조건부 필터를 적용하고, 깔끔한 시각적 구문으로 행렬을 구축하세요.

Editor에서 이 솔루션을 사용해 보세요.

개요

목록 이해는 Python의 가장 인기 있고 상징적인 기능 중 하나입니다. 기존 반복 가능 항목(예: 목록, 범위 또는 튜플)에서 새 목록을 생성하기 위해 간결하고 표현력이 풍부하며 읽기 쉬운 구문을 제공합니다. 여러 줄의 'for' 루프와 목록 초기화 문을 한 줄의 코드로 바꿀 수 있습니다.

목록 이해의 기본 구문은 '[반복 가능한 항목에 대한 표현식]'입니다. 내부적으로 이 구문은 Python 구현에서 고도로 최적화되어 `.append()`를 사용하여 항목을 추가하는 표준 `for` 루프보다 빠르게 실행됩니다. 수학적 변환을 적용하거나 요소를 수정하는 데 이상적입니다.

리스트 컴프리헨션은 `if` 절을 사용한 조건부 필터링도 지원하므로 요소를 선택적으로 포함할 수 있습니다(예: `[x for x in data if x % 2 == 0]`). 목록 내포는 믿을 수 없을 정도로 강력하지만 주의 깊게 사용해야 합니다. 내포가 매우 복잡하거나 중첩된 경우 가독성을 유지하기 위해 표준 루프를 작성하는 것이 좋습니다.

코드 및 실행 출력

이 스크립트는 기본 목록 이해, 조건 필터링 및 문자열 값 변환을 보여줍니다.

# 1. Traditional for-loop way to build a list
squares_loop = []
for x in range(1, 6):
    squares_loop.append(x**2)
print("Loop squares:", squares_loop)

# 2. List comprehension way (same outcome)
squares_comp = [x**2 for x in range(1, 6)]
print("Comp squares:", squares_comp)

# 3. Filtering elements with an 'if' clause (even numbers only)
evens = [n for n in range(1, 11) if n % 2 == 0]
print("Even numbers:", evens)

# 4. String modifications using comprehensions
names = ["alice", "bob", "charlie"]
caps = [name.capitalize() for name in names]
print("Capitalized:", caps)
터미널 출력
Loop squares: [1, 4, 9, 16, 25]
Comp squares: [1, 4, 9, 16, 25]
Even numbers: [2, 4, 6, 8, 10]
Capitalized: ['Alice', 'Bob', 'Charlie']

단계별 구현

  • 목록에서 캡처하려는 루프 본문과 표현식을 식별합니다.
  • 이해력을 [iterable의 항목에 대한 표현식]으로 구조화합니다.
  • 요소를 동적으로 필터링하려면 끝에 선택적 if 조건을 추가하세요.

자주 묻는 질문

목록 이해 내에서 if-else 문을 사용할 수 있나요?

예! for 루프 앞에 if-else 절을 ​​배치합니다: [x if x > 0 else 0 for x in data].

목록 이해와 생성기 표현식의 차이점은 무엇입니까?

목록 이해는 대괄호를 사용하고 전체 목록을 즉시 반환합니다. 생성기 표현식은 괄호를 사용하고 지연 생성기 개체를 반환하여 대규모 데이터 세트에 대한 메모리를 절약합니다.

관련 주제

권장 Python 리소스

관련 대화형 튜토리얼, 치트 시트, 코드 비교를 통해 지식을 확장하세요.