【发布时间】:2016-09-21 20:16:32
【问题描述】:
试图练习我的列表理解,但此时我的代码看起来有点(太)长每行长度理解:
def sum_array(arr):
return 0 if arr == None else sum(sorted(arr)[1:-1] for x in range(len(arr or [])-2))
目标是计算整数之和减去最小值和最大值。如果数组为空,None,或者如果只存在 1 个元素,则函数应返回 0。
我收到以下内容
TypeError:+ 的不支持的操作数类型:“int”和“list”
请指教!
【问题讨论】:
-
我没有看到任何列表理解..
-
首先,不要与
None进行相等比较;使用身份。 -
单线很酷。但说真的,如果你自己的代码看不懂,可以考虑使用多行代码。
-
我不明白你为什么要这么做
for x in range(len(arr or [])-2) -
担心
arr是None只是分散注意力。假设arr至少是您可以添加的内容的有效列表,然后从那里开始。毕竟,您并没有检查arr是否不包含字符串。
标签: python if-statement list-comprehension