Как запустить l oop через таблицу с разностными строками? например, это ввод ([[0,4], [2,4], [- 1,3]] и вывод, который я хочу это [[0,1,5], [2,1,5], [1,5,3] ] - PullRequest
0 голосов
/ 05 апреля 2020

// Это просто изменение значений первой строки, а не всей таблицы? Может кто-нибудь сказать мне, как запустить L oop во всей таблице

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]
         return table


Ответы [ 2 ]

0 голосов
/ 05 апреля 2020

Оператор возврата находится не в том месте. Функция выйдет из самой первой итерации. Отменить отступ в операторе возврата для l oop. Затем он завершится после полной итерации

for row in table:
    row[:] = [avg if x in (mx, mn) else x for x in row]
return table
0 голосов
/ 05 апреля 2020

Я думаю, что ваш return table предназначен неправильно. Он вернется после обработки первой строки. Попробуйте это:

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]
    return table

...