"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Python의 목록 이해 이해

Python의 목록 이해 이해

2024-08-27에 게시됨
검색:635

Understanding List Comprehensions in Python

목록 이해는 Python에서 목록을 만드는 강력하고 효율적인 방법입니다.

기존 반복 가능 항목을 기반으로 목록을 생성하는 간결하고 읽기 쉬운 방법을 제공합니다.

이 기사에서는 목록 이해의 미묘한 차이, 기존 루프에 비해 이점 및 다양한 실제 응용 프로그램을 살펴보겠습니다.


목록 이해란 무엇입니까?

리스트 컴프리헨션(List comprehension)은 반복과 조건부 논리를 한 줄의 코드로 결합하여 목록을 생성하는 구문론적으로 간결한 방법입니다.

이렇게 하면 목록을 생성하는 방식이 더 읽기 쉽고 표현력이 좋아져 코드의 의도를 한눈에 더 쉽게 이해할 수 있습니다.


구조 및 예

리스트 컴프리헨션의 기본 구조는 다음과 같습니다.

[expression for item in iterable if condition]

이 구조의 구성 요소를 분석해 보겠습니다.

  • 표현식: 각 반복마다 새 목록에 추가될 값입니다.
  • for item in iterable: 이는 iterable의 각 항목(예: 목록, 튜플, 집합, 사전 또는 생성기)을 반복하는 반복 구성입니다.
  • if 조건: 새 목록에 포함될 항목을 필터링하는 선택적 조건문입니다.

예:

기본 목록 이해:

numbers = [1, 2, 3, 4, 5]
squares = [x**2 for x in numbers]
print(squares)  

# Output: [1, 4, 9, 16, 25]

이 예에서는 목록 이해를 사용하여 기존 숫자 목록에서 새 사각형 목록을 만듭니다.

조건이 있는 목록 이해:

numbers = [1, 2, 3, 4, 5]
even_squares = [x**2 for x in numbers if x % 2 == 0]
print(even_squares)  

# Output: [4, 16]

이 예에서는 짝수만 포함하도록 숫자를 필터링한 다음 제곱하여 목록 이해에서 if 조건을 사용하는 방법을 보여줍니다.


기존 루프에 비해 목록 이해의 이점

목록 이해는 기존 루프에 비해 여러 가지 장점을 제공합니다.

  • 간결함: 목록 이해는 기존 루프보다 더 간결하고 읽기 쉬우므로 코드를 더 유지 관리하기 쉽고 이해하기 쉽습니다.
  • 성능: 목록 이해는 목록 생성에 최적화되어 있기 때문에 기존 루프보다 빠른 경우가 많습니다.
  • 가독성: 목록 이해의 의도는 기존 루프의 의도보다 명확하므로 다른 사람이 코드를 더 쉽게 이해할 수 있습니다.

실제 응용

목록 이해는 데이터를 조작하고 처리하는 데 다양한 방법으로 사용될 수 있습니다.

다음은 몇 가지 일반적인 사용 사례입니다.
목록 필터링:

words = ["apple", "banana", "cherry", "date"]
short_words = [word for word in words if len(word) 



이 예에서는 5자 이하의 단어만 포함하도록 단어 목록을 필터링합니다.

목록 변환:

temperatures_celsius = [0, 20, 30, 40]
temperatures_fahrenheit = [(temp * 9/5)   32 for temp in temperatures_celsius]
print(temperatures_fahrenheit)  

# Output: [32.0, 68.0, 86.0, 104.0]

이 예에서는 온도 목록을 섭씨에서 화씨로 변환합니다.

중첩된 목록 이해:

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

# Output: [1, 2, 3, 4, 5, 6, 7, 8, 9]

이 예는 중첩된 목록 이해를 사용하여 2D 목록(행렬)을 1D 목록으로 평면화합니다.

튜플 목록 생성:

pairs = [(x, y) for x in range(3) for y in range(3)]
print(pairs) 

# Output: [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

이 예에서는 두 범위에서 가능한 모든 숫자 쌍(튜플) 목록을 생성합니다.

중복 제거:

list_with_duplicates = [1, 2, 2, 3, 4, 4, 5]
unique_list = list(set([x for x in list_with_duplicates]))
print(unique_list)  

# Output: [1, 2, 3, 4, 5]

이 예에서는 목록을 집합으로 변환한 후 다시 목록으로 변환하여 목록에서 중복 항목을 제거합니다.


더 많은 고급 주제

이제 목록 이해 변형에 관한 좀 더 고급 주제를 살펴보겠습니다.

생성기 표현식
생성기 표현식은 목록 이해와 유사하지만 목록 대신 반복 가능 항목을 생성합니다.

항목이 메모리에 한꺼번에 저장되지 않고 즉시 생성되므로 대규모 데이터세트로 작업할 때 메모리 효율성이 더 높아질 수 있습니다.

numbers = [1, 2, 3, 4, 5]
squares_generator = (x**2 for x in numbers)

for square in squares_generator:
    print(square)

# Output
# 1
# 4
# 9
# 16
# 25

사전 및 집합 이해
Python은 또한 사전 및 집합 이해를 지원하므로 목록 이해와 유사하게 사전 및 집합을 간결한 방식으로 만들 수 있습니다.

# Dictionary comprehension
numbers = [1, 2, 3, 4, 5]
squares_dict = {x: x**2 for x in numbers}
print(squares_dict)  

# Output: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}



# Set comprehension
list_with_duplicates = [1, 2, 2, 3, 4, 4, 5]
unique_set = {x for x in list_with_duplicates}
print(unique_set)  

# Output: {1, 2, 3, 4, 5}


결론

리스트 컴프리헨션(List comprehension)은 간결하고 읽기 쉬운 방식으로 목록을 생성할 수 있게 해주는 Python의 강력하고 다재다능한 도구입니다.

코드를 단순화하고, 성능을 향상시키며, 데이터를 더 쉽게 조작하고 처리할 수 있습니다.

목록 이해와 고급 기능을 마스터하면 더 효율적이고 깔끔한 Python 코드를 작성할 수 있습니다.

릴리스 선언문 이 글은 https://dev.to/devasservice/understanding-list-comprehensions-in-python-1b2p?1에서 복제됩니다.1 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3