如何使其他函数返回1行

时间:2019-07-06 10:27:29

标签: python python-3.x

我下面有这个代码

有没有一种方法可以在1行而不是if和else的最后4行中返回较大的列表(1/2)?

#Write your function here
def larger_sum(lst1, lst2):
  sum1 = 0
  sum2 = 0
  for num in lst1:
    sum1+=num
  for num in lst2:
    sum2+=num
  if sum1 > sum2:
    return lst1
  else:
    return lst2

#Uncomment the line below when your function is done
print(larger_sum([1, 9, 5], [2, 3, 7]))

5 个答案:

答案 0 :(得分:3)

这可以一行完成:

def larger_sum(lst1, lst2):
    return max([lst1, lst2], key=sum)

max函数从其输入返回最大的项目。当给定键功能而不是比较项目时,将对键功能应用于项目的结果进行比较,并返回将键功能应用于其结果最大的项目。

答案 1 :(得分:2)

if sum1 > sum2:
    return lst1
else:
    return lst2

等同于

return ls1 if sum1 > sum2 else lst2

答案 2 :(得分:1)

return lst1 if sum1 > sum2 else lst2

答案 3 :(得分:0)

对我来说,您的代码看起来还不错,但是如果您需要1行而不是4条价格,则可以这样做:

def larger_sum(lst1, lst2):
  sum1 = 0
  sum2 = 0
  for num in lst1:
    sum1+=num
  for num in lst2:
    sum2+=num
  return [lst2,lst1][sum1>sum2]

说明:在Python中,TrueFalse会根据需要转换为10,因此如果不满足条件,它将返回第0个元素({ {1}})和第一元素(lst2)否则(索引从0开始)

答案 4 :(得分:0)

我会这样写:

def larger_sum(lst1, lst2):
    return lst1 if sum(lst1) > sum(lst2) else lst2

说明:

在python中,您可以使用条件表达式返回基于条件的值或将其分配给变量(类似于Java或c ++等其他语言中的三元运算符):

x = val_1 if condition else val_2

等效于:

if condition:
    x = val_1
else:
    x = val_2

这是一个不错的语法糖。

此外,内置的sum函数采用任何可迭代的方式(可以在for循环中使用的任何方式)并求和其值。这段代码:

sum_ = 0
for x in lst:
    sum_ += x

等效于:

sum_ = sum(lst)

我之所以称这个变量sum_(带有下划线)为原因是为了防止遮盖内置函数sum(如果我先执行sum = ...然后s = sum(...) # trying to sum a list or something会导致错误,因为我已覆盖sum函数)。