如何将嵌套列表切片两次?
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]]
嵌套列表如下:
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]]