2013-03-27 102 views
1

我的代码用于在正方形形式打印矩阵如下:'INT' 对象未标化的

for i in range(len(A)): 
    line = "\t|"+str(A[i][0]) 
    for j in range(1, len(A[i])): 
     line = line + "\t" + str(A[i][j]) 
    line = line + "|" 
    print(line) 

其中A是列表[22,38,30,58,34,69]

它应该看起来像

| 22 38 |

| 30 58 |

| 34 69 |

它使返回 “诠释”对象的代码行没有标化 :

line = "\t|"+str(A[i][0]) 

我该如何解决这一问题?

回答

0

python的难点在于你不能使用两维来指定列表。只允许一个维度。所以

A [0] = 22

A [0] [1]

引发错误。要指定双下标,可以使用字典

+0

我不确定你对双重下标的观点是否合理。使用'A [0] [1]'将列表索引到列表中是完全合法的。提问者似乎遇到的问题是他正在使用简单的一维值列表,而不是列表列表。 – Blckknght 2013-03-27 01:43:17

0

什么语言?

无论如何,

我想你的输入是指是一个2维阵列,但它仅仅是一个1个维阵列。或者你的代码是意思是来处理1维数组以使其“看起来”2维。

但事实上,您的代码正在尝试处理不存在的2维数组,因为您的输入数组是1维的。

如果此答案不足以解决问题,请将语言作为标记和代码添加到原始问题中(编辑它),然后向@Sepster添加评论,然后再看一遍。

编辑:错过的OP已经声明其中A是列表[22,38,30,58,34,69]

2

A是一个列表 - 一个一维数组。 A[0]int,它不是可下标的。因此你的错误。

在python中将矩阵表示为二维列表比较自然。:

A = [[22, 38], [30, 58], [34, 69]] 

A = [[22, 30, 34], [38, 58, 69]] 

如果这是你的代码将工作,尽管它会更好地使用这样的代码:

def print_matrix(M): 
    for N in M: 
     print("|{}|".format('\t'.join(str(O) for O in N))) 

print_matrix(A) 

甚至只是:

from pprint import pprint 
pprint(A) 

如果你被绑定到你的单维ionality为A,你可以像这样打印:

def print_list_matrix(M, width): 
    for i, j in zip(range(0, len(M), width), range(skip, len(M)+width, width)): 
     print('|{}|'.format("\t".join(str(O) for O in M[i:j]))) 

或者这样:

def print_list_matrix(M, width): 
    for i in range(0, len(M), width): 
     print('|{}|'.format("\t".join(str(O) for O in M[i:i+width]))) 

或者,如果你想避免切片:

from itertools import izip 

def grouper(seq, size): 
    iters = [iter(seq)] * size 
    return izip(*iters) 

def print_list_matrix(M, width): 
    for N in grouper(M, width): 
     print('|{}|'.format("\t".join(str(O) for O in N))) 
1

问题是你想使用普通列表作为矩阵,可以使其不是简单或使用正确的索引。例如,你可以尝试这样的事情:

A = [22, 38, 30, 58, 34, 69] 
size = 2 # put here the exact number of values within each row you want 

for i in range(0, len(A), size): 
    print '\t'.join(map(str, res[i:i+size])) 
+0

+1鉴于OP的输入是一维数组,这是将该数组作为矩阵IMHO输出的适当实现。 – Sepster 2013-03-27 02:09:45

+0

@Sepster谢谢你 – 2013-03-27 02:13:36