一个“ pyschool”练习:


  “定义一个调用addFirstAndLast(x)的函数,该函数接受一个数字列表并返回第一个和最后一个数字的和。”


这是我想出的最佳解决方案。有没有更优雅的方式来编写仅使用内置函数的函数?

def addFirstAndLast(x):
    sum_list = []
    if len(x) == 0:
        return 0
    elif len(x) == 1 :
        return int(x[0])
    elif len(x) > 1 :
        sum_list.append(x[0])
        sum_list.append(x[-1])
    return sum(sum_list)

最佳答案

>>> def addFirstAndLast(x):
...   return (x[0]+x[-1])/(1/len(x)+1) if x else 0
...
>>> addFirstAndLast([])
0
>>> addFirstAndLast([1])
1
>>> addFirstAndLast([1,3])
4


注意1:仅当list的长度为1时,(1/len(x)+1)的结果为2,因此您将第一个元素和最后一个元素的和除以2,否则将其除以1。

注意2:如果您使用的是python 3,请使用//进行除法,而不是/

08-24 12:50