忽略一个最小值和一个最大值的数组总和

Alt*_*ros 5 python list

我有一个程序可以找到数组中的最高和最低值,排除它们,然后总结该数组中的其余数字。它适用于大多数随机输入,除非该数组中存在最高或最低数字的重复项

def sum_array(arr):
    if arr is None:
        return 0
    if len(arr) < 2:
        return 0
    return sum([i for i in arr if i != max(arr) and i != min(arr)])
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如果 I print(sum_array([6, 0, 1, 10, 10])),它只返回 7 而不是 17。

它完全排除了最高数字。

我如何让程序识别出有重复项并只取其中之一作为总和,在这种情况下,它可以返回 17?

yat*_*atu 9

您可以从整体中减去min和,因此它仅计为一次:maxsum

a = [6, 0, 1, 10, 10]

sum(a) - max(a) - min(a)
Run Code Online (Sandbox Code Playgroud)