2024-09-28 23:26:36 发布
网友
我需要编写一个函数,它接受一个数字数组,并找到所有数字的最大和。换句话说,我需要找到正数的和。我写了这个,我得到“列表超出范围”
有什么想法?
def maximum_sub(A): x = 0 i = 0 for i in A: while A[i] > 0: x+=A[i] i+=1 return x
有更好的求和和和理解方法,但我假设您正在编写一个函数作为算法练习。
你不需要while循环。使用if检查它是否为正,并将其添加到和中。否则,什么都不要做。for循环将自动迭代您的值。
def maximum_sum(A): x = 0 for i in A: if i > 0: x += i return x
几句忠告:用表达的方式命名事物。我可以用以下几个名字:
def maximum_sum(arr): max_sum = 0 for num in arr: if num > 0: max_sum += num return max_sum
使用超级函数和列表理解代替:
>>> a = [1, 2, 3, -4, 5, -3, 7, 8, 9, 6, 4, -7] >>> sum(x for x in a if x > 0) 45
[x for x in a if x > 0]将创建由a中的正值组成的数组。
[x for x in a if x > 0]
a
sum(...)将返回该数组中元素的总和。
sum(...)
有更好的求和和和理解方法,但我假设您正在编写一个函数作为算法练习。
你不需要while循环。使用if检查它是否为正,并将其添加到和中。否则,什么都不要做。for循环将自动迭代您的值。
几句忠告:用表达的方式命名事物。我可以用以下几个名字:
使用超级函数和列表理解代替:
[x for x in a if x > 0]
将创建由a
中的正值组成的数组。sum(...)
将返回该数组中元素的总和。相关问题 更多 >
编程相关推荐