Ich versuche, eine Python-Funktion zu schreiben, um eine Liste von Zahlen in eine Liste von Listen von Nummern zu sortieren, wobei jede Unterliste nur Zahlen enthält, die die Ziffernsumme des Index von haben die Unterliste in der größeren Liste.Liste der Ganzzahlen in die Liste der Listen nach Ziffern summieren
So zum Beispiel für alle Zahlen von 1 bis 25, soll es eine Liste von Listen wie folgt ergeben:
[[], [1, 10], [2, 11, 20], [3, 12, 21], [4, 13, 22], [5, 14, 23], [6, 15, 24], [7, 16], [8, 17], [9, 18], [19]]
Ich habe den folgenden Code so weit:
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
Offensichtlich ist dies ineffizient, weil es die gesamte Integer-Liste für jede Ziffernsumme von 0 bis zur maximalen Ziffernsumme immer wieder durchlaufen muss.
Außerdem nimmt es anfänglich an, dass die maximale Ziffernsumme das 9-fache der Länge der maximalen Ganzzahl ist. Um es klar zu sagen, ich möchte immer eine Unterliste für die mögliche Ziffernsumme von Null haben, so dass ich auf die Unterliste einer bestimmten Ziffernsumme durch den Index der Listenliste verweisen kann.
Ich möchte die Funktion nur jede Integer in der Liste genau einmal durchlaufen und an die richtige Unterliste anhängen.
Ich würde jede Hilfe oder Einsichten dazu schätzen.
Ist das genau das, was der Fragesteller ist auf der Suche?Ich glaube nicht, dass dies die inneren Listen auf einen Index setzt, der ihrer Ziffernsumme entspricht. Stattdessen gruppiert und sortiert er sie nur nach Ziffern. – beeftendon