在Python中切片列表

时间:2016-04-05 20:28:54

标签: python list slice

我需要在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]]

6 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:10)

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

>>> 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中的每个子列表,请提供前四个元素的列表。

答案 2 :(得分:1)

您可以使用列表理解,例如:[x[0:i] for x in A] 根据您需要的元素数量,i为1,2,3等。

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

答案 4 :(得分:0)

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

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

使用列表理解

答案 5 :(得分:0)

我是编程新手,Python是我的第一语言。只需4到5天即可开始学习。我刚刚了解了List和slicing,并查找了一些示例,发现了您的问题并尝试解决它,如果我的代码正确,请多谢。 这是我的代码 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])