如何切片在python中切片的列表?

时间:2011-06-25 21:58:53

标签: python slice

我有一个名为[[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的一行中执行此操作吗?

3 个答案:

答案 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]]

否则,对于一般解决方案,其他人提到的列表理解会更好。

对两者进行基准测试并查看哪个更快适合您的用例会很有趣。虽然这对我来说听起来不成熟。