Python | 求解嵌套列表中的最大元素和

给定一个嵌套的列表,求嵌套列表中列表元素的最大和。
示例:

输入:[[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

以上方法大家经常使用的是哪种方法呢? 或者有更好的方法也请留言分享~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

python收藏家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值