首页 > 解决方案 > 如何在没有导入的情况下 2d 截断 3d python 列表

问题描述

没有麻木

所以我在这里有一个 3d 列表:

list = [
        [
            # red (5 rows x 10 columns)
            [10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
            [10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
            [10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
            [10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
            [10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
        ],
        [
            # green (5 rows x 10 columns)
            [10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
            [10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
            [10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
            [10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
            [10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
        ],
        [
            # blue (5 rows x 10 columns)
            [10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
            [10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
            [10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
            [10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
            [10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
        ],
    ]

基本上,(row,column) 中的每个索引 (x,y) 都是具有 r,g,b 的像素。这个列表有 5x10=50 像素。我想截断它,使列和行达到指定的数量,例如 row=3,column=7,如下所示:

list = [
        [
            # red (3 rows x 7 columns)
            [10, 10, 10, 10, 10, 10, 10],
            [10, 10, 10, 10, 10, 10, 10],
            [10, 10, 10, 10, 10, 10, 10],
        ],
        [
            # green (3 rows x 7 columns)
            [10, 10, 10, 10, 10, 10, 10],
            [10, 10, 10, 10, 10, 10, 10],
            [10, 10, 10, 10, 10, 10, 10],
        ],
        [
            # blue (3 rows x 7 columns)
            [10, 10, 10, 10, 10, 10, 10],
            [10, 10, 10, 10, 10, 10, 10],
            [10, 10, 10, 10, 10, 10, 10],
        ],
    ]

标签: pythonarraysmultidimensional-array

解决方案


truncated = [[row[:7] for row in color[:3]] for color in list]

您不应该将list其用作变量名,因为您正在覆盖内置函数list,这可能会导致之后代码出现意外行为


推荐阅读