새로운 리스트를 만들 때 사용할 수 있는 간단한 표현식으로 리스트와 마찬가지로 대괄호 [, ] 를 사용하여 작성.
그리고 우리가 만들려고 하는 원소를 표현하는 표현식으로 시작하여 for 루프가 뒤에 따라오는 형식을 가짐. For 문 뒤에 if문을 추가하여 조건문을 포함한 형식도 올 수 있음.
(형식)
[ 표현식 for 원소 in 반복 가능한 객체 ]
[ 표현식 for 원소 in 반복 가능한 객체 if문 ]
new_list = [ x for x in range(1, 11) ]
print(new_list)
코드와
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 ]
print(list_comprehension)
간결하게 표현할 수 있다.
Simple comprehensions can be clearer and simpler than other dict, list, or set creation techniques. Generator expressions can be very efficient, since they avoid the creation of a list entirely.
즉, 간단한 comprehensions 다른 dict, list, set 을 사용하는것보다 간결하게 표현될 수 있다.
Complicated comprehensions or generator expressions can be hard to read.
즉, 복잡한 comprehension 또는 generator 표현은 가독성이 떨어질 수 있다!
1.다음과 같은 도시목록의 리스트가 주어졌을때, 도시이름이 S로 시작하지 않는 도시만 리스트로 만들 때 리스트 컴프리헨션을 사용하여 함수를 작성해 보세요.
cities = ["Tokyo", "Shanghai", "Jakarta", "Seoul", "Guangzhou", "Beijing", "Karachi", "Shenzhen", "Delhi" ]
cities = ["Tokyo", "Shanhai", "Jakarta", "Seoul",
"Guangzhou", "Beijing", "Karachi", "Shenzhen", "Delhi"]
def pick_s_cities(list):
list_comprehension = [element for element in list if (element[0]) == "S"]
return list_comprehension
print("Comprehension List = ")
print(pick_s_cities(cities))
2.다음과 같은 도시, 인구수가 튜플의 리스트로 주어졌을때, 키가 도시, 값이 인구수인 딕셔너리를 딕셔너리 컴프리헨션을 사용한 함수를 작성해 보세요.
population_of_city = [(‘Tokyo', 36923000), (‘Shanghai', 34000000), (‘Jakarta', 30000000), (‘Seoul', 25514000), (‘Guangzhou', 25000000), (‘Beijing', 24900000), (‘Karachi', 24300000 ), ( ‘Shenzhen', 23300000), (‘Delhi', 21753486) ]
population_of_city = [("Tokyo", 36923000), ("Shanghai", 34000000), ("Jakarta", 30000000), ("Seoul", 25514000), (
"Guangzhou", 25000000), ("Beijing", 24900000), ("Karachi", 24300000), ("Shenzhen", 23300000), ("Delhi", 21753486)]
print("Tuples")
print(population_of_city)
def make_dictionary(list):
my_dictionary = { key : value for key, value in list}
return my_dictionary
print("Dictionary")
print(make_dictionary(population_of_city))