在python中递归地转换矩阵

2024-03-29 01:59:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试如何在Python中使用map和filter递归地转换矩阵(表示为列表列表)。一、 我尝试过各种各样的实现,但是没有一个有效。以下是我目前的情况:

def transpose(matrix):
    return list(map(lambda x: [x], list(filter(lambda x: [0], matrix))))

所有其他答案使用for循环和/或zip函数,这是一个限制。在

任何指示都会有帮助的


Tags: lambda函数答案map列表forreturndef
2条回答

可以将每行的第一列映射为子列表(以成为新行),然后递归地将矩阵的其余部分(不包括第一列)传递给同一进程,直到所有行都为空:

def transpose(m):
    return m and [list(map(lambda r: r[0], m)), *transpose(list(filter(len, map(lambda r: r[1:], m))))]

因此:

^{pr2}$

退货:

^{3}$

明白了:

list(map(lambda i: list(map(lambda x: x[i], matrix)), range(len(matrix[0]))))

这个循环中没有for循环。在

相关问题 更多 >