3263得票24回答
如何克隆一个列表,以便在赋值后不会意外地改变?

使用new_list = my_list时,对new_list的任何修改都会每次都改变my_list。为什么会这样,我该如何克隆或复制列表以防止这种情况发生?

946得票17回答
子列表之间相互影响:修改一个列表中的子列表,其他列表中的同名子列表也会随之改变

我创建了一个列表的列表: >>> xs = [[1] * 4] * 3 >>> print(xs) [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]] 然后,我改变了最内层之一的值: >>> xs[...

624得票18回答
除了允许常量成员函数修改数据成员之外,'mutable'关键字还有其他用途吗?

前段时间,我遇到了一些代码,其中使用了mutable关键字来标记类的数据成员。据我所见,它只是允许你在一个带有const限定的成员方法中修改成员变量。 class Foo { private: mutable bool done_; public: voi...

554得票16回答
为什么可变结构体被认为是“邪恶”的?

在 Stack Overflow 上的讨论中,我已经多次看到关于可变结构体是“邪恶”的评论(例如这个问题的答案中)。 在 C# 中,可变性和结构体有什么实际问题?

208得票19回答
不可变类型 vs 可变类型

我对不可变类型感到困惑。我知道float对象被认为是不可变的,我的书上有这样一个例子:class RoundFloat(float): def __new__(cls, val): return float.__new__(cls, round(val, 2)) 由于类...

205得票17回答
为什么Java和.NET中的字符串不可变?

为什么Java和.NET(以及其他语言)决定将String定义为不可变的?他们为什么不让它是可变的呢?

202得票12回答
可变 vs 不可变对象

我试图理解可变对象和不可变对象的区别。使用可变对象常常受到批评(例如从方法返回字符串数组),但我不太明白这样做的负面影响是什么。在使用可变对象方面有哪些最佳实践?是否应该尽可能避免使用可变对象?

167得票14回答
Python中是否存在可变的命名元组?

有人能修改namedtuple或者提供一个可变对象的替代类吗? 主要是出于可读性的原因,我想要一个类似于namedtuple的东西,它可以处理可变对象。from Camelot import namedgroup Point = namedgroup('Point', ['x', 'y'])...

137得票4回答
在变量名前面和":"后面放置"mut"有什么区别?

以下是我在 Rust 文档中看到的两个函数签名:fn modify_foo(mut foo: Box<i32>) { *foo += 1; *foo } fn modify_foo(foo: &mut i32) { *foo += 1; *foo } 为什么 mut 放置位...

126得票5回答
从数组创建可变列表?

我有一个数组,想要将其转换成 List,以便修改数组的内容。 Stack Overflow 上有很多关于 Arrays.asList() 的问题与答案,它只提供了底层数组的 List 视图,并且试图操作结果 List 通常会抛出 UnsupportedOperationException 异...