List-Comprehension

김현우·2020년 7월 27일
0

리스트 컴프리헨션이란

새로운 리스트를 만들 때 사용할 수 있는 간단한 표현식으로 리스트와 마찬가지로 대괄호 [, ] 를 사용하여 작성.

그리고 우리가 만들려고 하는 원소를 표현하는 표현식으로 시작하여 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 표현은 가독성이 떨어질 수 있다!

Assignments

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))
profile
코딩을 잘하는 개발자가 되자!

0개의 댓글