Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ';int';对象不可下标_Python_Matrix - Fatal编程技术网

Python ';int';对象不可下标

Python ';int';对象不可下标,python,matrix,Python,Matrix,我以正方形形式打印矩阵的代码如下: 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| 它不断地回来

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

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])

如何解决这个问题?

python的难点在于不能使用二维来指定列表。仅允许单个维度。所以

A[0]=22

但是

A[0][1]

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

什么语言

不管怎样

我假设您的输入是一个二维数组,但它只是一个一维数组。或者,您的代码是为了处理一维数组,使其“看起来”是二维的

但实际上,您的代码正试图处理一个不存在的二维数组,因为您的输入数组是一维的

如果这个答案不足以让您更正,那么请将该语言作为标记和代码包含在原始问题中(编辑它),然后在@Sepster中添加注释,我将再次查看

编辑:Missed OP已经说明A是列表的位置[22,38,30,58,34,69]。

A
是一个列表——一个一维数组
A[0]
是一个
int
,不可订阅。这就是你的错误

在python中,将矩阵表示为二维列表更为自然,例如:

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

如果您这样做,您的代码将正常工作,但最好使用以下代码:

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

print_matrix(A)
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])))
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]))
甚至只是:

from pprint import pprint
pprint(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_matrix(M):
    for N in M:
        print("|{}|".format('\t'.join(str(O) for O in N)))

print_matrix(A)
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])))
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]))
或者,如果要避免切片,请执行以下操作:

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)))

问题是您试图使用普通列表作为矩阵,您可以使其不普通,也可以使用正确的索引。例如,您可以尝试以下方法:

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

print_matrix(A)
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])))
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]))

我不确定你关于双重订阅的观点是否有意义。使用
a[0][1]
索引到列表中是完全合法的。提问者似乎遇到的问题是,他使用的是一个简单的一维值列表,而不是列表列表。+1鉴于OP的输入是一个一维数组,这是将该数组作为矩阵IMHO输出的适当实现。