We.TIL 07 : List Comprehension

김기욱·2020년 7월 27일
0

We.TIL

목록 보기
12/69
post-thumbnail

리스트 컴프리헨션의 개념과 사용법

리스트 컴프리헨션이란 쉽게 말해 리스트 안에 내장되어있는 형태라고 할 수 있다.
최소 3줄정도는 필요한 for loof 구문을 한 줄에 간결하게 담을 수 있으며 코드의 간결성이 높아짐에 따라 실제 작동을 했을때 일반적인 for loof 구문보다 훨씬 빠른 처리속도를 낼 수 있다.

다음은 Google Python StyleGuide에서 발췌한 리스트 컴프리헨션의 장/단점이다.

장점 : 깔끔하고 간단하게 딕셔너리, 리스트 등의 자료구조 구문정리를 할 수 있다. 특히 iterator를 생성시키는 generator표현식에서 효율성을 높일 수 있다.

단점 : 복잡한 컴프리헨션과 제너레이터 구문은 읽고 해석하기 어려워진다.

사용법은 다음과 같다.
[표현식 for 원소 in 반복 가능한 객체] 혹은 [표현식 for 원소 in 반복 가능한 객체 if문]

new_list = [x for x in range(1,11)]
결과 : new_list = [1,2,3,4,5,6,7,8,9,10]

odd_number_list = [element for element in range(1,11) if (element%2) == 1
결과 : [1,3,5,7,9]

리스트 컴프리헨션으로 작성한 코드는 간결하고 데이터베이스를 조회하여 리스트로 만들 때 많이 사용된다. 또한 리스트 컴프리헨션은 기존의 리스트 혹은 다른종류의 자료구조에서 새로운 배열을 만들어낼때 특히 유용하게 쓰인다.

Assignments

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

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

1번 정답 :

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

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

2번정답 :

profile
어려운 것은 없다, 다만 아직 익숙치않을뿐이다.

0개의 댓글