如何在Python中去除矩阵中的逗号等符号
假设我有一个看起来像这样的矩阵:
[[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