2014-11-01 115 views
0

我想打印一个矩阵的行数和列数,其中值为1 例如:打印矩阵蟒蛇的行数和列数

A=[0 1 0] 
    [1 0 1] 
    [1 0 0] 

我所要的输出显示为:(行号,然后相应的列)

0 1 
1 0 2 
2 0 

我试图用枚举(),但它给了我不同类型的输出。

G={i: [j for j, y in enumerate(row) if y] for i, row in enumerate(A)} 
print (G) 
+2

你知道Python的索引是基于零的,是吗?那些字典是无序的? – jonrsharpe 2014-11-01 13:36:02

+0

是的,先生,我知道。我将编辑问题 – user3258267 2014-11-01 13:37:14

+0

您能否澄清问题所在?只是打印出字典是*永远不会给你想要的输出 - 你将不得不做一些格式化。 – jonrsharpe 2014-11-01 13:41:32

回答

0

Python的指数是从零开始的。你已经做了一切正确的事情,但只需要添加几个+1即可获得您所期望的输出。此外,词典是由自然无序的,所以你会只用一个元组的列表会更好:

G = [(i+1, [j+1 for j, y in enumerate(row) if y]) for i, row in enumerate(A)] 

或者更好的;只需要一个2d的列表,当你需要它们时,将索引作为第一列。

+0

谢谢你,先生。这个技巧。如果我想删除所有的括号和逗号,我试图把它保存到一个文件。 – user3258267 2014-11-01 13:50:28

+0

@ user3258267'['{} {}'.format(a,''.join(b))for a,b in G]'给出了这种格式的字符串列表。对不起,我花了一段时间回复,我的互联网突然崩溃了。 – 2014-11-01 14:23:53

+0

当我尝试我得到一个错误,说“期望的str实例,int找到”。 – user3258267 2014-11-01 15:20:17