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

How to slice a nested list twice?

嵌套列表如下:

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

我需要能够将此列表切片为:

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

我一直在努力:

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