-
[파이썬] 자료구조 Comprehension : 람다형 자료구조 코딩개발지식 아카이브/Python 2019. 9. 22. 19:01
comprehension 란
파이썬에서 iterator 로 매우 간단하게 배열을 만드는 방법이다. 3줄 이상 작성되는 코드를 한 줄로 줄일 수 있다.
리스트를 만드는 법을 소개한 후, 말미에 딕셔너리 작성법도 후술한다.
Syntax # list 작성법
새 리스트 = [ expression(item) for item in list if 조건절 ]
[예시] 리스트 만들기
1) 조건문 만족하는 element 로 리스트 만들기
new_list = [] list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
기존의 list 리스트에서 짝수만 골라내서 새 리스트에 담고 싶다고 가정해보자. 리스트 컴프리핸션을 사용하지 않으면 아래와 같이 3 줄의 코드로 작성된다.
for item in list: if item % 2 == 0: new_list.append(item)
하지만 리스트 컴프리핸션을 사용하면 한 줄로 리스트가 완성된다.
new_list = [i for i in list if i % 2 == 0]
출력 결과:
2) 조건문 만족하는 element 의 변형값으로 리스트 만들기
new_list = [] list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
이번에는 짝수만 골라내서, 짝수의 제곱값을 새 리스트에 담고 싶다고 가정해보자.
for item in list: if item % 2 == 0: new_list.append(item ** 2)
리스트 컴프리핸션을 사용하면 한 줄로 리스트가 완성된다.
new_list = [i ** 2 for i in list if i % 2 == 0]
출력 결과:
3) 이중 for 문을 도는 리스트 만들기
new_list = []
아래의 코드는 이중 for 문을 돌린 결과물로 리스트를 만들어낸 코드이다.
for i in [10, 30, 50]: for j in [20, 40, 60]: new_list.append(i + j)
이중 for 문도 리스트 컴프리핸션으로 축약할 수 있다.
new_list = [x + y for x in [10, 30, 50] for y in [20, 40, 60]]
출력 결과:
Syntax # dictionary 작성법
새 딕셔너리 = { expr(key):expr(value) for key, value in dictionary.items() if 조건절 }
[예시] 딕셔너리 만들기
조건문 만족하는 element 로 딕셔너리(map) 만들기
new_dict = {} dictionary = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
기존의 딕셔너리에서 3이상의 key 값을 가지는 pair만 새 딕셔너리에 담으려고 한다. 이 때 기존 코딩법은 아래와 같다.
for key, value in dictionary.items(): if value > 2: new_dict.update({key: value})
컴프리핸션 문법으로 코딩하면 한 줄로 딕셔너리가 완성된다.
new_dict = {key: value for key, value in dictionary.items() if value > 2}
출력 결과:
'개발지식 아카이브 > Python' 카테고리의 다른 글
[파이썬 Collections API] 파이썬3의 자료구조 컨테이너 모듈 (0) 2019.12.02 [파이썬] *args, **kwargs를 이용해 메소드 축약 작성하는 법 (0) 2019.09.24 [파이썬 주식 분석] 매수 적정 PER 구하기 (당기순이익 증감 예상이용) (0) 2019.08.04 [파이썬/Python] mysql connector 라이브러리로 MySql 연동하기 (1) 2019.07.24 [파이썬/Python] 티켓팅 자동화 매크로 개발해보기 (30) 2019.07.01