Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从计算中排除列表中的最大数字_Python_List_Listitem - Fatal编程技术网

Python 如何从计算中排除列表中的最大数字

Python 如何从计算中排除列表中的最大数字,python,list,listitem,Python,List,Listitem,我有一个带有浮动的列表,希望得到列表中所有项目的平均值,但总是忽略最大的数字。然后从平均值中减去未包含的一个浮动,因为这将是最大的差异。然后我想创建一个列表,将差异放入其中 original_list = [[0.5, 1.4, 2.1, 5.2], [2.3, 3.2, 5.3, 2.1], [1.3, 3.1, 2.1, 5.3]] result_list = [[-3.87], [-2.77], [-3.13]] 我不知道如何从计算中排除最大的数字,因为它总是在另一个位置。我们可以循环

我有一个带有浮动的列表,希望得到列表中所有项目的平均值,但总是忽略最大的数字。然后从平均值中减去未包含的一个浮动,因为这将是最大的差异。然后我想创建一个列表,将差异放入其中

original_list = [[0.5, 1.4, 2.1, 5.2], [2.3, 3.2, 5.3, 2.1], [1.3, 3.1, 2.1, 5.3]]
result_list = [[-3.87], [-2.77], [-3.13]] 

我不知道如何从计算中排除最大的数字,因为它总是在另一个位置。

我们可以循环列表,对每个子列表进行排序,然后执行计算,将结果附加到结果列表中

import numpy as np
original_list = [[0.5, 1.4, 2.1, 5.2], [2.3, 3.2, 5.3, 2.1], [1.3, 3.1, 2.1, 5.3]]

rv = []

for x in original_list:
    l = sorted(x)
    rv.append([np.mean(l[:-1])-l[-1]])
输出:

>>> rv
[[-3.866666666666667], [-2.766666666666666], [-3.1333333333333333]]
要对值进行四舍五入,请使用
rv.append([四舍五入(np.mean(l[:-1])-l[-1],2)])

纯python解决方案

original_list = [[0.5, 1.4, 2.1, 5.2], [2.3, 3.2, 5.3, 2.1], [1.3, 3.1, 2.1, 5.3]]

def mean_no_max(l):
    s, m = 0, float('-inf')
    for i in l:
        s += i
        m = m if m > i else i
    return [(s - m) / (len(l) - 1) - m]

print(list(map(mean_no_max, original_list)))  # -> [[-3.86], [-2.76], [-3.13]]

使用
max()
sum()


作为理解

from numpy import mean

original_list = [[0.5, 1.4, 2.1, 5.2], [2.3, 3.2, 5.3, 2.1], [1.3, 3.1, 2.1, 5.3]]

result_list = [[round(mean([v for v in list_ if v !=max(list_)])-max(list_), 2)] for list_ in original_list]
print(result_list)
一行:

import numpy as np
res = [[np.mean(sorted(i)[:-1])-sorted(i)[-1]] for i in original_list]
print(res)

您可以首先从嵌套列表中获取包含所有最大值的列表,然后按最大值筛选嵌套列表

max_values = [max(l) for l in original_list]
with_no_max = [[e for e in l if e < m] for l, m in zip(original_list, max_values)]

print(max_values)
print(with_no_max)
列表。删除(最大值(列表))?
from numpy import mean

original_list = [[0.5, 1.4, 2.1, 5.2], [2.3, 3.2, 5.3, 2.1], [1.3, 3.1, 2.1, 5.3]]

result_list = [[round(mean([v for v in list_ if v !=max(list_)])-max(list_), 2)] for list_ in original_list]
print(result_list)
import numpy as np
res = [[np.mean(sorted(i)[:-1])-sorted(i)[-1]] for i in original_list]
print(res)
max_values = [max(l) for l in original_list]
with_no_max = [[e for e in l if e < m] for l, m in zip(original_list, max_values)]

print(max_values)
print(with_no_max)
[5.2, 5.3, 5.3]
[[0.5, 1.4, 2.1], [2.3, 3.2, 2.1], [1.3, 3.1, 2.1]]