코테 풀고나서 다른사람 풀이 보면 난 10줄로 풀었는데 한줄로 푸시는 분들이 꽤 있죠?
볼때마다 오.... 어떻게 저렇게 하지 싶지만 보통 리스트컴프리헨션 을 사용해서 짧게 만드시더라구요!
리스트 컴프리헨션은 파이썬에서 간결하고 효율적으로 리스트를 생성하는 방법으로, 반복문과 조건문을 한 줄로 표현할 수 있어 매우 유용합니다. 예제를 통해 자세히 살펴보도록 하겠습니다.
리스트 컴프리헨션의 기본 문법은 다음과 같습니다:
new_list = [expression for item in iterable if condition]
일반적인 방법
squares = []
for i in range(1, 11):
squares.append(i**2)
print(squares) # 출력: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
리스트 컴프리헨션 사용
squares_comp = [i**2 for i in range(1, 11)]
print(squares_comp) # 출력: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
일반적인 방법
odd_numbers = []
for i in range(1, 11):
if i % 2 == 1:
odd_numbers.append(i)
print(odd_numbers) # 출력: [1, 3, 5, 7, 9]
리스트 컴프리헨션 사용
odd_numbers_comp = [i for i in range(1, 11) if i % 2 == 1]
print(odd_numbers_comp) # 출력: [1, 3, 5, 7, 9]
리스트 컴프리헨션은 중첩하여 사용할 수도 있습니다.
이를 통해 2차원 리스트를 생성할 수 있습니다.
일반적인 방법
matrix = []
for i in range(3):
row = []
for j in range(3):
row.append(i * j)
matrix.append(row)
print(matrix)
# 출력: [[0, 0, 0], [0, 1, 2], [0, 2, 4]]
리스트 컴프리헨션 사용
matrix_comp = [[i * j for j in range(3)] for i in range(3)]
print(matrix_comp)
# 출력: [[0, 0, 0], [0, 1, 2], [0, 2, 4]]
리스트 컴프리헨션을 사용하면 코드가 간결해지고 가독성이 높아집니다. 또한, 반복문과 조건문을 한 줄로 표현하기 때문에 코드를 작성하고 디버깅하는 시간을 단축시킬 수 있습니다.
하지만, 지나치게 복잡하게 중첩하여 사용하면 가독성이 떨어질 수 있으므로 적절한 사용법을 숙지하는 것이 중요합니다.