Comprehension : 컴프리헨션이란 새로운 리스트너 딕셔너리를 만들 때 사용할 수 있는 간단한 표현식
1) 1~10을 원소를 갖는 list 만들기
for n in range(1,11):
my_dict.append(n)
my_dict =[n for n in range(1, 11)]
2) 여러 정수 원소를 input 받기
my_dict = [int(x) for x in input("입력").split()]
- input으로 받은 원소들은 split에 의해 띄어쓰기를 기준으로 나누어진 list가 되고 그 원소들은 int형 data로 my_dict의 원소가 된다.
- 위의 코드는 입력 받은 원소들이 숫자 일 때만 가능
1) 1~10을 원소로 갖는 list에서 짝수만 뽑기
my_list = [1,2,3,4,5,6,7,8,9,10]
even_number = []
for num in my_list:
if num % 2 ==0:
even_number.append(num)
my_list = [1,2,3,4,5,6,7,8,9,10]
even_numbers = [num for num in my_list if num % 2 ==0]
위의 두 코드를 비교해 보면 comprehension을 사용하여 4줄짜리 코드를 1줄로 바꾸어 표현 할 수 있다.
2) S로 시작하지 않는 도시만 찾기
cities = ["Tokyo", "Shanghai", "Jakarta", "Seoul", "Guangzhou", "Beijing", "Karachi", "Shenzhen", "Delhi"]
cities_new = [city for city in cities if city[0] != "S"]
1) comprehension으로 dictionary 만들기
- Key는 도시 이름, value는 인구수(정수)인 딕션너리 만들기
population_of_city = [('Tokyo', 36923000), ('Shanghai', 34000000), ('Jakarta', 30000000), ('Seoul', 25514000), ('Guangzhou', 25000000), ('Beijing', 24900000), ('Karachi', 24300000), ( 'Shenzhen', 23300000), ('Delhi', 21753486) ]
cities_dict = {key: value for key, value in population_of_city}
- population_of_city list의 원소들은 도시 이름과 인구수가 tuple로 묶여 있다.
- for in을 통해 population_of_list의 원소를 가져오면 ('도시이름',인구수)를 차례로 가져온다.
- key, value = ('도시이름',인구수)가 되어 unpacking을 통해 key = '도시이름', value = 인구수가 된다.
- 표현식 key:value을 통해 딕션너리로 저장된다.
1) 장점
2) 단점