Python分配索引错误
如果所有3个数字都相同,则此操作正常。如果没有,则当其中一个变量必须超过其指定值时,它将停止。即,如果输入2、3和2,它将正常工作,直到到达第3列,然后停止,给出以下消息:Python分配索引错误,python,indexing,Python,Indexing,如果所有3个数字都相同,则此操作正常。如果没有,则当其中一个变量必须超过其指定值时,它将停止。即,如果输入2、3和2,它将正常工作,直到到达第3列,然后停止,给出以下消息: def main(): rows = int(input("Insert # of rows ")) cols = int(input("Insert # of cols ")) dept = int(input("Insert # of dept ")) count = 0 tra
def main():
rows = int(input("Insert # of rows "))
cols = int(input("Insert # of cols "))
dept = int(input("Insert # of dept "))
count = 0
trash = count
table = [[[ 0
for i in range(cols) ]
for j in range(rows) ]
for k in range (dept) ]
print ()
print ("Print empty table")
print(table)
print()
print("Print each element")
for i in range(rows):
print("-" * 30, "rows", i+1)
for j in range(cols):
print("-" * 22, "col", j+1)
for k in range (dept):
count += 1
table [i][j][k] = count
print ("row", i+1, "column", j+1, "depth", k+1, "=", count)
print()
print(table)
main()
它工作得很好,只是不能填在表格里。如果我让它只有两个维度(去掉深度),它也可以很好地工作。在代码中将行移动到更早或更晚的位置似乎也没有帮助。我已经在这里查看了类似的问题,但没有发现任何有助于我发现错误的地方。你的指数弄错了 您使用
dept
外部列表构建了表,内部列表具有cols
元素。然后,您尝试使用范围(dept)
上的循环来处理最里面的元素,并使用范围(行)
来处理最外面的列表
Python列表理解应该从左到右读取,就像它们是嵌套的一样;您甚至将您的列表格式设置为:
table [i][j][k] = count
但是第二个嵌套的range()
循环和索引与该结构不匹配;分配时复制它。将depts
范围循环移出,并调整使用k
引用单元格的方式:
table = [[[ 0
for i in range(cols) ]
for j in range(rows) ]
for k in range (dept) ]
注意现在嵌套是如何匹配的<代码>k(部门
),然后i
(行
),然后j
(cols
)
这将使最里面的列表(最后一个索引的列表,即带有k
)具有cols
元素。这不是你的意思,即使切换了cols
和rows
嵌套的列表理解是由内而外的,因此您希望从循环的方式将其向后写入:
table = [[[ 0
for i in range(cols) ]
for j in range(rows) ]
for k in range (dept) ]
那么剩下的代码应该保持不变。我认为表定义是错误的,应该是
[[range(dept)]--range(cols)]--range(rows)]
而不是[[cols]--rows]--dept]
,如果你知道我的意思的话。谢谢!我想这是我的一个简单(愚蠢)的错误。那把它修好了。谢谢对不起,我没有意识到我能做到,而且忘了检查一下这个。我道歉。
for k in range(dept):
for i in range(rows):
print("-" * 30, "rows", i+1)
for j in range(cols):
print("-" * 22, "col", j+1)
count += 1
table[k][i][j] = count
print("depth", k+1, "row", i+1, "column", j+1, "=", count)
table = [[[ 0
for i in range(cols) ]
for j in range(rows) ]
for k in range (dept) ]
table = [[[ 0
for k in range(dept) ]
for j in range(cols) ]
for i in range(rows) ]