我对python很陌生。只是出于好奇,有没有更简单的方法来找到同时包含负整数和正整数的列表的最大和? 例如:
IN_1
l = [1,2,3]
OUT
6
IN_2
l = [1,-2,-3]
OUT
1
IN_3
l = [-1,-2,-3]
OUT
-1
如果是IN_3返回0的情况,则该方法非常简单。只需删除所有负面元素并使用总和即可。
l = [item for item in l if item >= 0]
sum(l)
该代码对于IN_1和IN_2效果很好。
但是在第3种情况IN_3时遇到了麻烦,该情况必然会采用一个最小负数并将其返回。
答案 0 :(得分:1)
尝试一下:
l = input('').split()
s = sum([int(i) for i in l if int(i)>0]) or int(max(l, key=int))
答案 1 :(得分:0)
def getsum(l):
return sum({False:[max(l)]}.get(bool([i for i in l if i >0]),[i for i in l if i >0]))
print(getsum([1,2,3]))
print(getsum([1,-2,-3]))
print(getsum([-1,-2,-3]))
输出:
6
1
-1
答案 2 :(得分:0)
您已经概述了该方法,因此实现很简单:
def max_sum(l):
return sum(i for i in l if i > 0) or max(l)
print(max_sum([1,2,3]))
print(max_sum([1,-2,-3]))
print(max_sum([-1,-2,-3]))
这将输出:
6
1
-1
答案 3 :(得分:0)
您似乎只需要担心两种情况:
该列表仅包含负整数,即
如果max(list)<0: 返回max(list)
一些正整数,可能还有一些负整数(或无),即
如果max(list)> 0: 过滤出负数并返回剩余的总和
答案 4 :(得分:0)
l = [-1,-2,-3]
s = sum([i for i in l if i > 0])
s = s if s > 0 else max(l)
print(s)
答案 5 :(得分:-1)
我已经完成了非常基本和简单的编码 我的回答如下:
l = [1,2,3]
m = [1,-2,-3]
j = [-1,-2,-3]
i = 0
for k in m:
i+=k
print(i)
我检查了所有列表。