python中如何求最大和子列表

本题要求实现一个函数msslst(),带一个整数列表作为输入参数。要求函数计算并返回输入列表中的最大和子列表之和。最大和子列表是输入列表的子列表(切片),其各项之和最大。所有列表项都为负数,则最大和子列表为空子列表,空子列表的和定义为0。

def msslst(in_list):
    # 先判断是否为全负或空列表
    if all(i < 0 for i in in_list) or in_list == []:
        return 0
    else:
        b = []
        # 判断是否有负数
        if any(i < 0 for i in in_list):
            # 只保留正数,保存到b列表
            for i in in_list:
                if i >= 0:
                    b.append(i)
            return sum(b)
        # 如果没有负数则去掉最小的一个数
        else:
            m = min(in_list)
            while m in in_list:
                in_list.remove(m)
            return sum(in_list)


in_list = eval(input('输入列表:'))
print(msslst(in_list))