数字のリストを数字のリストにソートするPython関数を書こうとしていますが、各サブリストは、より大きいリストのサブリスト数字リストによるリストのリストへの整数リストの並べ替え
したがって、たとえば、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