我必須撰寫一個 Python 代碼,當給定一個數字串列時,它會列印一個子串列,其中其元素的總和與原始串列的所有元素的總和相同。例如,考慮數字串列 [5, 6, 8, 6, 6, -12],代碼應該列印子串列 [5,6,8],因為原始和子串列元素都有一個總和值等于 19;對于串列
到目前為止,我已經完成了:
list_1 = [5, 6, 8, 6, 6, -12]
sub_list = []
for i in list_1:
sub_list.append(i)
if sum(sub_list) == sum(list_1):
sub_list.remove(i)
for i in list_1:
if sum(sub_list) == sum(list_1):
sub_list.remove(i)
print(sub_list)
uj5u.com熱心網友回復:
如果lst是您的數字串列,那么:
def get_sublist(lst):
tot = sum(lst)
for i in range(len(lst)):
for j in range(i 1, len(lst) 1):
sub_lst = lst[i:j]
if sum(sub_lst) == tot:
return sub_lst
sub_lst = get_sublist(lst)
此代碼生成每個可能的子串列,計算它們的總和并將其與整個串列的總和進行比較。
復雜性不是最優的,即有更快的演算法來解決這個問題。例如,您不需要在每次向其中添加新元素時計算整個子串列的總和......
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/439085.html
