var [:] = []与var = []有何不同?

tonypdmtr:

我通常了解切片在赋值运算符左右的行为。

但是,我已经在Python(3.8.0)手册中看到了这一点,并试图找出我所缺少的东西。

通过将所有元素替换为空列表来清除列表

字母[:] = []

与just有letters = []什么不同

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

我看到一些不相关的答案。因此,希望明确起见,问题不在于[:]切片的含义,而在于将列表分配给一个。

夸兰纳

这段代码演示了正在发生的事情:

original = ['a','b','c']

letters = original

print('Same List')
print(original)
print(letters)

letters = []

print('Different lists')
print(original)
print(letters)

letters = original

letters[:] = []

print('Same list, but empty')
print(original)
print(letters)

输出:

Same List
['a', 'b', 'c']
['a', 'b', 'c']
Different lists
['a', 'b', 'c']
[]
Same list, but empty
[]
[]

代码的第一部分:letters = original表示两个变量都引用相同的列表。

第二部分:letters = []显示两个变量现在引用不同的列表。

第三部分:letters = original; letters[:] = []从两个变量再次引用同一列表开始,但随后列表本身被修改(使用[:]),并且两个变量仍引用同一列表,但现在已修改列表。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章