재원's 블로그

list comprehension 본문

Python

list comprehension

KimJ.W 2023. 1. 20. 19:32

최초 작성일 : 2021-11-10
categories: Python


-Comprehension이란
iterable한 오브젝트를 생성하기 위한 방법중 하나로 파이썬에서 사용할 수 있는 유용한 기능중 하나이다.
파이썬에는 다음과 같은 크게 네 가지 종류의 Comprehension이 있다.

-List Comprehension (LC)
-Set Comprehension (SC)
-Dict Comprehension (DC)
-Generator Expression (GE)

Generator의 경우 comprehension과 형태는 동일하지만 특별히 expression이라고 부른다.

그럼 이제 각각의 경우에 대해 간단히 살펴보자.

<for문을 활용한 list comprehension>
List Comprehension은 리스트 안에서 for 문과 if 문을 이용하여 보다 편리하게 리스트를 작성하고 처리할 수 있게 해줄 수 있다.
List Comprehension의 기본 구조는 다음과 같다.

list comprehension structure 1List Comprehension1List Comprehension2List Comprehension3

<단일 if 문을 포함한 List Comprehension>

if 문은 for 문 뒤에 나오면 된다. 만약 range(5)에서 짝수만 리스트로 작성하려면 아래와 같이 하면 된다.

List Comprehension4List Comprehension5

[i for i in range(5)]의 결과가 [0,1,2,3,4]인데 이 중 if i%2 == 0 조건이 추가된다면,

이는 2로 나눈 나머지가 0이면 해당 i를 리스트에 생성하라는 의미이므로 [0,2,4]만 리스트에 나타나게 되는 것이다.

마찬가지로, [i for i in range(5)]의 결과가 [0,1,2,3,4]인데 이 중 if i%2 == 1 조건이 추가된다면,

이는 2로 나눈 나머지가 1이면 해당 i를 리스트에 생성하라는 의미이므로 [1,3]만 리스트에 나타나게 되는 것이다.

<if와 else문을 포함한 List Comprehension>

if 문에 else를 추가하여 리스트를 생성할 수 있다. 만약에 [0,1,2,3,4] 중 짝수는 모두 리스트에 포함시키고 홀수일 경우에는 None을 리스트에 포함시키려고 한다면 아래와 같이 하면 된다.

list comprehension structure 2

else가 추가되는 경우에는 if~else문이 i와 for 사이에 위치하여야 한다는 점에 유의하기 바란다.

List Comprehension6

<중첩 for문을 포함한 List Comprehension>

for 문을 중첩하여 List Comprehension을 만들 수 있다. '1 - 5' 사이의 숫자에 각각 '7 - 9' 숫자를 곱한 결과를 리스트에 나타내고 싶다면 아래와 같이 하면 된다.

List Comprehension7

for 문 뒤에 for 문을 계속 쓰는 경우 앞의 for 문의 원소에 대해서 그 다음 for 문의 원소를 순차적으로 적용한 결과가
리스트에 나타나게 된다. 상기 사례를 도식화해서 나타내면 아래와 같다.

list comprehension structure 3

[ ( 변수를 활용한 값 ) for ( 사용할 변수 이름 ) in ( 순회할 수 있는 값 )] --> 이런 식으로 조건식을 매우 간단하게 표현할 수 있는 것이 'List Comprehension'이다.

'Python' 카테고리의 다른 글

python_step02,03,04  (0) 2023.01.23
class  (2) 2023.01.21
matplotlib,seaborn 시각화 들어가기  (0) 2023.01.20
파이썬 기초문법  (0) 2023.01.20
Python Virtual Environments(파이썬 가상환경)  (0) 2023.01.20