list comprehensions

Ju Seol·2021년 6월 10일
0
post-thumbnail

[ 표현식 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

list_comprehension = [ element for element in range(1,11) if (element % 2) == 1 ]
print(list_comprehension)

리스트 컴프리헨션으로 작성한 코드는 간결하고 데이터베이스를 조회하여 리스트로 만들 때 많이 사용되므로 리스트 컴프리 헨션은 새로운 배열을 만들때 특히 유용합니다.

또한 성능개선을 하기 위해서 리스트 컴프리헨션을 사용하기도 하지만 모든 상황에서 리스트 컴프리헨션이 만능은 아닙니다. 예를 들어 코드의 가독성을 위해서는 여러 줄의 표현식과 조건문으로 표현하는 것이 이중 for문의 복잡한 리스트 컴프리헨션 한줄로 코딩하는 것보다 나은 경우도 있습니다.

문제 1.
다음과 같은 도시목록의 리스트가 주어졌을때, 도시이름이 S로 시작하지 않는 도시만 리스트로 만들 때 리스트 컴프리헨션을 사용하여 함수를 작성해 보세요.

cities = ["Tokyo","Shanghai","Jakarta","Seoul","Guangzhou","Beijing","Karachi","Shenzhen","Delhi" ]

답변 1.

new_cities = [x for x in cities if x[0].lower() != "s"]

문제 2.
다음과 같은 도시, 인구수가 튜플의 리스트로 주어졌을때, 키가 도시, 값이 인구수인 딕셔너리를 딕셔너리 컴프리헨션을 사용한 함수를 작성해 보세요.

population_of_city = [('Tokyo',36923000),('Shanghai',34000000),('Jakarta',30000000),('Seoul',25514000),('Guangzhou',25000000),('Beijing',24900000),('Karachi',24300000 ),('Shenzhen',23300000),('Delhi',21753486)]

답변 2.

{x:y for x,y in population_of_city}

Dictionary comprehension 예시

words = ['data', 'science', 'machine', 'learning']


#list comprehension
[len(i) for i in words]

output
[4, 7, 7, 8]


#dictionary comprehension
{i:len(i) for i in words}

output
{'data': 4, 'science': 7, 'machine': 7, 'learning': 8}
profile
Hello!

0개의 댓글