给定一个嵌套的列表,求嵌套列表中列表元素的最大和。
示例:
输入:[[1,2,3],[4,5,6],[10,11,12],[7,8,9]]
输出:33
说明: 给定嵌套列表中所有列表的总和是: list1 = 6,list2 = 15,list3 = 33,list4 = 24 所以其中最大和是33
方法1:遍历嵌套列表的列表
我们可以在列表中遍历列表,并对给定列表中的所有元素求和,并通过max函数获得列表中所有元素之和的最大值。
def maximumsum(list1):
maxi = 0
# traversal in the lists
for x in list1:
sum = 0
# traversal in list of lists
for y in x:
sum += y
maxi = max(sum, maxi)
return maxi
# driver code
list1 = [[1, 2, 3], [4, 5, 6], [10, 11, 12], [7, 8, 9]]
print(maximumsum(list1))
输出
33
方法2:遍历外层列表
只遍历外层列表,并使用sum()函数对内层列表中的所有元素求和,并获得计算的所有和的最大值。
def maximumsum(list1):
maxi = 0
# traversal
for x in list1:
maxi = max(sum(x), maxi)
return maxi
# driver code
list1 = [[1, 2, 3], [4, 5, 6], [10, 11, 12], [7, 8, 9]]
print(maximumsum(list1))
输出
33
方法3:内置sum和max函数
sum(max(list1, key=sum))
上面的max()函数的语法允许我们使用key=sum在list中找到list的和。max(list1,key=sum),它找到元素总和最大的列表,然后sum(max(list1, key=sum))返回该列表的总和。
def maximumsum(list1):
return (sum(max(list1, key = sum)))
# driver code
list1 = [[1, 2, 3], [4, 5, 6], [10, 11, 12], [7, 8, 9]]
print(maximumsum(list1))
输出
33
方法4:使用sum和sort方法
def maximumsum(list1):
x=[]
for i in list1:
x.append(sum(i))
x.sort()
return x[-1]
# driver code
list1 = [[1, 2, 3], [4, 5, 6], [10, 11, 12], [7, 8, 9]]
print(maximumsum(list1))
输出
33
方法5:使用reduce()
这个方法使用reduce函数来迭代列表,并使用lambda函数来比较每个列表的和。lambda函数返回具有较大和的列表,并且reduce函数通过重复地将lambda函数应用于嵌套列表来跟踪最大和。最后的结果是具有最大和的列表的和。
from functools import reduce
def maximumsum(lists):
# Use the reduce function to calculate the maximum sum
# by comparing the sums of each list
max_sum = reduce(lambda x, y: x if sum(x) > sum(y) else y, lists)
return sum(max_sum)
lists = [[1, 2, 3], [4, 5, 6], [10, 11, 12], [7, 8, 9]]
print(maximumsum(lists))
输出
33
以上方法大家经常使用的是哪种方法呢? 或者有更好的方法也请留言分享~~