2024-03-29 01:59:02 发布
网友
我一直在尝试如何在Python中使用map和filter递归地转换矩阵(表示为列表列表)。一、 我尝试过各种各样的实现,但是没有一个有效。以下是我目前的情况:
def transpose(matrix): return list(map(lambda x: [x], list(filter(lambda x: [0], matrix))))
所有其他答案使用for循环和/或zip函数,这是一个限制。在
任何指示都会有帮助的
可以将每行的第一列映射为子列表(以成为新行),然后递归地将矩阵的其余部分(不包括第一列)传递给同一进程,直到所有行都为空:
def transpose(m): return m and [list(map(lambda r: r[0], m)), *transpose(list(filter(len, map(lambda r: r[1:], m))))]
因此:
退货:
明白了:
list(map(lambda i: list(map(lambda x: x[i], matrix)), range(len(matrix[0]))))
这个循环中没有for循环。在
for
可以将每行的第一列映射为子列表(以成为新行),然后递归地将矩阵的其余部分(不包括第一列)传递给同一进程,直到所有行都为空:
因此:
^{pr2}$退货:
^{3}$明白了:
这个循环中没有
for
循环。在相关问题 更多 >
编程相关推荐