小编Moe*_*Moe的帖子

对角列出嵌套列表中的元素

这是我的第一篇文章,我是一个非常新的这个很棒的网站.

我想在对角线上列出3x3阵列中的所有元素:

L = [  [1, 2, 3],
       [4, 5, 6],
       [7, 8, 9] ]
Run Code Online (Sandbox Code Playgroud)

预期产量:

[[7], [4, 8], [1, 5, 9], [2, 6], [3]]
Run Code Online (Sandbox Code Playgroud)

另外,我如何将它推广到任何N x N阵列?

编辑:我注意到之前已经问过这个问题但是我正在寻找一种方法,而不需要导入numpy或任何库.

编辑2:我的一个同学提供了这个解决方案,我最喜欢它:

由于您从左下角开始查找对角线,您可以通过从方块的右上角开始并最终反转解决方案来完成此操作.我的方法是首先反转L中的每一行,然后将每个元素附加到其对应的对角线列表中.这里的见解是你开始在每一行K中追加元素,而不是在最终列表的第一个子列表中,但是从indice K开始.例如在将行[4,5,6]反转到行[6,5之后4],我会将6添加到我的对角排序列表的第二个子列表中(因为这是第2行),然后我将5添加到第3个子列表,然后我将4添加到第4个子列表.但是,如果我在对角线列表中没有第四个子列表,我会添加第四个空列表,然后用4填充它.

我的解释可能不太清楚,所以这里是我的代码.

def diagonal(l):

    L = l[:]
    return_list = [[] for i in range(len(L))]

    for line in range(len(L)):
        L[line].reverse()
        i = line

        for elem in L[line]:
            if i >= len(return_list):
                return_list.append([])

            return_list[i].append(elem)
            i += 1

    return_list.reverse()
    return return_list
Run Code Online (Sandbox Code Playgroud)

python python-3.x

7
推荐指数
1
解决办法
3096
查看次数

标签 统计

python ×1

python-3.x ×1