如何将嵌套列表切片两次?



使用嵌套列表:

ex_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

我需要能够切片这个列表:

[[1, 2], [4, 5]]

I've been try:

list(ex_list[:2][:2])

但这不起作用。我显然做了一些非常错误的事情,但由于某种原因,使用逗号也不起作用,所以我还没有找到解决方案。

您需要将元素单独切片到外部列表;最好先处理外部列表,以避免不必要的内部切片。

[inner[:2] for inner in ex_list[:2]]

你应该尝试使用推导式:试一试:

[i[:2] for i in ex_list[:2]]

代码:

ex_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print([i[:2] for i in ex_list[:2]])

输出:

[[1, 2], [4, 5]]

使用numpy是一个选项吗?

import numpy as np
ex_list = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(ex_list[:2,:2].tolist()) # [[1, 2], [4, 5]]

第一个:2对外部列表进行切片,第二个对每个内部列表进行切片。

你可以试试map

l = list(map(lambda lst: lst[:2], ex_list))
print(l)
[[1, 2], [4, 5], [7, 8]]

或与itemgetter

from operator import itemgetter
l = list(map(itemgetter(slice(0,2)), ex_list))
print(l)
[[1, 2], [4, 5], [7, 8]]

最新更新