[Python] list comprehension

문성호·2020년 8월 23일

List Comprehension이란?

  • List Comprehension이란 새로운 리스트를 만들 때 사용할 수 있는 간단한 표현식.

  • For문과 if문이 들어간 간단한 코드를 표현한 식이다.

  • List comprehension은
    [ 표현식 for 원소 in 반복 가능한 객체 ]
    [ 표현식 for 원소 in 반복 가능한 객체 if문 ]
    이렇게 표현할 수 있다.

  • 예를 들어, 1부터 10까지 숫자를 리스트에 담는다면 다음과 같이 작성할 수 있다.

	new_list = []
    	for x in range(1,11):
        	new_list.append(x)
        
        print(new_list)
  • 그러나 List comprehension을 이용하면 좀 더 간단히 표현할 수 있다.
	new_list = [ x for x in range(1, 11) ]
	print(new_list)
  • 간단한 if문을 첨가할 수도 있다.
	odd_list = [ x for x in range(1, 11) if x%2 == 1 ]
	print(odd_list)
  • 출력할 값 for 반복문 if 조건문 으로 생각하면 편하다.

장단점

장점

  • 리스트를 만들 때 간결하게 쓸 수 있다.
    데이터베이스를 조회하거나 새로운 배열을 만들 때 간단하게 만들 수 있다.
  • 간결하기 때문에 알고리즘의 성능개선도 기대할 수 있다.

단점

  • 조금 복잡한 for문이나 if문이 나오면 쓰기 어렵다.
    오히려 평범한 이중 for문이나 if문이 가독성 측면에서 더 좋을 수 있다.

예제 1

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

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

solution

newCities = [cities[i] for i in range(len(cities)) if cities[i][0] == 'S']
print(newCities)

예제 2

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

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

solution

newDict = {population_of_city[i][0] : population_of_city[i][1] for i in range(len(population_of_city)) }
print(newDict)
profile
오늘을 모아 내일을

0개의 댓글