在Python中迈出第一步。 我有一个列表列表,我正在尝试返回具有所有子列表总和最大的子列表。 现在,我只拥有最大和。 例如:这段代码返回18,但我需要返回[3,3,3,3,3,3,3]
任何方向? 谢谢
def find_biggest(lst):
inner_list_sum = []
for i in range(len(lst)):
inner_list_sum.append(sum(lst[i])) # list of elements sums
return max(inner_list_sum) # I actually need the element itself...not the max sum
print(find_biggest([[1,2,3,4], [1,2,3,3], [1,1], [3,3,3,3,3,3]]))
答案 0 :(得分:5)
将max
与key=sum
一起使用
例如:
data = [[1,2,3,4], [1,2,3,3], [1,1], [3,3,3,3,3,3]]
print(max(data, key=sum))
输出:
[3, 3, 3, 3, 3, 3]
答案 1 :(得分:0)
好 由于不允许使用(max(data,key = sum))。 我编写的代码不是很优雅,但是被接受了正确答案
def find_biggest(lst):
inner_list_sum = []
for i in range(len(lst)):
inner_list_sum.append(sum(lst[i])) # list of elements sums
max_element=max(inner_list_sum)
seq_index= inner_lis
答案 2 :(得分:0)
import functools
def find_biggest(lst):
return functools.reduce(lambda x, y : x if sum(x) > sum(y) else y, lst)
在这里,使用的lambda
表达式等效于查找最大和,而lst
是iterable
。
请注意:reduce
将直接适用于python2
,您需要导入functools
仅python3
。