728x90

<목차>
1. for 반복문을 이용한 평균 구하기
2. sum 함수를 이용한 평균 구하기
3. numpy 모듈을 이용해서 평균 구하기
4. statiscics 라이브러리 이용해서 평균 구하기

 

1. 파이썬 평균 구하기 for 반복문


숫자들을 하나하나 읽어서 더하고
더한 결과를 숫자들의 갯수 만큼 나눠주는
전형적인 방법 입니다.

arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

result = 0
for val in arr:
    result += val  # 하나하나 더하기

# 평균 구하기
print(f"average : {result / len(arr)}")

이렇게 arr 리스트에 있는 값들을 하나하나 for 반복문을 통해서 돌면서 값들을 더합니다.
이렇게 더한 값들을 arr 리스트 값들의 총 갯수로 나누어 주면 평균을 구할 수 있습니다.

 

 

2. 파이썬 sum 을 이용한 평균 구하기


우리에게는 리스트의 합을 한번에 계산할 수 있는 sum 함수가 있습니다.
sum ([리스트]) 이렇게 함수를 작성하면 해당 리스트에 있는 숫자들의 합을 한번에 구해줄 수 있습니다.

그러니까, 1번 방법 처럼 for 문으로 번거롭게 더하지말고 한번에 sum 함수를 이용해서 리스트의 합을 구하면 됩니다.

바로 코드로 넘어가겠습니다.

arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 합계 구하기
result = sum(arr)

# 평균 구하기
print(f"average : {result / len(arr)}")

for 문으로 3줄 작성하던게 한줄 sum(arr)로 끝나게되었습니다. 간편하지 않나요?
그래도 아직 합을 구한다음에 len(arr)을 이용해서 리스트의 총 갯수를 나눠야 하는 부분이 남아있습니다.

sum 함수에 대해서 더 궁금하시다면 [바로가기] 포스팅을 가시면 확인 가능합니다.

 

 

3. 파이썬 numpy 모듈로 평균 구하기


숫자를 다루는 모듈중에서 유명한 모듈인 numpy 라는 모듈이 있습니다.
해당 모듈에서 평균을 구하는 mean 함수를 제공해 주고 있습니다.
이 함수는 2번 방법인 sum 을 구해서 len(리스트) 해서 리스트의 숫자로 나누는 그런 작업도 필요없이
numpy.mean(리스트) 이렇게 하면 바로 평균이 나와버립니다. 정말 간편하죠?

pip install numpy 
명령어를 이용해서 numpy 를 설치합니다.

설치를 완료했으면 numpy 를 import 해서 mean 함수를 사용하면 됩니다.

import numpy

arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 평균 구하기
average = numpy.mean(arr)

# 출력
print(f"average : {average}")

이렇게 간단하게 numpy 의 mean 함수를 이용해서 평균을 구할 수 있습니다.

 

 

4. 파이썬 평균 구하기 statiscics 라이브러리 이용


마지막으로는 파이썬에서 제공해주는 statiscics 라이브러리를 이용할 수 있습니다.
이 statistics 라이브러리는 파이썬 3.4 버전 부터 사용할 수 있습니다.
이 라이브러리를 자세히 보고싶다면 파이썬 문서 [바로가기] 에서 확인할 수 있습니다.

statistics 라이브러리는 여러 수학 관련 함수를 제공해주는데
우리가 사용할 평균을 구하는 함수는 mean 이라는 함수 입니다.

파이썬에서 제공해주는것이기 때문에 따로 pip install 할 필요 없이 바로 import 하면 됩니다.

import statistics

arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
arr2 = [100, 90, 80, 10, 20, 30, 60, 70, 50, 40]

# 평균 구하기
result1 = statistics.mean(arr1)
result2 = statistics.mean(arr2)

# 출력
print(f"average1 : {result1}")
print(f"average2 : {result2}")

statistics.mean ( 리스트) 를 이용해서 쉽게 평균을 구할 수 있습니다.

728x90
728x90

1. sort 함수

리스트 정렬 함수


1-1) sort 함수 기본

List.sort()

  • list.sort() 메서드는 list 객체 자체를 정렬해주는 함수이다.
  • 리스트에만 사용 가능 
  • list 객체의 멤버 함수, 즉 메서드
  • list.sort() 함수는 기본적으로 리스트를 오름차순으로 정렬해주는 기능

** 추가 설명
새로운 정렬된 리스트를 반환하는 함수는 sorted 함수이고, 
리스트 자체를 정렬시켜버리는 것은 sort 함수

 

1-2) sort 함수 예제

list_num = [33, 2, 81, -77, 44, 1, 10, 99, 5, 0, -2]
list_str1 = ['b', 'l', 'o', 'c', 'k', 'd', 'm', 'a', 's', 'k']
list_str2 = ['B', 'l', 'o', 'c', 'k', 'D', 'M', 'a', 's', 'k']

# 숫자 리스트 정렬
print("1. 숫자 리스트 정렬")
list_num.sort()
print(list_num)

# 문자열 리스트 정렬1 (소문자만)
print("\n2. 소문자 문자열 리스트 정렬")
list_str1.sort()
print(list_str1)

# 문자열 리스트 정렬2 (대/소문자 포함)
print("\n3. 대소문자 문자열 리스트 정렬")
list_str2.sort()
print(list_str2)

  • 숫자리스트.sort() 의 결과
    숫자리스트를 보면 음수, 0, 양수 이렇게 작은 수부터 큰 수로 오름차순으로 정렬해주는 것을 볼 수 있다.

 

  • 소문자문자리스트.sort() 의 결과
    우리가 알고 있는 알파벳순 a, b, c, d, e 순서로 잘 정렬되는 것을 볼 수 있다.

 

  • 대소문자문자리스트.sort() 결과
    대소문자 리스트.sort()는 대문자 ABCD 순으로 다 나온 후에, 소문자 abcd 순으로 정렬이 되는 것을 볼 수 있다.
    이는, 문자 자체를 아스키코드 값에 대응해서 숫자로 판단하기 때문이다.
    아스키코드표에 보면 대문자 A는 65번에 해당하고 소문자 a는 97번에 해당된다.
    (구글에 '아스키코드표'라고 검색하면 표가 나옴)
    즉, A~Z는 65~90 대역대에 존재하고 소문자 a~z는 97~122에 존재하게 된다.
    여기서 문자의 sort() 기준은 아스키코드표에 각 문자에 대응하는 숫자에 따라 판단을 하기 때문에 65~90에 있는 대문자들을 쫘르륵 정렬한 후에, 97~122번에 있는 소문자가 오게된다.

 

 

2. 파이썬 오름차순, 내림차순 정렬


리스트.sort() 함수에는 reverse 옵션(매개변수)이 존재한다.
디폴트는 리스트.sort(reverse=False) 인 게 디폴트여서 리스트가 오름차순으로 정렬이 되는 것이고
리스트.sort(reverse=True)로 변경하면 리스트가 내림차순으로 정렬이 된다.

a = [3, 2, 8, 4, 1, 10, 99, 5]
b = [3, 2, 8, 4, 1, 10, 99, 5]
c = [3, 2, 8, 4, 1, 10, 99, 5]

# 기본값 (오름차순)
a.sort()
print("a.sort()")
print(a)

# 오름차순
b.sort(reverse=False)
print("\nb.sort(reverse=False)")
print(b)

# 내림차순
c.sort(reverse=True)
print("\nc.sort(reverse=True)")
print(c)

위처럼 세 가지 동일한 리스트가 있다고 할 때,
sort(), sort(reverse=False), sort(reverse=True)로 정렬을 해보면

결괏값을 보다시피
sort(), sort(reverse=False)가 오름차순으로 정렬되고
sort(reverse=True)가 리스트를 내림차순으로 정렬하는 것을 볼 수 있다.

 

728x90

'Python' 카테고리의 다른 글

[python] .isdigit()  (0) 2023.01.22
[python] 파이썬 람다(lambda) 함수  (0) 2023.01.21
[python] 파이썬 map 함수  (0) 2023.01.21
[Python] 정렬 - sort() vs sorted()  (0) 2023.01.21
[python] 파이썬 평균 구하기 4가지 방법  (0) 2023.01.20
728x90
def solution(num1, num2):
    answer = num1/num2*1000
    return int(answer)
728x90
728x90
def solution(num1, num2):
    answer = num1 + num2
    return answer
728x90
728x90

문제 설명

머쓱이는 40살인 선생님이 몇 년도에 태어났는지 궁금해졌습니다. 나이 age가 주어질 때, 2022년을 기준 출생 연도를 return 하는 solution 함수를 완성해주세요.


제한사항
  • 0 < age ≤ 120
  • 나이는 태어난 연도에 1살이며 1년마다 1씩 증가합니다.

입출력 예ageresult
40 1983
23 2000

입출력 예 설명

입출력 예 #1

  • 2022년 기준 40살이므로 1983년생입니다.

입출력 예 #2

  • 2022년 기준 23살이므로 2000년생입니다.

<풀이>

def solution(age):
    answer = 2023 - age
    return answer
728x90
728x90
def solution(n):
    return sum([i for i in range(2, n + 1, 2)])
728x90
728x90
def solution(strlist):
    answer = []
    for i in strlist:
        answer.append(len(i))
    return answer
728x90
728x90
def solution(num_list):
    
    return num_list[::-1]
728x90

+ Recent posts