在 Python 中删除列表的第一个元素

新手上路,请多包涵

我知道如果我只想删除 Python 中列表 t _的第一个元素_,我可以这样做:

 del t[0]

这几乎是最简单的。然而 :

 t = t[1:]

也有效。在我从中学习的教科书中说,使用后一种方法通常被认为是不好的做法,因为它 本身 不会删除列表的头部,但是

“切片运算符创建一个新列表,赋值使 t 引用它,但这些都不会对作为参数传递的列表产生任何影响。”

为什么这样不好?你能举出一个这样的方法会显着改变功能的例子吗?提前致谢。

原文由 user7750560 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 615
1 个回答

这不是一个好主意有多种原因:

  • 创建新列表只会使创建新列表和释放旧列表的不必要工作。在这两个步骤之间,使用了两倍的内存(因为原始列表和新列表同时存在,就在分配之前)。

  • 如果其他内容引用同一个列表,则不会更新: u = t; del t[0] 同时更改 ut 。但是 u = t; t = t[1:] 将新列表分配给 t ,同时保持 u 不变。

  • 最后, del t[0] 比更不透明的 t = t[1:] 更清楚其删除元素的意图。

原文由 Raymond Hettinger 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题