【问题标题】:functionality of del statementdel 语句的功能
【发布时间】:2021-08-10 02:29:27
【问题描述】:

我想知道为什么如果我将一个包含多个字符的字符串拆分为一个列表,那么del 函数只有在我将列表保存到一个新对象时才有效? 示例:

x = 'Hello world'
del x.split()[0]
print(x)
out: Hello world
y = x.split()
del y[0]
print(y)
out: ['world']

【问题讨论】:

  • @Matthias 抱歉,已更新
  • 你不能改变一个 str,它们是“不可变的”。您可以更改列表,它们是“可变的”。 del x.split()[0] 语句首先创建了一个列表,然后它删除了列表中的第一个元素,然后这个列表被遗忘了,因为没有对它的引用。编辑:嗯,是的,切普纳在他的回答中说了什么。

标签: python string split del


【解决方案1】:

首先,x.split() 创建一个完全独立于x 的列表(即使忽略str 值是不可变的事实);修改该列表不会以任何方式影响x

其次,您没有保存对x.split() 返回的列表的引用,因此即使del x.split()[0] 确实改变了该列表,一旦语句完成,整个列表 仍受制于垃圾回收。

在您的第二个示例中,您确实引用了x.split(0) 的返回值,因此您可以观察del 的结果。

【讨论】:

    最近更新 更多