【问题标题】:Python: Removing a last element from list of list?Python:从列表中删除最后一个元素?
【发布时间】:2016-07-02 14:58:51
【问题描述】:

给定一个列表A。我想删除最后一个元素(b,'zz')of 每个列表与列表A

A = [ [(a,'rr'),(c,'rr'),(d,'rr'),(b,'zz')],
      [(g,'rr'),(h,'rr'),(e,'rr'),(b,'zz')],
      [(c,'rr'),(r,'rr'),(s,'rr'),(b,'zz')] ]

我试过了。

for i in A:
    N = del i[-1]

但它不起作用。

【问题讨论】:

  • 只是del i[-1] 没有分配。
  • 请始终包含您收到的完整错误消息,它不起作用不是有效的问题描述。在这种情况下,您会收到 语法错误 异常,因为 del 是一个语句,不能在表达式中使用。

标签: python list python-3.x text


【解决方案1】:

您可以使用list.pop() 方法:

for i in A:
    i.pop()

参考:https://docs.python.org/2/tutorial/datastructures.html

【讨论】:

    【解决方案2】:

    您可以简单地切片直到列表理解中的最后一项:

    A = [l[:-1] for l in A]
    

    【讨论】:

    • 切片和列表理解的问题在于它涉及到列表复制,这会消耗时间和空间。只有元组列表而不是列表列表才有必要这样做。
    • @AntoinePinsard 您的积分有效。通过使用A[:] 分配给原始列表,仍然可以节省一些空间。感谢您的关注。
    【解决方案3】:

    del 是一个语句,必须相应地使用。最重要的是,它不能用于作业。

    只需删除分配:

    for i in A:
      del i[-1]
    

    【讨论】: