Today I Learn (TIL)
#18 Python list comprehension, dictionary comprehension
이웃집 친구
2020. 6. 29. 11:58
반응형
List comprehension은 for 반복문을 활용하여 list를 짧고, 빠르게 만들 수 있는 comprehension이다.
[ 표현식 for 원소 in 반복 가능한 객체 ]
[ 표현식 for 원소 in 반복 가능한 객체 if문 ]
cities = ["Tokyo","Shanghai","Jakarta","Seoul","Guangzhou","Beijing","Karachi","Shenzhen","Delhi"]
# 일반적인 for loop
new_cities = []
for i in cities:
if "S" not in i:
new_cities.append(i)
print(new_cities)
# list comprehension
n_l = [x for x in cities if "S" not in x]
print(n_l)
위에서 알 수 있듯이, 새로운 리스트를 만들고 for loop을 이용하여 S가 들어있지 않는 도시를 new_cities리스트에 넣는 방식을 똑같은 결과 값을 list comprehension을 이용하면 1줄에 가능하다.
Dictionary comprehension
[ 표현식 for 원소 in 반복 가능한 객체 ]
여기서 <표현식> 부분에 dictionary 형태의 'key: value'를 입력하면 dictionary comprehension을 표현할 수 있다.
역시나 짧고, 빠른 구동 시간으로 말이다.
#dictionary comprehension
population_of_city = [('Tokyo', 36923000), ('Shanghai', 34000000),
('Jakarta', 30000000), ('Seoul', 25514000),
('Guangzhou', 25000000), ('Beijing', 24900000),
('Karachi', 24300000 ), ( 'Shenzhen', 23300000),
('Delhi', 21753486) ]
dict1 = {t[1]: t[0] for t in population_of_city}
print(dict1)
:출력
{36923000: 'Tokyo', 34000000: 'Shanghai', 30000000: 'Jakarta',
25514000: 'Seoul', 25000000: 'Guangzhou', 24900000: 'Beijing',
24300000: 'Karachi', 23300000: 'Shenzhen', 21753486: 'Delhi'}
key값으론 인구수, value값으로 도시명이 들어가있는 dictionary가 만들어졌다.
population_of_city는 튜플로 이루어져 있는 리스트이기 때문에, 튜플에 접근하고 활용하기 위하여
t [1]: t [0]으로 표현하였다.