列表非变异方法

List non-mutating method

提问人:kubaSpolsky 提问时间:10/14/2022 更新时间:10/14/2022 访问量:34

问:

python 中是否有任何方法不是改变原始列表,而是返回一个新对象?

在 JavaScript 中,至少有一个:

const originalArray = [1,2,3]
originalArray.concat(4) // returns a new array
可变

评论

0赞 jordanm 10/14/2022
newarray = originalArray + [4]
0赞 Codist 10/14/2022
const 不是 Python 关键字

答:

3赞 Óscar López 10/14/2022 #1

在 Python 中,这将返回一个新列表:

originalArray = [1,2,3]
originalArray + [4]

或者,如果要创建列表的新副本,请使用切片:

originalArray[:]

列表推导式还将创建一个新列表:

[x for x in originalArray]

这是另一种方式:

import copy
copy.copy(originalArray)

还有内置方法,如 Ronald 的回答所示。copy()

评论

0赞 Codist 10/14/2022
或者内置的 copy() 方法
1赞 Ronald van Elburg 10/14/2022 #2

您可以简单地使用 copy 方法:

list1 = ['a','b','c']
list2 = list1.copy()

list1 is list2, list1 == list2

返回

(False, True)

显示您有具有相同内容的新对象。