리스트 컴프리헨션이란 쉽게 말해 리스트 안에 내장되어있는 형태라고 할 수 있다.
최소 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]
리스트 컴프리헨션으로 작성한 코드는 간결하고 데이터베이스를 조회하여 리스트로 만들 때 많이 사용된다. 또한 리스트 컴프리헨션은 기존의 리스트 혹은 다른종류의 자료구조에서 새로운 배열을 만들어낼때 특히 유용하게 쓰인다.
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번정답 :