Этот итератор вместо возврата N элементов возвращает всегда 4. Что происходит? - PullRequest
0 голосов
/ 29 ноября 2018
    result_list = [result, first_result_value]
    for i in data_list[:2]:
        i = ((i - result_list[-1]) * multiplier + result_list[-1])   
        result_list.append(float(i))
return result_list

Независимо от того, как долго data_list, он всегда дает result_list с 4 числами.Я также пробовал это для цикла, но выдает то же самое:

for i in data_list[:2]:
    zz = ((i - result_list[-1]) * multiplier + result_list[-1])   
    result_list.append(float(zz))
return result_list

Любая подсказка?

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

data_list [: 2] выдаст первые 2 элемента массива.

data_list [2:] пропустит первые 2 элемента массива и выдаст оставшиеся элементы.

Обратите внимание на положение «:» в срезе массива.

0 голосов
/ 29 ноября 2018

Я не совсем уверен, что эти функции пытаются сделать, было бы неплохо, если бы вы могли дать объяснение.Чтобы ответить на ваш вопрос относительно длины списка ema_list, который мы можем проверить, если вы на самом деле меняете его.

Здесь вы инициализируете список ema_list с двумя значениями:

ema_list = [sma, first_ema_value]

После этого вы повторяете два шагов в цикле

for i in data_list[:2]:

Итак, чтобы ответить на ваш вопрос: причина в том, что результирующий список ema_list имеет длину 4, состоит в том, что вы инициализируете его двумя значениями изатем добавьте еще 2 значения.Если вы хотите перебрать все значения в data_list, измените

for i in data_list[:2]:

на

for i in data_list:

Удачи!

...