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