如何截断列表?

Amb*_*sio 37 python list

如果我有一个列表并想截断它所以它不超过100项,我该怎么做?

Ned*_*der 74

要修改列表(而不是制作列表的较短副本),请使用:

del l[100:]
Run Code Online (Sandbox Code Playgroud)

  • 使用[:100]进行切片通常是一种更好的解决方案,因为它具有恒定的性能,但对于较大的列表,del a [100:]会变慢. (4认同)
  • `del l[100:]` 似乎不会产生元素的副本(`id(l)` 不会改变,并且在较低级别,我不明白为什么需要副本),这将给出使用此解决方案的另一个理由。`l[:100]` 是否会产生元素的副本?即使在“l[:] = l[:100]”的情况下? (3认同)
  • kefeizhou:这可能取决于你真正想要的东西.如果你真的不再需要超过前100个的条目,你应该删除它们.说它通常是一个更好的想法,让他们躺在身边因为这比删除它们花费更少的时间似乎奇怪的推理给我. (2认同)

GWW*_*GWW 13

您可以使用列表切片:

a = a[0:100]
Run Code Online (Sandbox Code Playgroud)

  • @Confusion:如果`a`是列表的唯一引用,则余数会自动收集垃圾. (6认同)

小智 7

items[:100]提到其他让你包含了前100项的新列表items.如果要在适当位置修改列表,使用items[:] = items[:100](切片分配)或while len(items) > 100: items.pop()del items[100:]按照Ned Batchelder的提议使用.