TIL[54]. Python_List Comprehension

jake.log·2020년 8월 24일
0

Python

목록 보기
36/39

36.List comprehension

1.리스트 컴프리헨션

새로운 리스트를 만들 때 사용할 수 있는 간단한 표현식
리스트처럼 대괄호 [, ] 를 사용한다.

처음엔 우리가 만들 원소를 표현하는 표현식으로 시작하여 for 루프가 뒤에 따라오는 형식.
For 문 뒤에 if문을 추가하여 조건문을 포함한 형식도 가능하다.

[ 표현식 for 원소 in 반복 가능한 객체 ]

[ 표현식 for 원소 in 반복 가능한 객체 if문 ]

2.리스트 컴프리헨션의 장점

위의 리스트 컴프리헨션 형식으로 1부터 10까지를 가지는 리스트를 만들 때 다음과 같이 리스트 컴프리헨션으로 리스트를 생성할 수 있다.

new_list = [ x for x in range(1, 11) ]
print(new_list)

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 리스트를 간결한 표현으로 만들어 낼수 있다.

3.if문을 포함하는 리스트 컴프리헨션 형식

odd_numbers = [ ]
for element in range(1,11):
    if (element % 2) == 1:
        odd_numbers.append(element)

다음과 같은 4줄의 코드를 if문을 포함하는 리스트 컴프리헨션으로 1줄로 바꿀수 있다.

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

For 루프 내에서 새로운 리스트를 만들 때 리스트 컴프리헨션으로 변환할 수 있다.
반대로 리스트 컴프리헨션도 for문으로 변환할 수 있다.

4.리스트 컴프리헨션의 성능

일반적인 랩탑환경에서는 0부터 999를 가지는 리스트를 만드는데

  • 일반: for loop은 0.062밀리초
  • 리스트컴프리헨션: 0.024밀리초
  • for loop보다 두배정도 더 빠르게 실행됨을 확인할 수 있다.

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

그러나 코드의 가독성을 위해 여러 줄의 표현식과 조건문으로 표현하는 것이 이중 for문의 복잡한 리스트 컴프리헨션 한줄로 코딩하는 것보다 나은 경우도 있다.

Assignments

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

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

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

def cities2():
    cities2 = ["Tokyo","Jakarta","Guangzhou","Beijing","Karachi","Delhi" ] 
    list_comprehesion =  [i  for i in cities if i in cities2 ]

    return(list_comprehesion)

print(cities2())
def city():
    cities = ["Tokyo","Shanghai","Jakarta","Seoul","Guangzhou","Beijing","Karachi","Shenzhen","Delhi" ]
    list_comprehesion = [i for i in cities if i[0]!="S"]

    return(list_comprehesion)

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

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

def population_of_cities():
   
    population_of_city = [("Tokyo",36923000),("Shanghai", 34000000), ("Jakarta", 30000000), ("Seoul", 25514000), ("Guangzhou", 25000000), ("Beijing", 24900000), ("Karachi", 24300000),("Shenzhen", 23300000),("Delhi", 21753486)]    
    dictionary_comprehension = {i[0]:i[1] for i in population_of_city}
   
    return(dictionary_comprehension)

print(population_of_cities()) 
profile
꾸준히!

0개의 댓글