Как перебрать мои ряды данных и вернуть список вместо отдельного значения?

#python #python-3.x #for-loop

#python #python-3.x #для цикла

Вопрос:

Я пытался создать функцию, которая перебирает мои данные, стандартизирует значения и, наконец, помещает новые значения в список. Вот что я пытаюсь:

 def standardize( num_list):
    s = np.std(num_list)
    Xmean = np.mean(num_list)
    for i in num_list:
        Xstd = (i - Xmean)/s
        
        
    return Xstd
 

Созданная мной функция возвращает только одно значение.
Затем я попробовал это:

 def standardize( num_list):
    s = np.std(num_list)
    Xmean = np.mean(num_list)
    for i in num_list:
        Xstd = (i - Xmean)/s
        list = print(Xstd)
    return
 

При этом выводятся все нужные мне значения, однако они не помещаются в список. Чего мне не хватает для создания списка?

Комментарии:

1. return [(i - Xmean)/s for i in num_list]

Ответ №1:

Добавьте их в список:

 def standardize(num_list):
    s = np.std(num_list)
    Xmean = np.mean(num_list)
    lst = []
    for i in num_list:
        Xstd = (i - Xmean)/s
        lst.append(Xstd)
        
    return lst
 

Это также можно сделать с помощью понимания списка (хотя более сложные вычисления невозможны):

 def standardize(num_list):
    s = np.std(num_list)
    Xmean = np.mean(num_list)
    return [(i - Xmean) / s for i in num_list]
 

Ответ №2:

В вашем примере

 def standardize( num_list):
    s = np.std(num_list)
    Xmean = np.mean(num_list)
    for i in num_list:
        Xstd = (i - Xmean)/s
        
        
    return Xstd
 

Цикл присваивает переменную каждый раз, а затем, когда он возвращается, он дает вам последнее присвоенное ему значение.

Попробуйте определить список, добавив к нему, а затем вернуть список, например

 def standardize( num_list):
    s = np.std(num_list)
    Xmean = np.mean(num_list)
    return_list = []
    for i in num_list:
        Xstd = (i - Xmean)/s
        return_list.append(Xstd)
        
    return return_list
 

Не проверено