我有一个名为[[1,2,3,4], [1,2,3,4], [1,2,3,4], [1,2,3,4]]
的列表,其名称为somelist
。我想做somelist[:2][:2]
并返回[[1,2], [1,2]]
。因此它会对列表进行切片,然后对列表进行切片并返回该列表。甚至可以在python的一行中执行此操作吗?
答案 0 :(得分:8)
您可以使用list comprehension执行此操作。我更改了您的示例输入以使其更清晰:
>>> l = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]
>>> print [x[:2] for x in l[:2]]
[[1, 2], [5, 6]]
答案 1 :(得分:1)
使用numpy:
可以轻松实现多维切片import numpy
a = numpy.array([[1,2,3,4], [1,2,3,4], [1,2,3,4], [1,2,3,4]])
print(a[:2,:2])
答案 2 :(得分:0)
您的列表在4x4矩阵中总是16个元素吗?如果您只是想获得4个右下角元素,请尝试:
>>> l = [[1,2,3,4], [1,2,3,4], [1,2,3,4], [1,2,3,4]]
>>> print [l[2][:2], l[3][:2]]
[[1, 2], [1, 2]]
否则,对于一般解决方案,其他人提到的列表理解会更好。
对两者进行基准测试并查看哪个更快适合您的用例会很有趣。虽然这对我来说听起来不成熟。