Python 中列表的切片

问题描述 投票:0回答:6

我需要对列表列表进行切片:

A = [[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]]
idx = slice(0,4)
B = A[:][idx]

上面的代码没有给我正确的输出。

我想要的是:

[[1,2,3],[1,2,3],[1,2,3]]

python list slice
6个回答
26
投票

很少使用切片对象比使用列表理解更容易阅读,这不是其中之一。

>>> A = [[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]]
>>> [sublist[:3] for sublist in A]
[[1, 2, 3], [1, 2, 3], [1, 2, 3]]

这非常清楚。对于

A
中的每个子列表,给我前三个元素的列表。


21
投票

使用 numpy 非常简单 - 你只需执行切片即可:

In [1]: import numpy as np

In [2]: A = np.array([[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]])

In [3]: A[:,:3]
Out[3]: 
array([[1, 2, 3],
       [1, 2, 3],
       [1, 2, 3]])

当然,您可以将

numpy.array
转换回
list
:

In [4]: A[:,:3].tolist()
Out[4]: [[1, 2, 3], [1, 2, 3], [1, 2, 3]]

3
投票
A = [[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]]

print [a[:3] for a in A]

使用列表理解


1
投票

您可以使用列表理解,例如:

[x[0:i] for x in A]
其中
i
是 1,2,3 等,具体取决于您需要的元素数量。


0
投票

要么:

>>> [a[slice(0,3)] for a in A]
[[1, 2, 3], [1, 2, 3], [1, 2, 3]]

或者:

>>> [list(filter(lambda x: x<=3, a)) for a in A]
[[1, 2, 3], [1, 2, 3], [1, 2, 3]]

-1
投票

这是我的代码:

A = [[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]]
print(A[0][0:3],A[1][0:3],A[1][0:3])
© www.soinside.com 2019 - 2024. All rights reserved.