我需要对一个列表的列表进行切片:
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]]
很少情况下,使用切片对象比使用列表推导式更容易阅读,而这不是其中之一。
>>> 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]
[x[0:i] for x in A]
,其中i
是1、2、3等,取决于您需要的元素数量。idx = slice(0,4)
,而不是 4
。 - Wayne Werner要么:
>>> [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]]
我是编程新手,Python是我的第一门语言。我学习编程才4到5天。我刚学习了列表和切片,并在寻找一些例子时发现了你的问题并尝试解决它。如果我的代码正确,请予以赞赏。 这是我的代码 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])
print()
函数的第三个参数存在错误。 - greybeard
slice(0,4)
确实起作用,为什么会给你每个子列表三个元素? - Padraic Cunningham