簡體   English   中英

為什么在為列表編制索引時會收到 IndexError?

[英]Why am I getting a IndexError when I'm indexing a list?

我正在創建一個游戲,我試圖將數組中的特定值轉換為數組的坐標,然后轉換為窗口中的像素值。 這是整個腳本的一部分,它有同樣的問題。 我不認為這是字典的問題,因為它說“IndexError:list index out of range”。 我已經在這個程序上呆了幾個小時了,我想我在這里遺漏了一些簡單的東西,所以如果有人能用一雙新的眼睛來看看它會很棒。 先感謝您!

這是代碼:

gridDict = {
0: 20,
1: 60,
2: 100,
3: 140,
4: 180,
5: 220,
6: 260,
7: 300,
8: 340,
9: 380,
10: 420,
11: 460,
12: 500,
13: 540,
14: 580,
15: 620,
16: 660
}

grid = []

for row in range(17):
    grid.append([])
    for column in range(17):
        grid[row].append(0)


grid[6][8] = 2


def findCoordsFromGrid(gridValue):
    global grid
    referenceGrid = grid.copy()
    coordsLst = []
    for i in range(17):
        for value in referenceGrid[i]:
            if value == gridValue:
                x = referenceGrid[i].index(gridValue)
                y = i
                coordsLst.append([x, y])
                referenceGrid[y][x] = 69420
    return coordsLst


head_pixelValues = [gridDict[findCoordsFromGrid(2)[0][0]], gridDict[findCoordsFromGrid(2)[0][1]]]

您調用findCoordsFromGrid兩次。 第一次調用它時,它會找到2並返回它的坐標。 但是您2替換為69420 ,因此 2不再在網格中。 結果,第二次調用它時,它返回一個空列表。 IndexError來自表達式findCoordsFromGrid(2)[0][1] ,相當於[][0][1]

只需保存返回值,而不是兩次調用該函數。 (或者不要修改網格;我不確定你為什么要這樣做。)

coords = findCoordFromGrid(2)
head_pixelValues = [gridDict[coords[0][0]], gridDict[coords[0][1]]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM