List Comprehension
list comprehension은 Python에서 배열을 보다 간편하게 만드는 방법 중 하나이다.
아래와 같은 방식으로 배열을 생성하는 코드가 있다고 하자.
result = []
for i in range(10):
result.append(i ** 2)
result # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
보통 이렇게 빈 배열에 원소를 하나씩 append
하는 형태라면 list comprehension 꼴로 바꿀 수 있다. 그리고 이런 경우에 list comprehension 꼴로 바꾼 것이 더욱 직관적이다.
일반적인 list comprehension의 형태는
[(표현식) for (배열의 원소) in (배열)]
배열의 원소가 배열에서 하나씩 뽑아져 나오고, 그 원소가 표현식에 맞게 변형되어 새로운 배열의 원소로 하나씩 추가된다. 우리가 흔히 쓰는 for 문과 순서가 바뀌어져 있어 다소 헷갈릴 수 있다.
아까 만들었던 배열을 list comprehension으로 똑같이 만들어보면,
[i ** 2 for i in range(10)] # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
코드의 양이 단 한 줄로 줄어들었고, 이 배열에 대한 정보도 보다 직관적으로 알 수 있다. 여기서 i ** 2
가 표현식인데, for 문을 돌 때마다 i
의 값이 순서대로 들어가게 된다.
아래처럼 for 문 뒤에 조건문을 추가하여 원하는 원소를 필터링하여 배열에 넣을 수도 있다.
[i for i in range(10) if i > 5] # [6, 7, 8, 9, 10]
[i + 1 for i in range(1,100) if i % 2 == 0] # [3, 5, 7, ... , 99]