컴프리헨션(Comprehension)
파이썬에서는 컴프리헨션이라는 문법을 지원한다. 컴프리헨션은 list, dictionary, set을 간단하게 생성 하는 방법이다.
컴프리헨션 방식으로 리스트(list) 데이터 저장하기
### 리스트에 1~10까지의 데이터 저장하기
# for문 방식
numbers=[]
for n in range(1, 11):
numbers.append(n)
# comprehension 방식
numbers=[x for x in range(1,11)]
### 조건걸기 - 1~10까지의 숫자 중 홀수만 저장하기
# for문 방식
odd = []
for n in range(1,11):
if n % 2 == 1:
oddNums.append(n)
# comprehension 방식
oddNums=[x for x in range(1,11,2)]
oddNums=[x for x in range(1,11) if x%2==1]
### comprehension은 조건문 중복표현 가능
colorlist=['black','white']
sizelist=['S','M','L']
dresslist=list((c,s) for c in colorlist for s in sizelist)
# [('black', 'S'), ('black', 'M'), ('black', 'L'), ('white', 'S'), ('white', 'M'), ('white', 'L')]
nums=[n for n in range(1,11) if (n%2==0) or (n%3==0)]
# [2, 3, 4, 6, 8, 9, 10]
컴프리헨션 방식으로 집합(set) 데이터 저장하기
#1~10사이의 짝수의 제곱으로 이루어진 set 객체 생성하기
set1 = {x**2 for x in range(1,11) if x%2==0}
print(set1)
# {64, 100, 4, 36, 16}
컴프리헨션 방식으로 딕셔너리(dictionary) 데이터 저장하기
### 200만원 미만의 제품만 product1 객체에 저장하기
products = {"냉장고":220,"건조기":140,"TV":130,"세탁기":150,"오디오":50,"컴퓨터":250}
product1={p:v for p,v in products.items() if v <200}
print(product1)
# {'건조기': 140, 'TV': 130, '세탁기': 150, '오디오': 50}
### 통과, 불통과
scores = {'철수': 50, '영희': 80, '길동': 90, '순희': 60, '전학생': 100}
grades = {name:'합격' if value > 60 else '불합격' for name, value in scores.items()}
print(grades)
# {'철수': '불합격', '영희': '합격', '길동': '합격', '순희': '불합격', '전학생': '합격'}
컴프리헨션 방식으로 튜플(tuple) 데이터 저장하려고 하면?
nums=( x for x in range(1,11))
print(nums)
# <generator object <genexpr> at 0x0000018369054BA0> 오류발생
'프로그래밍언어 > Python' 카테고리의 다른 글
[Python] 파일 읽고 쓰기 (0) | 2021.12.28 |
---|---|
[Python] 함수 (0) | 2021.12.28 |
[Python] 파이썬 자료형 : 불 (0) | 2021.12.27 |
[Python] 파이썬 자료형 : 집합 (0) | 2021.12.27 |
[Python] 파이썬 자료형 : 딕셔너리 (0) | 2021.12.27 |