이전에 봤었던 한줄로 여러 조건을 사용해서 객체를 만드는 것의 정체였다.
Comprehension
- 컴프리헨션이라고 표현한다.
- <표현식> + <for> + <원소> + <반복 가능한 객체>
- <표현식> + <for> + <원소> + <반복 가능한 객체> + <조건식>
# Comprehension 예제
example_list = [ i for i in range(1,15)]
print(example_list)
################################################
# 실행 결과
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
- 세트, 리스트, 딕셔너리를 생성할 때 조건으로 사용할 수 있다.
- 어떤 자료를 사용하여 새로운 기준을 가진 데이터 모음을 만들 때 특히 유용하다.
- 절대로 만능이 아니다! 장단점을 확실하게 알고 사용하자.
- 장점
- 간단하게 표현된 컴프리헨션은 다른 방법들에 비해서 쉽고 간단하게 사용할 수 있다.
- 전통적인 반복문이나 map(), filter(), lambda()를 사용하지 않아도 간결하게 컨테이너 유형 및 반복자를 생성할 수 있다.
- 단점
- 복잡한 컴프리헨션은 해당 코드를 이해하기 어렵게한다.
- 장점
전통적인 방법과 Comprehension의 비교
# 같은 작동을 하는 코드의 두가지 형태
odd_numbers = [ ]
for element in range(1,11):
if (element % 2) == 1:
odd_numbers.append(element)
#######################################
list_comprehension = [ element for element in range(1,11) if (element % 2) == 1 ]
#######################################
- 위에서 볼 수 있듯이 더 깔끔한 코드를 만들 수 있으나 너무 길고 복잡해지지 않게 조절해야 한다.
Assignment
#Comprehension.py
# Assignment 1 list
cities = ["Tokyo", "Shanghai", "Jakarta", "Seoul", "Guangzhou", "Beijing", "Karachi", "Shenzhen", "Delhi"]
# Assignment 2 dictionary
population_of_city = [("Tokyo", 36923000), ("Shanghai", 34000000), ("Jakarta", 30000000), ("Seoul", 25514000), ("Guangzhou", 25000000), ("Beijing", 24900000), ("Karachi", 24300000), ("Shenzhen", 23300000), ("Delhi", 21753486)]
# Asignment 1 - list : S자로 시작하지 않는 도시의 리스트 생성
after_cities = [ index for index in cities if index.find('S') != 0]
# Asignment 2 - dictionary : 도시 이름을 키로, 인구수를 값으로 하는 딕셔너리 생성
population_check = {city : pop for city, pop in population_of_city}
#################################################################################
#실행 결과
['Tokyo', 'Jakarta', 'Guangzhou', 'Beijing', 'Karachi', 'Delhi']
{'Tokyo': 36923000, 'Shanghai': 34000000, 'Jakarta': 30000000, 'Seoul': 25514000, 'Guangzhou': 25000000, 'Beijing': 24900000, 'Karachi': 24300000, 'Shenzhen': 23300000, 'Delhi': 21753486}
관련 참고 페이지 - https://google.github.io/styleguide/pyguide#273-cons
'wecode > TIL 정리' 카테고리의 다른 글
위코드 Pre Course - 파이썬의 Generator (0) | 2020.07.24 |
---|---|
위코드 Pre Course - 파이썬의 Iterator (0) | 2020.07.24 |
위코드 Pre Course - 절대경로와 상대경로 (2) (0) | 2020.07.22 |
위코드 Pre Course - 절대경로와 상대경로 (1) (0) | 2020.07.22 |
위코드 Pre Course - Python 1 (0) | 2020.07.21 |