파이썬에서 리스트 컴프리헨션을 사용하면 간단하게 리스트를 생성할 수 있습니다.
- 리스트 컴프리헨션은 사용하면 보다 빠르고 간결한 코드로 리스트를 생성할 수 있습니다.
- 리스트 컴프리헨션으로 새로운 리스트를 만들거나 기존의 리스트를 활용(필터링, 연산 등)할 수 있습니다.
- 그러나 리스트 컴프리헨션이 지나치게 길어질 경우 가독성이 떨어집니다.
리스트 컴프리헨션 사용 방법
리스트 컴프리헨션의 기본 문법은 다음과 같습니다.
[expression for item in list]
짝수들을 담은 리스트를 리스트 컴프리헨션으로 만드는 방법은 다음과 같습니다.
even_numbers = [i * 2 for i in range(1, 10)]
print(even_numbers)
# [2, 4, 6, 8, 10, 12, 14, 16, 18]
이처럼 리스트 컴프리헨션을 사용하면, 단 한 줄에서 리스트 선언과 동시에 생성을 마칠 수 있습니다.
보통의 방법으로 동일한 리스트를 만들려면, 다음과 같이 몇 줄의 코드를 작성해야 했을 것입니다.
even_numbers = []
for i in range(1,10):
even_numbers.append(i * 2)
print(even_numbers)
# [2, 4, 6, 8, 10, 12, 14, 16, 18]
이처럼 리스트 컴프리헨션은 한 줄의 코드로 간단히 리스트를 생성하고 값을 할당하는 데 사용할 수 있습니다.
리스트 컴프리헨션의 활용
리스트 컴프리헨션에서는 for
반복문 뿐만 아니라 if
조건문도 사용할 수 있습니다. 앞의 코드를 재사용하여, 이번에는 4의 배수만 리스트에 담아보도록 하겠습니다.
multiple_of_four = [i * 2 for i in range(1, 10) if i * 2 % 4 == 0]
print(multiple_of_four)
# [4, 8, 12, 16]
이는 다음과 같이 기존의 리스트를 필터링하는 방식으로도 활용할 수 있습니다.
even_numbers = [i * 2 for i in range(1, 10)]
multiple_of_four = [i for i in even_numbers if i % 4 == 0]
print(multiple_of_four)
# [4, 8, 12, 16]
if
문을 한 번 더 사용할 수도 있습니다. 4의 배수이며 동시에 8의 배수인 숫자들만을 추가해보겠습니다.
multiple_of_four_eight = [i * 2 for i in range(1, 10) if i * 2 % 4 == 0 if i * 2 % 8 == 0]
print(multiple_of_four_eight)
# [8, 16]
여기서 파이썬의 기본 문법과의 차이점은 and
를 사용하지 않고, if
문을 차례로 나열한다는 점입니다. 리스트 컴프리헨션에서는 and
를 직접적으로 사용할 수 없으며, or
에 해당하는 조건문도 사용할 수 없습니다. 또한 조건문이 늘어날 경우, 한 줄에서 모든 코드가 작성되기는 하지만 가독성은 많이 떨어지게 됩니다.
리스트 컴프리헨션에서 if
문과 else
를 사용하여 기존의 배열을 순회하고 새로운 결과를 담은 리스트를 생성할 수도 있습니다. 이 때는 조건문을 for
구문 앞에서 먼저 선언해줘야 문법 오류가 발생하지 않습니다.
numbers = [i for i in range(1, 10)]
result = ["Even" if i % 2 == 0 else "Odd" for i in numbers]
print(result)
# ['Odd', 'Even', 'Odd', 'Even', 'Odd', 'Even', 'Odd', 'Even', 'Odd']
'Python' 카테고리의 다른 글
파이썬 정규 표현식 치트 시트 (0) | 2022.03.05 |
---|---|
파이썬 문자열 포매팅 방법 (0) | 2022.01.30 |
파이썬 클래스와 self 설명 (0) | 2022.01.21 |
파이썬 패키지 정리 (0) | 2022.01.12 |
파이썬 모듈 사용 방법 정리 (0) | 2022.01.12 |