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

标签 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)])
在这种情况下,如果我 print(sum_array([6, 0, 1, 10, 10])) ,它只返回 7 而不是 17。
它完全排除了最高数字。
我如何让程序识别出有重复项并只取其中一个作为总和,在这种情况下,它可以返回 17?

最佳答案

你可以减去 minmax来自整体sum ,所以它只计为一次:

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

sum(a) - max(a) - min(a)

关于python - 忽略一个最小值和一个最大值的数组总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62678291/

相关文章:

Python:如何在嵌套循环的第一列中搜索?

c++ - C++ 列表中的多态性

Python:使用 rsub 填充零的 zfill

python - 填充 numpy 数组时内存爆炸

python - 列表和字符串格式化困难 : importing a txt file, 添加字符串并将其写入新文件

c# - 使列表中的按钮将唯一数据发送到方法

c# - 像使用 C# 的 python 的 lxml 一样读取 XML 文件?

python - 如何使用 flow_from_directory 仅选择特定文件格式?

python - 权限错误 : [WinError 5] instead of IsADirectoryError

python - 如何在 Python 中对列表进行切片