Programming/Python

[Python] 파이썬 Comprehension 에 대해서 알아보자.

빙기때침식곡 2021. 10. 18. 21:58
반응형

이미지 출처 www.python.org

 

 

오늘은 파이썬 Comprehension 에 대해서 알아보는 시간을 갖도록 하겠다.

 

Comprehension의 개념을 알면 List, Set, Dictionary에서 보다 간결하게 데이터를 가져올 수 있다.

 

 

(1) 정의

 - 다른 Sequence로 부터 새로운 Sequence (Iterable Object)를 만들 수 있는 기능.

 - 단, if 조건식에서 다중 조건은 and만 가능하다. (or은 불가)

 

 

(2) 종류

 ① List Comprehension

  - List Comprehension은 입력 Sequence로부터 지정된 표현식에 따라 새로운 리스트 컬렉션을 빌드하는것이다.

  - [if 조건식] 에서 [ ] 은 리스트 괄호가 아니라, 옵션의 뜻을 나타낸다. 즉, 조건이 있을때만 넣으면 된다.

[ 출력표현식 for 요소 in 입력Sequence [if 조건식] ]

 

예제 1

# 5보다 작은 수를 가져오기
a = [1, 2, 3, 4, 5, 6,  7]

b = [ i for i in a if i < 5]

print(b)

Result

[1, 2, 3, 4]

 

예시 2

# 5보다 작은 수를 가져오는데 가져온 값에 2를 곱하기
a = [1, 2, 3, 4, 5, 6,  7]

b = [ i * 2 for i in a if i < 5]

print(b)

Result

[2, 4, 6, 8]

 

예제 3

# 타입이 다른 리스트에서 int타입만 가져오기
data = [4, True, 'son', 2.1, 3]

init_data = [num for num in data if type(num)==int]

Result

[4, 3]

 

 

 

 

 ② Set Comprehension

  - 입력 Sequence로부터 조건에 맞는 새로운 Set 컬렉션을 리턴한다.

  - [if 조건식] 에서 [ ] 은 리스트 괄호가 아니라, 옵션이라는 뜻을 나타낸다. 즉 조건이 있을때만 넣으면 된다.

{ 출력표현식 for 요서 in 입력Sequence [if 조건식] }

 

예제 1

# 5보다 작은 수 리턴
a = [1, 2, 3, 4, 5, 6, 7]

b = {i for i in a if i < 5}

print(b)

Result

{1, 2, 3, 4}

 

 

 

 

 ③ Dictionary Comprehension 

  - 입력 Sequence로부터 조건에 맞는 새로운 Set 컬렉션을 리턴한다.

  - [if 조건식] 에서 [ ] 은 리스트 괄호가 아니라, 옵션이라는 뜻을 나타낸다. 즉 조건이 있을때만 넣으면 된다.

{ Key:Value for 요소 in 입력Sequence [if 조건식] }

 

예제 1

# 딕셔너리 전체 리턴
a = {1 : "JiSung", 2 : "HeongMin", 3 : "BeomGun"}

name = {key:val for key, val in a.items()}

print(name)

Result

{1: 'JiSung', 2: 'HeongMin', 3: 'BeomGun'}

 

예제 2

# 딕셔너리 key val 바꿔서 리턴
a = {1 : "JiSung", 2 : "HeongMin", 3 : "BeomGun"}

name = {key:val for val, key in a.items()}

print(name)

Result

{'JiSung': 1, 'HeongMin': 2, 'BeomGun': 3}

 

예제 3

# key만 리턴
a = {1 : "JiSung", 2 : "HeongMin", 3 : "BeomGun"}

name = {key for key, val in a.items()}

print(name)

Result

{1, 2, 3}

 

예제 4

# key가 3보다 작은 항목 리턴
a = {1 : "JiSung", 2 : "HeongMin", 3 : "BeomGun"}

name = {key:val for key, val in a.items() if key < 3}

print(name)

Result

{1: 'JiSung', 2: 'HeongMin'}

 

 

 

References

 

파이썬 특수 문법(데코레이터, 이터레이터등): 파이썬 Comprehension - 잔재미코딩

초간단 연습1 1. List comprehension을 사용해서 1~100까지의 숫자 출력하기 2. List comprehension을 사용해서 1~100까지의 숫자 중 3으로 나누어 떨어지는 수만 출력하기 3. List comprehension을 사용해서 1~100까지

www.fun-coding.org

반응형