如何在Python列表中替换列表中的项目

时间:2020-04-03 14:00:45

标签: python list for-loop nested-lists

现在我只想用表中的x替换最小值,最大值...。而我不知道如何...

for i in table[1:]:
    mn = min(i) if min(i) < mn else mn 
    mx = max(i) if max(i) > mx else mx
    x = (mn+mx)/2

2 个答案:

答案 0 :(得分:1)

以下方法应该起作用:

def remove_outliers(table):
    mx = max(map(max, table))
    mn = min(map(min, table))
    avg = (mx + mn) / 2

    for row in table:
        row[:] = [avg if x in (mx, mn) else x for x in row]
    # OR
    for row in table:
        for i, x in enumerate(row):
            if x in (mx, mn):
                row[i] = avg

max(map(max, table))max函数应用于table中的每一行,并取所有{max}中的max。 / p>

row[:] = ... :分片分配。这是row对象的一种变异。只需row = ...即可重新绑定循环变量,而不会影响仍由table索引的列表对象。

[avg if x in (mx, mn) else x for x in row] :常规条件列表理解。相当不言自明。

答案 1 :(得分:0)

如果您使用的是numpy,请签出clip函数(https://docs.scipy.org/doc/numpy/reference/generated/numpy.clip.html)。