2013-03-27 47 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

相關問題