gpt4 book ai didi

python - `var[:] = []` 与 `var = []` 有什么不同?

转载 作者:行者123 更新时间:2023-12-02 06:08:19 25 4
gpt4 key购买 nike

我通常理解切片在赋值运算符左侧和右侧的行为方式。

但是,我在 Python (3.8.0) 手册中看到了这一点,并试图找出我缺少的内容。

clear the list by replacing all the elements with an empty list

letters[:] = []

这与 letters = [] 有什么不同?

(搜索 [:] 并不容易,因为 stackoverflow 认为您正在寻找标签。因此,如果已经有答案,我无法找到它。)

我看到一些相当不相关的答案。因此,希望澄清一下,问题不在于 [:] 是什么。 slice 的意思是,而不是将列表分配给一个。

最佳答案

赋值var = []将名称var绑定(bind)到新创建的列表。名称 var 之前可能已绑定(bind)到任何其他列表,也可能未绑定(bind)到任何其他列表,如果已绑定(bind),则该列表将保持不变。

另一方面,var[:] = [] 期望 var 已绑定(bind)到列表,并且该列表会就地更改。

这就是这两种情况下的行为不同的原因:

var1 = [1, 2, 3]
var2 = var1
var1 = []
print(var1, var2) # prints [] [1, 2, 3]

var1 = [1, 2, 3]
var2 = var1
var1[:] = []
print(var1, var2) # prints [] []

关于python - `var[:] = []` 与 `var = []` 有什么不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58729523/

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