首页 > 解决方案 > 如何对每个包含两个列表的列表进行切片?

问题描述

我正在尝试选择每行中的第一个列表并使用切片方法将它们作为列表返回:

l = [[[0, 1, 1, 0, 0, 0, 2, 1, 2, 0, 1, 2], [0.0]],
     [[1, 1, 0, 2, 0, 0, 0, 1, 2, 1, 2, 2], [0.0]],
     [[0, 2, 2, 1, 2, 1, 0, 2, 2, 2, 1, 0], [0.0]],
     [[1, 1, 0, 1, 2, 2, 2, 2, 0, 0, 2, 2], [0.0]],
     [[1, 2, 2, 0, 0, 2, 1, 1, 1, 2, 1, 0], [0.0]],
     [[0, 2, 1, 2, 0, 1, 2, 1, 1, 2, 2, 2], [0.0]],
     [[0, 0, 2, 0, 0, 1, 1, 1, 1, 0, 0, 2], [0.0]],
     [[0, 2, 1, 2, 2, 0, 0, 0, 0, 0, 1, 2], [0.0]],
     [[1, 1, 1, 2, 1, 2, 2, 1, 0, 2, 0, 2], [0.0]],
     [[0, 1, 1, 0, 0, 0, 1, 2, 1, 0, 1, 0], [0.0]]]

# i want to get this 

l1 = [[0, 1, 1, 0, 0, 0, 2, 1, 2, 0, 1, 2],
     [1, 1, 0, 2, 0, 0, 0, 1, 2, 1, 2, 2],
     [0, 2, 2, 1, 2, 1, 0, 2, 2, 2, 1, 0],
     [1, 1, 0, 1, 2, 2, 2, 2, 0, 0, 2, 2],
     [1, 2, 2, 0, 0, 2, 1, 1, 1, 2, 1, 0],
     [0, 2, 1, 2, 0, 1, 2, 1, 1, 2, 2, 2],
     [0, 0, 2, 0, 0, 1, 1, 1, 1, 0, 0, 2],
     [0, 2, 1, 2, 2, 0, 0, 0, 0, 0, 1, 2],
     [1, 1, 1, 2, 1, 2, 2, 1, 0, 2, 0, 2],
     [0, 1, 1, 0, 0, 0, 1, 2, 1, 0, 1, 0]]

标签: pythonlistslicepython-3.6

解决方案


这应该适合你:

list(map(lambda x: x[0], l))

输出:

[[0, 1, 1, 0, 0, 0, 2, 1, 2, 0, 1, 2],
 [1, 1, 0, 2, 0, 0, 0, 1, 2, 1, 2, 2],
 [0, 2, 2, 1, 2, 1, 0, 2, 2, 2, 1, 0],
 [1, 1, 0, 1, 2, 2, 2, 2, 0, 0, 2, 2],
 [1, 2, 2, 0, 0, 2, 1, 1, 1, 2, 1, 0],
 [0, 2, 1, 2, 0, 1, 2, 1, 1, 2, 2, 2],
 [0, 0, 2, 0, 0, 1, 1, 1, 1, 0, 0, 2],
 [0, 2, 1, 2, 2, 0, 0, 0, 0, 0, 1, 2],
 [1, 1, 1, 2, 1, 2, 2, 1, 0, 2, 0, 2],
 [0, 1, 1, 0, 0, 0, 1, 2, 1, 0, 1, 0]]

推荐阅读