파이썬 함수를 작성하여 숫자 목록을 숫자 목록으로 정렬하려고합니다. 각 목록에는 각 숫자의 인덱스가 포함 된 숫자 만 들어 있습니다. 큰 목록의 하위 목록정수 목록을 숫자 목록 합계 목록으로 정렬
따라서, 예를 들어, 1 ~ 25의 숫자 모두를 위해,이 같은 목록의 목록 양보해야
[[], [1, 10], [2, 11, 20], [3, 12, 21], [4, 13, 22], [5, 14, 23], [6, 15, 24], [7, 16], [8, 17], [9, 18], [19]]
을 나는 지금까지 다음과 같은 코드가 있습니다
def digit_sum(integer_data_type):
int_string = str(integer_data_type)
sum = 0
for digits in int_string:
sum += int(digits)
return sum
def organize_by_digit_sum(integer_list):
integer_list.sort()
max_ds = 9*len(str(max(integer_list)))+1
list_of_lists = []
current_ds = 0
while current_ds <= max_ds:
current_list = []
for n in integer_list:
if digit_sum(n) == current_ds:
current_list.append(n)
list_of_lists.append(current_list)
current_ds += 1
return list_of_lists
을
분명히, 0에서 최대 자리수까지의 각 숫자 합계에 대해 정수 목록 전체를 계속 반복해야하기 때문에 이것은 비효율적입니다.
또한 처음에는 최대 자릿수 합이 최대 정수의 9 배인 것으로 가정합니다. 명확히하기 위해 나는 가능한 digit_sum에 대한 하위 목록을 항상 갖고 싶기 때문에 목록의 목록의 인덱스로 특정 자리 합계의 하위 목록을 참조 할 수 있습니다.
나는 함수가 목록의 각 정수를 정확히 한 번 반복하고 올바른 하위 목록에 추가하기 만하면되기를 바란다.
이 문제에 대한 도움이나 의견을 보내 주시면 감사하겠습니다.
이 아스 커는 무엇을 찾고 정확하게인가?나는 이것이 내적리스트를 숫자 합과 같은 인덱스에 배치한다고 생각하지 않는다. 대신, 그것은 단지 숫자 합계로 그룹화하고 정렬합니다. – beeftendon