반응형
리스트에 일괄 연산하기
파이썬을 쓰다 보면 리스트 안의 모든 값에 동일한 연산을 적용해야 하는 상황이 자주 발생합니다. 예를 들어 상품 가격 목록에서 전부 1달러씩 할인하거나, 센서 측정값에 보정값을 빼야 하는 경우가 있죠.
이번 글에서는 가장 많이 사용되는 6가지 방식으로 리스트에 동일한 연산을 적용하는 방법을 소개합니다. 각 방식의 장단점도 함께 정리했으니, 상황에 맞는 방법을 쉽게 골라 사용할 수 있습니다.
1. numpy 사용 - 가장 빠름 ***
import numpy as np
prices = [10, 15, 20]
discounted = np.subtract(prices, 1)
print(discounted) # [ 9 14 19]
2. List Comprehension - 가장 Pythonic **
prices = [10, 15, 20]
discounted = [price - 1 for price in prices]
print(discounted) # [9, 14, 19]
3. map + lambda *
prices = [10, 15, 20]
discounted = list(map(lambda x: x - 1, prices))
print(discounted) # [9, 14, 19]
4. for 루프
prices = [10, 15, 20]
discounted = []
for price in prices:
discounted.append(price - 1)
print(discounted) # [9, 14, 19]
5. pandas.Series 활용 - 통계 분석 중심 *
import pandas as pd
prices = [10, 15, 20]
discounted = (pd.Series(prices) - 1).tolist()
print(discounted) # [9, 14, 19]
6. operator 모듈 + map
from operator import sub
prices = [10, 15, 20]
discounted = list(map(lambda x: sub(x, 1), prices))
print(discounted) # [9, 14, 19]
마무리
리스트 내 동일 연산을 적용하는 방식은 파이썬에 다양한 도구가 존재합니다.
가장 추천되는 방식은 상황에 따라 다르며, 아래처럼 선택하면 좋습니다.
- 리스트가 짧고 가독성이 중요할 때: List Comprehension
- 벡터화 연산이 필요할 때: NumPy
- 통계/시계열 분석 중이라면: pandas
반응형