首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >没有最低和最高列表整数的列表之和(python)

没有最低和最高列表整数的列表之和(python)
EN

Stack Overflow用户
提问于 2016-09-21 20:16:32
回答 5查看 3K关注 0票数 0

尝试练习我的列表理解,但此时我的代码看起来有点(太长)每一行长度理解:

代码语言:javascript
运行
复制
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’

请指点!

EN

回答 5

Stack Overflow用户

发布于 2016-09-21 20:23:01

美丽胜于丑陋。

代码语言:javascript
运行
复制
def sum_array(arr):
    if arr is None or len(arr) <= 1:
         return 0
    else:
         return sum(sorted(arr)[1:-1])
票数 2
EN

Stack Overflow用户

发布于 2016-09-21 20:21:20

不知道为什么需要for中的sum。看来x在任何地方都没有使用。这可以简化为:

代码语言:javascript
运行
复制
def sum_array(arr):
    return 0 if not arr else sum(sorted(arr)[1:-1])
票数 1
EN

Stack Overflow用户

发布于 2016-09-21 20:22:17

知道最大值和最小值的最简单的方法是对列表进行排序。

代码语言:javascript
运行
复制
arr = sorted(arr)

arr是最小的,arr-1是最大的

所以

代码语言:javascript
运行
复制
if arr is None:
    return 0
else:
    return sum(sorted(arr)[1:-1])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39625834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档