행렬의 각 행에 대해 중복 비율(redundancy rate)을 구해야 할 때는 간단한 반복문과 append 메서드만으로도 손쉽게 해결할 수 있습니다.
동작 원리
중복 비율은 아래 공식을 기반으로 계산됩니다.
중복 비율 = 1 − (고유한 요소의 개수 ÷ 전체 요소의 개수)
각 행에 set() 함수를 적용해 중복을 제거한 뒤 남은 고유 값의 개수를 전체 요소 개수로 나누고, 이를 1에서 빼면 해당 행에서 중복된 요소가 차지하는 비율을 구할 수 있습니다.
예제 코드
아래는 실제 동작 과정을 보여주는 예제입니다.
my_list = [[91, 52, 12, 29, 33], [54, 54, 54, 54, 54], [11, 22, 33, 59, 95]]
print("The list is :")
print(my_list)
my_result = []
for sub in my_list:
my_result.append(1 - len(set(sub)) / len(sub))
print("The result is :")
print(my_result)출력 결과
The list is : [[91, 52, 12, 29, 33], [54, 54, 54, 54, 54], [11, 22, 33, 59, 95]] The result is : [0, 1, 0]
코드 설명
리스트 안에 여러 개의 리스트가 포함된 중첩 리스트(행렬 형태)를 정의하고, 콘솔에 출력합니다.
계산 결과를 저장할 빈 리스트를 생성합니다.
원본 리스트의 각 행을 순회하면서 해당 행의 중복 비율을 계산하고, 그 값을 빈 리스트에 추가(
append)합니다.모든 행에 대한 계산이 완료되면 최종 결과를 콘솔에 출력합니다.
결과 분석
첫 번째 행 [91, 52, 12, 29, 33]은 모든 요소가 서로 다르므로 중복 비율은 0입니다.
두 번째 행 [54, 54, 54, 54, 54]는 모든 요소가 동일하므로 중복 비율이 1(100%)로 계산됩니다.
세 번째 행 [11, 22, 33, 59, 95] 역시 중복이 없기 때문에 중복 비율은 0입니다.