gpt4 book ai didi

python - 循环并附加到列表

转载 作者:太空宇宙 更新时间:2023-11-04 10:42:01 25 4
gpt4 key购买 nike

def makelist():
list = []
initial = [0, 100]
a = 1
while a <= 10:
new_num = (initial[0] + initial[1])//2
if new_num%2 == 0:
initial[1] = new_num
else:
initial[0] = new_num
list.append(initial)
a += 1
return list

为什么上面的代码返回:

[[43, 44], [43, 44], [43, 44], [43, 44], [43, 44], [43, 44], [43, 44], [43, 44],  [43, 44], [43, 44]]

而不是:

[[0, 50], [25, 50], [37, 50], [43, 50], [43, 46], [43,44], [43, 44], [43, 44], [43, 44], [43, 44]]

即。连续划分而不是最终划分 10 倍以上。

谢谢

最佳答案

首先,绝不使用内置类型名称命名您的变量。在你的情况下 list。你的程序没有按预期工作,因为

list.append(initial)

您一次又一次地将引用附加到同一个列表。最后,列表中的所有元素都指向同一个列表 initial。要解决此问题,您可以像这样创建 initial 的副本并将其附加

list.append(initial[:])

查看此图 https://www.lucidchart.com/documents/edit/43c8-0c30-5288c928-a4fe-105f0a00c875 .这可能有助于您更好地理解。

关于python - 循环并附加到列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20031354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com