차원이 작은 행렬 (또는 value)의 차원을 키워서 차원이 큰 행렬에 맞춰서 계산한다.
예시 1:
[1, 2, 3] + 2
다음과 같이 계산을 하면 list에서는 오류가 나지만, np.array 또는 pd.Series(pd.DataFrame)에서는 [3, 4, 5]로 값이 나온다.
아래와 같이 [1, 2, 3] + [2, 2, 2] 배열로 계산해서 결과값이 나온 것이다.
[1, 2, 3] + [2, 2, 2]
예시 2:
[1, 2, 3] + [[0], [1], [2]]
다음과 같이 계산하면 [[1, 2, 3], [2, 3, 4], [3, 4, 5]]가 나온다.
[1, 2, 3]이 [[1, 2, 3], [1, 2, 3], [1, 2, 3]]이 되고
[[0], [1], [2]]가 [[0, 0, 0], [1, 1, 1], [2, 2, 2]]가 된다.
[[1, 2, 3], [1, 2, 3], [1, 2, 3]] + [[0, 0, 0], [1, 1, 1], [2, 2, 2]] = [[1, 2, 3], [2, 3, 4], [3, 4, 5]]
np.array([1, 2, 3]) + 2
# array([3, 4, 5])
np.array([1, 2, 3]) + np.array([[0], [1], [2]])
# array([[1, 2, 3],
# [2, 3, 4],
# [3, 4, 5]])
[표현식 for 아이템 in 반복가능한_객체]
[표현식 for 아이템 in 반복가능한_객체 if 조건]
[표현식1 if 조건 else 표현식2 for 아이템 in 반복가능한_객체]
위와 같은 모양으로 생겼으며, 리스트 내에서 for문을 돌려서, 리스트로 만들어 준다.
ls = [표현식 for 아이템 in 반복가능한_객체]
# 또는
ls = []
for 아이템 in 반복가능한_객체:
ls.append(표현식)
둘 다 똑같은 결과가 나온다. 그러나 성능, 간결성 부분에서 list comprehension이 더 유리하다.
식이 간결하다면 전통적인 for문보다 list comprehension을 사용하는게 유리하다.
list comprehension은 이미 리스트 내부에서 돌기 때문에 append 메소드의 시간의 영향을 받지 않는다.