可能重复:
切片整个列表的切片赋值和直接赋值有什么区别?
我没有钱上学,所以我一边在高速公路上的收费站轮班工作,一边自学一些 Python(长时间的夜晚,几乎没有顾客)。(顺便说一句:Coursera 应该翻译成所有语言......)
我在这里读过,如果我有一个清单l
:
l = ['a', '', 'b']
我想像这样过滤掉空字符串:
l = [c for c in l if c]
或者像这样:
l = filter(lambda x: x, l)
建议改为这样做:
l[:] = ... # either method 1 or method 2 above
不要“丢失”对 first 的引用l
,尤其是在其他变量指向它的情况下。
我的问题:
为什么在这种情况下
l[:]
表示“的内容l
”,允许专门重新分配给“相同”l
,而在其他地方我认为它是“相同大小的切片”,方便地为我创建 l 的副本?我是否误解了如何完全使用
l[:]
相同列表重新分配?
我想如果我有一个l
并且我要求一个l[:]
,后者是原件的实际副本l
?
参考:《学习Python》->复制列表有多种方法,包括使用内置列表功能和标准库复制模块。也许最常见的方法是从头到尾切片
谢谢!