gpt4 book ai didi

python - 在 python 函数中使用列表

转载 作者:行者123 更新时间:2023-11-30 22:44:29 25 4
gpt4 key购买 nike

我无法理解下面代码中发生的事情

#swaps list in index 1
L=[[1,2],[3,4]]
def swap(X):
beta=X[:]
beta[1][0],beta[1][1]=beta[1][1],beta[1][0]
return beta
def code(W):
alpha=W[:]
print swap(alpha)
return swap(alpha)
print code(L)

它给出了输出

[[1, 2], [4, 3]]
[[1, 2], [3, 4]]

当我期待

[[1, 2], [4, 3]]
[[1, 2], [4, 3]]

最佳答案

原因是

alpha = W[:]    # and also beta=X[:]

仅创建列表的浅拷贝。这意味着实际上仅复制外部列表。该外部列表再次包含对更多列表的引用 - 这些列表不会被复制(仅复制对它们的引用)。

因此,您的副本 alphabeta 始终引用相同嵌套列表并交换这些列表中的元素。这就是为什么您可以在调用后看到交换发生两次

swap(alpha)

两次。

如果您想进行深层复制,可以使用copy模块并写入

alpha = copy.deepcopy(W)   # instead of alpha = W[:]

beta= copy.deepcopy(X)     # instead of beta = X[:]

这样做会给你预期的输出:

[[1, 2], [4, 3]]
[[1, 2], [4, 3]]

关于python - 在 python 函数中使用列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41520788/

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