尝试练习我的列表理解,但此时我的代码看起来有点(太长)每一行长度理解:
def sum_array(arr):
return 0 if arr == None else sum(sorted(arr)[1:-1] for x in range(len(arr or [])-2))
目标是计算整数之和减去最小和最大值。如果数组是空的,None
,或者如果只有一个元素,则函数应该返回0。
我收到以下消息
TypeError:不支持的操作数类型为+:'int‘和'list’
请指点!
发布于 2016-09-21 12:23:01
美丽胜于丑陋。
def sum_array(arr):
if arr is None or len(arr) <= 1:
return 0
else:
return sum(sorted(arr)[1:-1])
发布于 2016-09-21 12:21:20
不知道为什么需要for
中的sum
。看来x
在任何地方都没有使用。这可以简化为:
def sum_array(arr):
return 0 if not arr else sum(sorted(arr)[1:-1])
发布于 2016-09-21 12:22:17
知道最大值和最小值的最简单的方法是对列表进行排序。
arr = sorted(arr)
arr是最小的,arr-1是最大的
所以
if arr is None:
return 0
else:
return sum(sorted(arr)[1:-1])
https://stackoverflow.com/questions/39625834
复制相似问题