(Python) list comprehension

brian·2022년 5월 2일
0

list comprehension
: 새로운 리스트를 만들때 간단한 표현식으로 작성할 수 있다.

기본 문법

var = [x for x in iterable]
ex) new_list = [x for x in range(1,11)]

new_list = [x for x in range(1,11)] # new_list = [1,2,3,4,5,6,7,8,9,10]
print(new_list)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

for문 뒤에 if문을 추가할 수 있다.
[표현식 for 원소 in iterable][표현식 for 원소 in iterable if문]

예시) 홀수만 출력하는 예제

list_odd = [x for x in range(1,11) if x % 2 == 1]
print(list_odd)
[1, 3, 5, 7, 9]

(순서를 잘 기억해라 for in range if문)

dictionary comprehension

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

Assingments #1 : S로 시작하지 않는 도시만 리스트로 만들기

not_s_city = [i for i in cities if i[0] != "S"]
print(not_s_city)
['Tokyo', 'Jakarta', 'Guangzhou', 'Beijing', 'Karachi', 'Delhi']

Assingments #2 : 다음과 같은 도시, 인구수가 튜플의 리스트로 주어졌을 때, 키가 도시, 값이 인구수인 딕셔너리를 딕셔너리 컴프리헨션을 사용한 함수로 작성
population_of_city = [
('Tokyo', 36923000),
('Shanghai', 34000000),
('Jakarta', 30000000),
('Seoul', 25514000),
('Guangzhou', 25000000),
('Beijing', 24900000),
('Karachi', 24300000),
('Shenzhen', 23300000),
('Delhi', 21753486)
]

cities_name = [i[0] for i in a]
cities_name
['Tokyo', 'Shanghai', 'Jakarta', 'Seoul', 'Guangzhou', 'Beijing', 'Karachi', 'Shenzhen', 'Delhi']
cities_population = [i[1] for i in a]
cities_population
[36923000, 34000000, 30000000, 25514000, 25000000, 24900000, 24300000, 23300000, 21753486]

dict_city_population = {key:val for key, val in zip(cities_name, cities_population)}
dict_city_population
{'Tokyo': 36923000, 'Shanghai': 34000000, 'Jakarta': 30000000, 'Seoul': 25514000, 'Guangzhou': 25000000, 'Beijing': 24900000, 'Karachi': 24300000, 'Shenzhen': 23300000, 'Delhi': 21753486}

cities_name과 cities_population 이라는 두가지 리스트를 새로 만들고,
zip 함수를 이용해서 각각 key, value 값에 할당한다음
dict_city_poulation 딕셔너리를 만들었다.

0개의 댓글