[플레이데이터 빅데이터 부트캠프]Python List Comprehension

  • 기존 List를 사용해서 간단히 다른 리스트를 만드는 기법입니다.
  • for + append보다 속도가 빠릅니다.(for문은 실행할때마다 메모리 재할당이 발생하기 때문에)
  • [(변수에 적용할 수식) for (변수) in (for문이 돌아가는 범위)]
result = []

for i in range(0, 12):
    if i % 2 == 0:
        result.append(i)
result
[0, 2, 4, 6, 8, 10]

 

위와 같은 원래 for문을 List Comprehension을 사용하면 아래와 같이 간략하게 사용할 수 있다.

result = [i for i in range(0, 12) if i % 2 == 0]
result
[0, 2, 4, 6, 8, 10]

 

문자열에도 쉽게 적용할 수 있다.

num = '12345'
word = 'ABCDE'

result = []

for a in num:
    for b in word:
        result.append(a+b)
        
print(result)
['1A', '1B', '1C', '1D', '1E', '2A', '2B', '2C', '2D', '2E', '3A', '3B', '3C', '3D', '3E', '4A', '4B', '4C', '4D', '4E', '5A', '5B', '5C', '5D', '5E']

 

위의 코드를 List Comprehension을 사용하면 훨씬 더 간단하게 사용할 수 있다.

result = [a+b for a in num for b in word]
print(result)
['1A', '1B', '1C', '1D', '1E', '2A', '2B', '2C', '2D', '2E', '3A', '3B', '3C', '3D', '3E', '4A', '4B', '4C', '4D', '4E', '5A', '5B', '5C', '5D', '5E']