抱歉,标题模糊。我想在函数中输入数字序列,并希望该函数输出前两个数字的比率。问题是“ 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)。有人知道我在做什么错吗?谢谢
答案 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)