【问题标题】:This iterator instead of returning N elements returns always 4. What's going on?这个迭代器总是返回 4 而不是返回 N 个元素。这是怎么回事?
【发布时间】:2018-11-29 09:33:18
【问题描述】:
    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 有多长,它总是给出一个带有 4 个数字的result_list。我也尝试了这个循环,但给出了相同的结果:

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

有什么线索吗?

【问题讨论】:

    标签: python list for-loop moving-average


    【解决方案1】:

    我不完全确定这些函数的作用是什么,如果你能给出一个解释就好了。为了回答您关于 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:
    

    祝你好运!

    【讨论】:

    • 谢谢,切片是问题所在,正如克里斯蒂安注意到的那样,我试图跳过
    【解决方案2】:

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

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

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

    【讨论】:

    • 看清楚,你完全明白了我尝试但未能做到的:跳过前两个元素,非常感谢这是我第一次编码,我很绝望
    猜你喜欢
    • 2018-06-20
    • 2022-07-18
    • 2013-07-28
    • 1970-01-01
    • 2012-06-26
    • 2011-06-28
    • 2020-04-03
    • 2011-08-25
    • 1970-01-01
    相关资源
    最近更新 更多