List Comprehensions(리스트 컴프리헨션)은 쉽게 말해 ‘리스트를 쉽게, 짧게 한 줄로 만들 수 있는 파이썬의 문법’이다.
이 자습서에서는 기존 목록에서 새 목록을 만들 수 있는 Python 목록 이해에 대해 배웁니다.
1. Python List Comprehensions 소개
프로그래밍에서는 종종 목록의 요소를 변환하고 새 목록을 반환해야 합니다.
예를 들어 다음과 같은 5개의 숫자 목록이 있다고 가정합니다.
numbers = [1, 2, 3, 4, 5]
그리고 이 숫자 목록을 기반으로 제곱 목록을 얻고 싶습니다.
간단한 방법은 for 루프를 사용하는 것입니다.
numbers = [1, 2, 3, 4, 5]
squares = []
for number in numbers:
squares.append(number**2)
print(squares)
이 예에서 for 루프는 숫자 목록의 요소를 반복하고 각 숫자를 제곱한 다음 결과를 제곱 목록에 추가합니다.
제곱수는 숫자 자체를 곱한 값입니다.
예를 들어, 제곱수 2는 2*2 = 4이고, 제곱수 3은 3*3 = 9입니다.
코드를 더 간결하게 만들기 위해 내장된 map() 함수를 람다 식과 함께 사용할 수 있습니다.
numbers = [1, 2, 3, 4, 5]
squares = list(map(lambda number: number**2, numbers))
print(squares)
map() 함수는 반복자를 반환하므로 list() 함수를 사용하여 반복자를 목록으로 변환해야 합니다.
for 루프와 map() 함수는 기존 목록을 기반으로 새 목록을 만드는 데 도움이 될 수 있습니다. 하지만 코드가 정말 간결하고 아름답지는 않습니다.
기존 목록의 요소 변환을 기반으로 목록을 만드는 데 도움이 되도록 Python은 목록 내포라는 기능을 제공합니다.
다음은 목록 내포를 사용하여 숫자 목록에서 사각형 목록을 만드는 방법을 보여줍니다.
numbers = [1, 2, 3, 4, 5]
squares = [number**2 for number in numbers]
print(squares)
다음은 목록 이해 부분입니다.
squares = [number**2 for number in numbers]
목록 이해는 다음 부분으로 구성됩니다.
- 입력 목록(숫자)
- 목록의 요소를 나타내는 변수(숫자)
- 입력 목록의 요소에서 출력 목록의 요소를 반환하는 출력 식(숫자**2)입니다.
다음은 Python 목록 이해의 기본 구문을 보여줍니다.
[output_expression for element in list]
다음과 동일합니다.
output_list = []
for element in list:
output_list.append(output_expression)
2. if 조건을 사용한 Python List Comprehensions
다음은 지구상에서 가장 높은 5개의 산 목록을 보여줍니다.
mountains = [
['Makalu', 8485],
['Lhotse', 8516],
['Kanchendzonga', 8586],
['K2', 8611],
['Everest', 8848]
]
높이가 8600미터보다 큰 산 목록을 얻으려면 다음과 같은 람다 식과 함께 for 루프 또는 filter() 함수를 사용할 수 있습니다.
mountains = [
['Makalu', 8485],
['Lhotse', 8516],
['Kanchendzonga', 8586],
['K2', 8611],
['Everest', 8848]
]
highest_mountains = list(filter(lambda m: m[1] > 8600, mountains))
print(highest_mountains)
Output:
[['K2', 8611], ['Everest', 8848]]
map() 함수와 마찬가지로 filter() 함수는 반복자를 반환합니다. 따라서 반복자를 목록으로 변환하려면 list() 함수를 사용해야 합니다.
Python List comprehension은 새 목록에 포함할 목록 요소에 대한 조건을 지정할 수 있는 선택적 술어를 제공합니다.
[output_expression for element in list if condition]
이 목록 이해를 통해 filter()를 람다 식으로 바꿀 수 있습니다.
mountains = [
['Makalu', 8485],
['Lhotse', 8516],
['Kanchendzonga', 8586],
['K2', 8611],
['Everest', 8848]
]
highest_mountains = [m for m in mountains if m[1] > 8600]
print(highest_mountains)
Output:
[['K2', 8611], ['Everest', 8848]]
3. Summary
- Python list comprehension을 사용하면 기존 목록에서 새 목록을 만들 수 있습니다.
- map() 또는 filter() 대신 list comprehension을 사용하여 코드를 더 간결하고 읽기 쉽게 만드세요.
refreance: https://www.pythontutorial.net/python-basics/python-list-comprehensions/
'Programing > Python' 카테고리의 다른 글
Python Dictionary Comprehension 사용 방법 (0) | 2023.03.10 |
---|---|
Python Dictionary 사용방법? (0) | 2023.03.09 |
Python Reduce() 사용 방법? (0) | 2023.03.08 |
Python에서 List 요소를 Filter(필터링) 하는 방법? (0) | 2023.03.08 |
Python map() 함수 사용하여 List 요소를 변경하는 방법? (0) | 2023.03.08 |
댓글