[파이썬] 리스트컴프리헨션?? 이거 모르면 파이썬 초보. (1/3) 기초편
안녕하세요! 오늘은 파이썬의 강력한 기능 중 하나인 리스트 컴프리헨션에 대해 알아보려고 합니다. 이 기능을 잘 사용하면 대여섯 줄 이상의 코드도 한줄로 간결하게 구현해 낼 수가 있는 강력한 기능이죠. 이 글을 통해 파이썬 리스트 컴프리헨션을 완벽히 이해하고, 코드를 더욱 효율적으로 작성할 수 있는 중급자로 성장해보세요!
리스트 컴프리헨션 기본 구조
리스트 컴프리헨션은 간단한 구조로 리스트를 생성하는 방법입니다. 기본 구조는 다음과 같습니다.
[expression for item in iterable if condition]
"조건 혹은 반복문에 의해 생성될 item들에 대해, 다음과 같이 표현하라."를 영어식으로 뒤에서부터 적는다고 생각하면 이해가 쉽습니다.
예를 들어, 0부터 9까지의 숫자들의 제곱을 원소로 하는 리스트를 생성해보겠습니다.
리스트 컴프리헨션을 안쓴 기본 코드를 구현해보죠.
squares = []
for x in range(10):
squares.append(x**2)
print(squares)
이번에는 리스트컴프리헨션으로 표현해 보겠습니다.
위에서 말한 기본 구조 처럼 말로 표현해보면,
"0부터 10 사이의 숫자인 x를 x의 제곱으로 표현해 리스트에 넣어라"
squares = [x**2 for x in range(10)]
print(squares)
결과는 아래와 같이 나오게됩니다.
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
조건문을 사용한 리스트 컴프리헨션
리스트 컴프리헨션에 if 조건문을 추가하여, 특정 조건을 만족하는 원소만 포함하는 리스트를 생성할 수 있습니다. 예를 들어, 짝수만을 원소로 하는 리스트를 만들어 보겠습니다.
even_numbers = [x for x in range(10) if x % 2 == 0]
print(even_numbers)
0에서 10 사이의 x 중 만약 x / 2의 나머지가 0인 경우 x를 리스트에 넣어라!
[0, 2, 4, 6, 8]
if-else 문도 사용할 수 있습니다. 예를 들어, 짝수는 그대로, 홀수는 -1로 변환한 리스트를 생성해 보겠습니다.
even_odd = [x if x % 2 == 0 else -1 for x in range(10)]
print(even_odd)
[0, -1, 2, -1, 4, -1, 6, -1, 8, -1]
중첩된 리스트 컴프리헨션
리스트 컴프리헨션은 중첩될 수 있습니다. 예를 들어, 1단 부터 9단까지의 구구단 결과를 원소로 하는 리스트를 생성해 보겠습니다.
multiplication_table = [x * y for x in range(1, 10) for y in range(1, 10)]
print(multiplication_table)
결과는 이렇게 나올 것입니다.
[1, 2, 3, 4, 5, 6, 7, 8, 9,
2, 4, 6, 8, 10, 12, 14, 16, 18,
3, 6, 9, 12, 15, 18, 21, 24, 27,
4, 8, 12, 16, 20, 24, 28, 32, 36,
5, 10, 15, 20, 25, 30, 35, 40, 45,
6, 12, 18, 24, 30, 36, 42, 48, 54,
7, 14, 21, 28, 35, 42, 49, 56, 63,
8, 16, 24, 32, 40, 48, 56, 64, 72,
9, 18, 27, 36, 45, 54, 63, 72, 81]
이처럼 중첩된 리스트 컴프리헨션을 활용하면 복잡한 연산도 간결한 코드로 표현할 수 있습니다.
이 글에서는 파이썬의 리스트 컴프리헨션에 대해 알아보았습니다. 기본 구조부터 조건문과 중첩된 리스트 컴프리헨션까지 다양한 예제를 통해 이해할 수 있었습니다. 이 기능을 활용하면 코드를 더 간결하고 명료하게 작성할 수 있으므로, 앞으로의 파이썬 코딩에 큰 도움이 될 것입니다.
이 글을 통해 파이썬 리스트 컴프리헨션의 기초에 대해 완벽히 이해했다면, 다음 글로 넘어가 실전 활용에 대해 알아봅시다!!
그리고 람다 함수와 같은 다른 중요한 개념들을 살펴보며 더욱 실력을 향상시켜 보세요!
항상 꾸준한 연습이 중요하다는 것을 잊지 마세요. 파이팅!