输入未正确静音/指向功能中的新分配

时间:2018-08-31 02:39:55

标签: python python-3.x

抱歉,标题模糊。我想在函数中输入数字序列,并希望该函数输出前两个数字的比率。问题是“ my_seq”没有变化;它只是保持其初始值。

到目前为止,我的代码如下:

def consecutive_elem_ratio(seq):
    temp = []
    for i,v in enumerate(seq):
        temp.append(v/seq[i-1])
    seq = temp
    seq.pop(0)

    print(seq)


my_seq = [1, 2, 4, 8, 16, 32, 64, 128]
consecutive_elem_ratio(my_seq)
print(my_seq)

最后我要输出print(my_seq):

[2.0,2.0,2.0,2.0,2.0,2.0,2.0]

而不是

再次[1、2、4、8、16、32、64、128]。

即我希望my_seq指向函数中的print(seq)。有人知道我在做什么错吗?谢谢

1 个答案:

答案 0 :(得分:1)

您的问题是,使用语句seq = temp,您正在将另一个对象分配给变量seq,但没有修改原始对象最初名为seq

一种解决方法是实际重新填充列表。

def consecutive_elem_ratio(seq):
    temp = []
    for i,v in enumerate(seq):
        temp.append(v/seq[i-1])

    for i in range(len(temp)):
        seq[i] = temp[i]  # Overwrite the elements of the list, not the list itself

    seq.pop(0)

    print(seq)