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)))
我不確定你對雙重下標的觀點是否合理。使用'A [0] [1]'將列表索引到列表中是完全合法的。提問者似乎遇到的問題是他正在使用簡單的一維值列表,而不是列表列表。 – Blckknght 2013-03-27 01:43:17