我知道如果我只想删除 Python 中列表 t _的第一个元素_,我可以这样做:
del t[0]
这几乎是最简单的。然而 :
t = t[1:]
也有效。在我从中学习的教科书中说,使用后一种方法通常被认为是不好的做法,因为它 本身 不会删除列表的头部,但是
“切片运算符创建一个新列表,赋值使 t 引用它,但这些都不会对作为参数传递的列表产生任何影响。”
为什么这样不好?你能举出一个这样的方法会显着改变功能的例子吗?提前致谢。
原文由 user7750560 发布,翻译遵循 CC BY-SA 4.0 许可协议
这不是一个好主意有多种原因:
创建新列表只会使创建新列表和释放旧列表的不必要工作。在这两个步骤之间,使用了两倍的内存(因为原始列表和新列表同时存在,就在分配之前)。
如果其他内容引用同一个列表,则不会更新:
u = t; del t[0]
同时更改 u 和 t 。但是u = t; t = t[1:]
将新列表分配给 t ,同时保持 u 不变。最后,
del t[0]
比更不透明的t = t[1:]
更清楚其删除元素的意图。