这个迭代器而不是返回 N 个元素 returns 总是 4。这是怎么回事?

This iterator instead of returning N elements returns always 4. What's going on?

    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

有线索吗?

我不完全确定这些函数试图做什么,如果你能给出解释就更好了。要回答有关 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:

祝你好运!

data_list[:2] 将生成数组的前 2 个元素。

data_list[2:] 将跳过数组的前 2 个元素并生成其余元素。

注意“:”在数组切片中的位置。