如何在Python中去除矩阵中的逗号等符号

0 投票
6 回答
2291 浏览
提问于 2025-04-15 23:20

假设我有一个看起来像这样的矩阵:

[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

我该如何把它分成不同的行:

[[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]]

然后去掉逗号等等:

0 0 0 0 0

还要把0变成空白,这样以后可以填入数字,最后的样子应该是:

_ 1 2 _ 1 _ 1

(空格而不是下划线)

谢谢

6 个回答

1

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如,有人可能在使用某个库时,发现它的功能和自己想要的不太一样,或者在运行代码的时候出现了错误。这种情况很常见,尤其是对于刚开始学习编程的人来说。

解决这些问题的方法通常是查看文档,看看有没有相关的说明或者示例代码。文档就像是使用说明书,里面会详细介绍这个工具或库的用法和注意事项。如果文档中没有找到答案,可以考虑在网上搜索一下,看看其他人是否遇到过类似的问题,或者在一些编程社区发帖求助。

总之,遇到问题时不要着急,先查阅资料,理解工具的使用方法,通常就能找到解决办法。

#!/usr/bin/env python

m = [[80, 0, 3, 20, 2], [0, 2, 101, 0, 6], [0, 72 ,0, 0, 20]]

def prettify(m):
    for r in m:
        print ' '.join(map(lambda e: '%4s' % e, r)).replace(" 0 ", "   ")

prettify(m)

# => prints ...
# 80         3   20    2
#       2  101         6
#      72             20
3

这是~untubu的回答的简化版

M = [[0, 1, 2, 0, 0], [0, 1, 0, 0, 0], [20, 0, 0, 0, 1]]
for row in M:
    print " ".join('{0:4}'.format(i or " ") for i in row)
4

这段话的意思是,为矩阵中的每个数字分配了4个空间。根据你的数据情况,可能需要调整这个数字。

这里还使用了在Python 2.6中引入的字符串格式化方法。如果你想知道旧的方法怎么做,可以问我。

matrix=[[0, 1, 2, 0, 0], [0, 1, 0, 0, 0], [20, 0, 0, 0, 1]]
for row in matrix:
    data=(str(num) if num else ' ' for num in row])   # This changes 0 to a space
    print(' '.join(['{0:4}'.format(elt) for elt in data]))

结果是

     1    2             
     1                  
20                  1   

撰写回答