输入未静音/正确指向其在函数中的新赋值

问题描述 投票:0回答:1

对于模糊的标题,我很抱歉。我想在函数中输入一系列数字,我希望该函数输出前两个数字的比例。问题是'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)。有谁知道我做错了什么?谢谢

python python-3.x
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.