Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 리스트로 수학 연산 수행하는 방법 (예제 코드 총정리)

파이썬에서 리스트는 여러 값을 하나의 변수에 모아 관리할 수 있는 가장 기본적인 자료구조입니다. 하지만 리스트는 단순히 값을 저장하는 용도에 그치지 않고, 다양한 수학적 계산과 연산을 수행하는 데에도 폭넓게 활용됩니다. 이번 글에서는 math 모듈과 함께 리스트를 활용해 수학 연산을 처리하는 대표적인 예제들을 살펴보겠습니다.

예제 1: math.floor()로 내림 값 구하기

math 모듈의 floor() 함수는 인자로 받은 숫자보다 작거나 같은 가장 큰 정수, 즉 내림 값을 반환합니다.

import math

data = 21.6
print('21.6의 내림 값은:', math.floor(data))

실행 결과

21.6의 내림 값은: 21

리스트의 가중 평균 계산하기

리스트에 담긴 값들에 각각 가중치를 적용해 평균을 구하는 것은 데이터 분석에서 매우 자주 사용되는 연산입니다. 각 요소에 해당 가중치를 곱한 뒤 모두 더하고, 전체 가중치의 합으로 나누면 가중 평균을 구할 수 있습니다.

예제 2

cost = [23, 10, 5, 32, 41]
weight = [10, 20, 30, 40, 50]

for i in range(len(cost)):
    cost[i] = cost[i] * weight[i] / sum(weight)

result = sum(cost)
print(result)

실행 결과

26.066666666666666

위 코드에서는 각 비용(cost) 요소에 대응하는 가중치(weight)를 곱한 후 전체 가중치의 합(150)으로 나누어, 가중치가 반영된 값들로 리스트를 갱신합니다. 마지막으로 이 값들을 모두 더하면 최종 가중 평균인 약 26.07을 얻을 수 있습니다.

참고로 zip() 함수를 사용하면 동일한 결과를 더 간결하게 표현할 수 있습니다.

cost = [23, 10, 5, 32, 41]
weight = [10, 20, 30, 40, 50]

weighted_average = sum(c * w for c, w in zip(cost, weight)) / sum(weight)
print(weighted_average)

삼각함수 활용: 각도를 라디안으로 변환하기

파이썬의 삼각함수(sin, cos, tan)는 도(degree)가 아닌 라디안(radian) 단위의 값을 입력받습니다. 따라서 일반적인 각도를 사용하려면 먼저 math.radians() 함수로 변환해야 합니다.

예제 3

import math

degree = 180
radian = math.radians(degree)

print('주어진 각도(라디안):', radian)
print('sin(x)의 값:', math.sin(radian))
print('cos(x)의 값:', math.cos(radian))
print('tan(x)의 값:', math.tan(radian))

실행 결과

주어진 각도(라디안): 3.141592653589793
sin(x)의 값: 1.2246467991473532e-16
cos(x)의 값: -1.0
tan(x)의 값: -1.2246467991473532e-16

180도는 π(약 3.14159) 라디안에 해당합니다. sin(π)의 수학적 값은 0이지만, 컴퓨터가 부동 소수점 방식으로 실수를 근사하기 때문에 1.22e-16처럼 0에 매우 가까운 작은 값이 출력되는 것입니다.

파이썬 주요 수학 함수 정리

math 모듈에는 위에서 소개한 함수 외에도 다양한 수학 함수가 포함되어 있습니다. 자주 사용되는 주요 함수들은 다음과 같습니다.

  • ceil(x): x보다 크거나 같은 가장 작은 정수(올림 값)를 반환합니다.
  • copysign(x, y): y의 부호를 붙인 x를 반환합니다.
  • fabs(x): x의 절댓값을 반환합니다.
  • factorial(x): x의 팩토리얼을 반환합니다.
  • floor(x): x보다 작거나 같은 가장 큰 정수(내림 값)를 반환합니다.
  • fmod(x, y): x를 y로 나눈 나머지를 반환합니다.
  • frexp(x): x의 가수(mantissa)와 지수(exponent)를 (m, e) 형태의 튜플로 반환합니다.
  • fsum(iterable): 반복 가능한 객체(iterable) 안 값들의 정확한 부동 소수점 합계를 반환합니다.
  • isfinite(x): x가 무한대나 NaN(숫자가 아님)이 아니면 True를 반환합니다.
  • isinf(x): x가 양의 무한대 또는 음의 무한대이면 True를 반환합니다.
  • isnan(x): x가 NaN이면 True를 반환합니다.
  • ldexp(x, i): x * (2**i)를 반환합니다.
  • modf(x): x의 소수 부분과 정수 부분을 반환합니다.
  • trunc(x): x의 소수점 이하를 버린 정숫값을 반환합니다.
  • exp(x): e의 x제곱(e**x)을 반환합니다.
  • expm1(x): e**x − 1을 반환합니다.
  • log(x[, base]): 지정한 밑(base, 기본값은 e)에 대한 x의 로그를 반환합니다.
  • log1p(x): 1+x의 자연 로그를 반환합니다.
  • log2(x): 밑이 2인 x의 로그를 반환합니다.

이처럼 파이썬의 리스트와 math 모듈을 함께 활용하면 내림·올림, 가중 평균 계산, 삼각함수 연산 등 다양한 수학 작업을 손쉽게 처리할 수 있습니다. 위 예제들을 직접 실행해 보면서 각 함수의 동작 방식을 익혀 보시기 바랍니다.