【发布时间】:2015-06-18 15:45:09
【问题描述】:
只有可变对象可以就地改变;如果您更改字符串、元组和其他对象,它们将始终需要创建新对象。 就地在这里是什么意思,为什么元组,字符串在这里是特例
【问题讨论】:
-
就地是 hic et nunc - 你可以随心所欲地操纵它们。 del your_list[i] 将删除列表中的第 i 个项目,这将对列表对象进行实际更改。但是你不能对字符串做同样的事情。如果您想将 a = "string" 更改为其他内容,则必须创建另一个 b 变量,将受控字符串对象保存在其中。如您所料, a 不变。你可以破坏或分配这个变量保存的内存位置,给 b,比如 a=b。
-
@Martijn:欺骗页面上没有解释“就地”这个短语。
-
@unutbu:这里真的重要吗?问题在于理解这两种对象之间的区别是什么。
-
@Martijn:区别对你来说可能并不重要,因为你知道“就地”和“可变”是什么意思,但对于试图了解这些术语含义的人来说可能不是那么清楚.寻找“就地”定义的人不会在欺骗页面上找到它,因为欺骗页面从未提及该术语。由于术语“就地”和“可变”是不可替代的,我认为直接解决 OP 的问题会很好。
-
@unutbu:我看到最佳答案已经使用了“就地”一词。在我看来,这只是一种表达。当概念已经足够好时,我仍然不确定是否需要在这里解释这个习语。重新评估这篇文章和欺骗,我认为没有必要单独解释,真的。
标签: python