python - 在Python中递归转置矩阵

标签 python

我一直在尝试找出如何在 Python 中仅使用映射和过滤器递归地转置矩阵(表示为列表的列表)。我尝试过各种实现,但没有一个有效。这是我目前拥有的:

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))))]

这样:

transpose([[1,2,3],[3,4,5]])

返回:

[[1, 3], [2, 4], [3, 5]]

关于python - 在Python中递归转置矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52884928/

相关文章:

python - 在 Cygwin : cant find ffi. h 上使用 pip 安装 bcrypt 时出错(已安装 libffi)

python - 安装 PyLucene 期间出现导入错误 : cannot import name Library,

python - 我应该使用哪个 Python 库? SocketServer 还是 Asyncio?

python - 如果applymap 这么慢,我们为什么要使用它?

python - 如何安装 Tkinter?

Python shell 自动加载更改

python - Flask 中的简单例份验证在 Apache 下不起作用

Python 位列表到字节列表

python - 在 Python 上使用 Selenium 来操作 Tor。由于未知原因不起作用

python - 文件更新时的 Office365-REST-Python-Client 401