[TIL] Python #List comprehension

김성진·2020년 8월 24일
0
post-thumbnail

List Comprehension

'''
new_list = [ x for x in range(1, 11) ]
print(new_list)
'''
#if문을 포함하는 리스트 컴프리헨션 형식
'''
odd_numbers = [ ]
for element in range(1,11):
if (element % 2) == 1:
odd_numbers.append(element)
'''
#if문을 포함하는 리스트 컴프리헨션으로 위의 4줄을 한줄로:
'''
list_comprehension = [element for element in range(1,11) if (element % 2) == 1]
print(list_comprehension)
'''
#timeit모듈을 사용하여 함수들을 1000번 실행한 시간을 측정하는 코드 입니다.

#for vs list comprehension
'''
import timeit

def for_loop():
num_list = []
for i in range(1000):
num_list.append(i)

def list_comprehension():
num_list = [ i for i in range(1000) ]

if name == "main":
time1 = timeit.Timer("for_loop()", "from main import for_loop")
print("for loop time = ", time1.timeit(number=1000), "milliseconds")

time2 = timeit.Timer("list_comprehension()", "from main import list_comprehension")
print("list_comprehension time = ", time2.timeit(number=1000), "milliseconds")
'''

#list comprehension Assignment1
cities = ["Tokyo", "Shanghai", "Jakarta", "Seoul", "Guangzhou", "Beijing",
"Karachi", "Shenzhen", "Delhi" ]
#for loop
'''
lists = []
for element in cities:
temp_list = list(element)
if temp_list[0] != "S":
lists.append(element)
print(lists)

list_cities = [element for element in cities if "S" not in element]
print(list_cities)
'''
#list comprehension Assignment2
population_of_city = [('Tokyo', 36923000), ('Shanghai', 34000000),
('Jakarta', 30000000), ('Seoul', 25514000),
('Guangzhou', 25000000), ('Beijing', 24900000),
('Karachi', 24300000 ), ('Shenzhen', 23300000),
('Delhi', 21753486) ]

dict_city = {i:j for i ,j in population_of_city}
print(dict_city)

print(dict(population_of_city))

위에 **항목들이 list comprehension을 이용한 문제풀이이다. 사전스터디때 종종 "x=[int(x) for x in input("score: ").split()]" 이와 같이 input 값을 한번에 여러가지 선언해야 할 경우에 사용해보았지만, 실질적으로 list_comprehension = [element for element in range(1,11) if (element % 2) == 1] <<< 같이 안에 if 문이 적용된다는 것은 처음 알았다.
list comprehension의 유용한 점은 간결하게 한줄로 표현이 가능하다는 것과, 아래 예시처럼 빠르게 연산 가능하다는 점이다.

다음 코드는 timeit모듈을 사용하여 함수들을 1000번 실행한 시간을 측정하는 코드 입니다. 실행하는 머신에 따라 다르겠지만 일반적인 랩탑환경에서는 0부터 999를 가지는 리스트를 만드는데 일반 for loop은 0.062밀리초 리스트컴프리헨션은 0.024밀리초로 이경우에는 일반적인 for loop보다 두배정도 더 빠르게 실행됨을 확인할 수 있습니다.

python
import timeit

def for_loop():
num_list = []
for i in range(1000):
num_list.append(i)

def list_comprehension():
num_list = [ i for i in range(1000) ]

if name == "main":
time1 = timeit.Timer("for_loop()", "from main import for_loop")
print("for loop time = ", time1.timeit(number=1000), "milliseconds")

time2 = timeit.Timer("list_comprehension()", "from main import list_comprehension")
print("list_comprehension time = ", time2.timeit(number=1000), "milliseconds")

실행 결과

for loop time = 0.062743696 milliseconds
list_comprehension time = 0.024242144999 milliseconds
profile
multi-national communicator with programming (back-end)

0개의 댓글