새로운 리스트를 만들 때 사용할 수 있는 간단한 표현식
[ 표현식 for 원소 in 반복 가는한 객체]
[ 표현식 for 원소 in 반복 가능한 객체 if문 ]
간단한 ex)
new_list = [x for x in range(1, 11)]
print(new_list)
결과 : [1,2,3,4,5,6,77,8,9,10,11]
if문을 포함한 경우
간단한 ex)
odd_numbers = []
for element in range(1,11):
if (element % 2) == 1:
odd_numbers.append(element)
이와같은 조건문을 포함한 리스트를 컴프리헨션으로 표현하면
list_comprehension = [ element for element in range(1,11) if (element % 2) == 1]
print(list_comprehension)
이처럼 간단히 표현 가능
timteit 모듈을 사용하여 함수들을 1000번 실행한 시간을 측정하는 코드
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
코드를 간결하게 하는 것은 물론이고 데이터 베이스를 조회하여 리스트로 만들 때 사용되므로 리스트 컴프리 헨션은 새로운 배열을 만들 때 특히 유용