gpt4 book ai didi

Python:为什么内联分配列表值会返回 "None"元素的列表?

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

我还是 Python 的新手,我一直在制作一个小函数来反转列表列表,包括原始列表和内部列表。这是我的代码:

def deep_reverse(L):
L.reverse()
L = [i.reverse() for i in L]

现在这段代码可以完美运行,但如果我做一个小改动并重新排列如下代码行:

def deep_reverse(L):
L = [i.reverse() for i in L]
L.reverse()

突然间它停止工作了!它只反转内部列表而不是原始列表。将一些调试 print() 语句放在里面,我可以看到第一个代码在第一行之后反转原始列表并打印出来,但第二个代码实际上在反转列表后打印一个包含“None”作为元素的列表。任何人都可以解释为什么会出现这种行为以及这两种代码之间的区别是什么?

最佳答案

reverse() 函数就地反转列表并返回 None,这解释了奇怪的行为。正确的实现是:

def deep_reverse(L):
ans = [i[::-1] for i in L]
ans.reverse()
return ans

此外,将参数重新分配和/或更改为函数不是一个好主意,它可能会导致意外结果。有时标准库中的函数出于效率原因这样做(例如,sort()reverse()),这没关系 - 但它可能会导致混淆,例如你刚刚经历过的。除非绝对必要,否则您的代码不必以这种方式编写。

关于Python:为什么内联分配列表值会返回 "None"元素的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45092656/

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