我有一个列表l=[[[1,2,3],[4,5,6]],[[7,8,9],[9,1,2]]]
如何使用切片获取列表[[[1,2],[4,5]],[[7,8],[9,1]]]
?我尝试了l[:][:][:2]
,但它给了我整个3D列表。
你可以使用嵌套列表理解,当然这不仅仅是使用切片,但希望仍然有用:
>>> 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]]]
更新:刚刚注意到你的外部列表不需要切片。在这种情况下:
因为你在使用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]]]