我通常了解切片在赋值运算符左右的行为。
但是,我已经在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] 删除。
我来说两句