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

파이썬(Python)으로 절사(트리밍)된 값 재분배하기


리스트의 양 끝에서 일부 요소를 잘라낸(절사한) 뒤, 잘라낸 값들의 합을 남은 요소들에 균등하게 재분배해야 하는 경우가 있습니다. 파이썬에서는 슬라이싱, 리스트 컴프리헨션(list comprehension), 그리고 나눗셈 연산자 '/'를 조합하면 이 작업을 간단하게 처리할 수 있습니다.

예제 코드

아래는 절사된 값을 재분배하는 방법을 보여주는 예제입니다.

my_list = [11, 26, 24, 75, 96, 37, 48, 29, 93]

print("The list is :")
print(my_list)

key = 2
print("The value of key is")
print(key)

full_sum = sum(my_list)

trimmed_list = my_list[key:len(my_list) - key]
trim_sum = sum(trimmed_list)

add_value = (full_sum - trim_sum) / len(trimmed_list)
result = [ele + add_value for ele in trimmed_list]

print("The resultant list is:")
print(result)

출력 결과

The list is :
[11, 26, 24, 75, 96, 37, 48, 29, 93]
The value of key is
2
The resultant list is:
[55.8, 106.8, 127.8, 68.8, 79.8]

단계별 동작 원리

  • 리스트를 정의하고 콘솔에 출력합니다.
  • 절사할 개수를 나타내는 key 값을 정의하고 콘솔에 출력합니다.
  • 'sum()' 메서드로 리스트 전체 요소의 합을 구해 변수에 저장합니다.
  • 슬라이싱 'my_list[key:len(my_list) - key]'를 사용해 앞뒤로 key개씩 제외한 중간 요소들만 추출합니다.
  • 절사된 리스트의 합 역시 'sum()'으로 구해 변수에 저장합니다.
  • '/' 연산자로 재분배할 값을 계산합니다. 즉, (전체 합 − 절사된 리스트의 합) ÷ 절사된 리스트의 길이입니다.
  • 리스트 컴프리헨션을 사용해 절사된 리스트의 각 요소에 계산된 값을 더합니다.
  • 결과 리스트를 변수에 할당한 뒤 콘솔에 출력합니다.

핵심 로직 정리

예제의 숫자를 기준으로 계산 과정을 살펴보면 다음과 같습니다.

  1. 전체 합: full_sum = 439
  2. 절사된 리스트: key가 2이므로 앞의 [11, 26]과 뒤의 [29, 93]을 제외한 [24, 75, 96, 37, 48]이 남습니다.
  3. 절사된 리스트의 합: trim_sum = 280
  4. 재분배할 값: (439 − 280) ÷ 5 = 31.8
  5. 결과: 각 요소에 31.8을 더한 [55.8, 106.8, 127.8, 68.8, 79.8]이 출력됩니다.

결국 잘라낸 요소들의 합(159)이 남은 요소 5개에 각각 31.8씩 균등하게 나누어 더해지는 구조입니다. 이처럼 슬라이싱과 리스트 컴프리헨션을 함께 활용하면 복잡한 반복문 없이도 간결하게 데이터를 가공할 수 있습니다.