Python 中的列表切片列表

Slicing list of lists in Python

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

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

您可以使用列表理解,例如:[x[0:i] for x in A] 其中 i 是 1,2,3 等,具体取决于您需要多少元素。

或者:

>>> [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]]

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

>>> 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 中的每个子列表,给我前三个元素的列表。

使用 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]]
A = [[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]]

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

使用列表理解

我是编程新手,Python 是我的母语。开始学习只有 4 到 5 天。我刚刚了解了列表和切片并寻找一些示例我发现了您的问题并尝试解决它如果我的代码正确,请多谢。 这是我的代码 A = [[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]] 打印(A[0][0:3],A[1][0:3],A[1][0:3])