【问题标题】:Find sublists of innermost lists in 3d list在 3d 列表中查找最内层列表的子列表
【发布时间】:2018-03-03 17:17:11
【问题描述】:

我有一个列表l=[[[1,2,3],[4,5,6]],[[7,8,9],[9,1,2]]] 如何仅使用切片获得列表[[[1,2],[4,5]],[[7,8],[9,1]]]?我尝试了l[:][:][:2],但它给了我整个 3d 列表。

【问题讨论】:

标签: python python-2.7


【解决方案1】:

您可以使用嵌套列表推导,当然这不仅使用切片,而且希望仍然有用:

>>> lst = [[[1,2,3],[4,5,6]],[[7,8,9],[9,1,2]]]
>>> [[subsub[:-1] for subsub in sublist] for sublist in lst]
[[[1, 2], [4, 5]], [[7, 8], [9, 1]]]

【讨论】:

  • 我要指出的是,仅切片实际上是不可能的。
【解决方案2】:

更新:刚刚注意到您的外部列表不需要切片。在这种情况下:

由于您使用的是 Python2,map 在这个上运行良好:

>>> from operator import itemgetter
>>> ft = itemgetter(slice(2))
>>> 
>>> map(map, (ft, ft), l)
[[[1, 2], [4, 5]], [[7, 8], [9, 1]]]                                                                                

下面的解决方案错误地假设输入列表是3 x 3 x 3 并被分割为2 x 2 x 2。我会把它留在这里,以防有人在寻找那个案例。

>>> from operator import itemgetter
>>> ft = itemgetter(slice(2))
>>> 
>>> map(map, (ft, ft), map(ft, l[:2]))
[[[1, 2], [4, 5]], [[7, 8], [9, 1]]]

【讨论】:

    猜你喜欢
    • 2020-07-17
    • 2023-01-02
    • 1970-01-01
    • 1970-01-01
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多