gpt4 book ai didi

python - 列表输出中未附加任何值

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

def foo(i, x=[]):
x.append(x.append(i))
return x
for i in range(3):
y = foo(i)
print(y)
print(y)

这会导致

[0, None]
[0, None, 1, None]
[0, None, 1, None, 2, None]
[0, None, 1, None, 2, None]

为什么列表中附加了None?我检查了有关此主题的一些线程,不幸的是我仍然无法理解为什么打印 None

如果我将 x.append(x.append(i)) 替换为 x.append(i) ,则 None 就会消失。这是有道理的,但我仍然不清楚为什么 x.append(x.append(i)) 添加 None

最佳答案

亚历克斯是正确的。总而言之,append(value) 没有返回值,因此将返回 None。如果您希望在半Pythonic庄园中附加返回值,请使用:y = x = x + [value]这会将y设置为等于x,并在两者中附加值。

然而,除此之外,部分问题是您使用的是可变的默认参数。这意味着每次使用默认值 x 调用函数时,列表 x 将与上次调用完成时相同。考虑以下因素

def add(num, x=[]):
x.append(num)
print x

调用add(4)将打印[4],然后调用add(5)将打印[4, 5]

我希望这会有所帮助。

关于python - 列表输出中未附加任何值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36682910/

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