嵌套列表中存在的列表在附加(索引已更改)时未显示为已索引。

问题描述 投票:0回答:1

首先,我制作了一个仅包含0的嵌套列表矩阵。然后,我试图更改嵌套列表中某些索引的值。但是在打印列表时,不维护订单。请帮忙

h, n, c = [int(i) for i in input().split()]
mincost = []
for i in range(0, h):
    mincost.append([])
    for j in range(0, c):
            mincost[i].append(0)
for i in range(0, n):
    shop,price = [int(p) for p in input().split()]

    for j in range(0,h):
        if j == shop:
            for k in range(0, c):
                #print(j)
                mincost[i][k] = (k+1)*price
#to print as a matrix
for i in range(0, h):
     for j in range(0, c):
         print(i,end="line ")
         print(mincost[i][j],end=' ')
     print()
#to print as a nested list
print(mincost)

这是输入

5 2 9
0 4
4 9

这是我在打印时所用的矩阵形式

4 8 12 16 20 24 28 32 36 
9 18 27 36 45 54 63 72 81 
0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 

这是我以嵌套列表形式得到的

[[4, 8, 12, 16, 20, 24, 28, 32, 36], [9, 18, 27, 36, 45, 54, 63, 72, 81], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0]]

我认为索引为0的列表的索引实际上应该为4

我不知道哪里有错误,或者是否应用了我不知道的概念

python python-3.x list matrix nested-lists
1个回答
0
投票

您在这里使用了错误的索引来更新矩阵值:

for k in range(0, c):
    # print(j)
    mincost[i][k] = (k+1)*price

在这里您应该使用索引j代替i

for k in range(0, c):
    # print(j)
    mincost[j][k] = (k+1)*price

输入:

5 2 9
0 4
4 9

输出:

[[4, 8, 12, 16, 20, 24, 28, 32, 36], 
 [0, 0, 0, 0, 0, 0, 0, 0, 0], 
 [0, 0, 0, 0, 0, 0, 0, 0, 0], 
 [0, 0, 0, 0, 0, 0, 0, 0, 0], 
 [9, 18, 27, 36, 45, 54, 63, 72, 81]
]
© www.soinside.com 2019 - 2024. All rights reserved.