1. 程式人生 > >使用python把列表分成兩個值相差最小的列表

使用python把列表分成兩個值相差最小的列表

def list(list1):
    one_list = list(list1)
    one_list.sort()
    two_list = []
    n = len(one_list)
    total = sum(one_list)
    half_total = total / 2
    s = 0
    for i in range(n-1, -1, -1):
        ns = s + one_list[i]
        if ns > half_total:
            continue
        else:
            s += one_list[i]
            two_list.append(one_list[i])
            one_list.pop(i)
            if abs(s - half_total) < one_list[0]:
                break
    return one_list, two_list


a,b = list([1,2,3,4,5])
print(a,b)