gpt4 book ai didi

python - “int”对象不可下标

转载 作者:行者123 更新时间:2023-11-30 23:37:22 25 4
gpt4 key购买 nike

我以方形形式打印矩阵的代码如下:

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|

它不断返回“int”对象不可下标对于代码中的行:

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

我该如何解决这个问题?

最佳答案

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)

如果您受限于 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)))

关于python - “int”对象不可下标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15650516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com