gpt4 book ai didi

python - 列表分配去哪里了?

转载 作者:行者123 更新时间:2023-11-28 22:56:04 25 4
gpt4 key购买 nike

许多 Python 的列表方法就地操作并返回 None(我想不到,insertsort反转)。

但是,有一种行为经常让我感到沮丧。如果我创建一个通常返回一个对象的新列表,并同时插入它,则新列表“消失”:

mytup = (0, 1, 2, 3, 4)
print mytup # (0, 1, 2, 3, 4)
mylist = list(mytup)
print mylist # [0, 1, 2, 3, 4]
newlist = list(mytup).insert(0, 10)
print newlist # None

所以如果我想修改一个元组,它需要更多行:

newlist = list(mytup)
newlist.insert(0, 10)
print newlist # [10, 0, 1, 2, 3, 4]

所以我有两个问题:

  1. 这样说是否正确,当我调用列表构造函数时,它返回对象,但是当我调用带有方法的列表构造函数时,该方法用None“覆盖”返回值?同样,列表哪里?
  2. 有没有办法插入一个元组并在一行中返回一个列表?我不是想玩代码高尔夫,我只是认为这两条线在逻辑上不同,不足以值得分开。

最佳答案

insertsortreverse 就地修改列表并返回 None。在您的代码中,您实际上将该返回值存储在 newlist 变量中。

newlist = list(mytup).insert(0, 10)

并且新创建的列表(动态创建)被垃圾收集,因为不再有对它的引用。

In [151]: mytup = (0, 1, 2, 3, 4)

In [152]: lis=list(mytup) #create a new list object and add a reference to this new object

In [153]: newlist=lis.insert(0,10) #perform the insert operation on lis and store None
# in newlist

In [154]: print newlist
None

In [155]: print lis
[10, 0, 1, 2, 3, 4] #you can still access this list object with
#the help of `lis` variable.

关于python - 列表分配去哪里了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16121545/

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