2014-11-04 55 views
-2

我創建了一個嵌套列表,每個列表包含10個列表。我想能夠在給定的位置插入一個值到嵌套列表中。列表索引超出嵌套列表中的範圍錯誤。 Python 3.4

當運行該程序,它說list index out of rangeboard.insert([5][2], 1),線路13我試圖把board.insert(board[5][2], 1),但隨後它取值在5,2是0,並且插入在位置0數字1我使用python 3.4。

board = [ 
[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, 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, 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, 0, 0, 0, 0, 0, 0] 
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
] 
board.insert([5][2], 1) 
+3

您是否真的指插入或設置*?插入將爲列表添加另一個值,並將其增加一個元素。我想你想設置,用'1'替換當前的'0'值。 – 2014-11-04 15:10:33

+0

爲了清晰起見,因爲'[5] [2]'告訴python訪問'[5]'的索引2元素,''IndexError'正被拋出'board.insert([5] [2],1) '它只有一個索引0元素。它不是來自'insert'。 – 2014-11-04 16:08:15

回答

1

您不能使用「座標」作爲參數插入。你要做這樣的:

board[5].insert(2, 1) 
+0

非常感謝您的幫助 – darkcraygon 2014-11-04 16:58:10

1

你可以這樣做:

board[5][2] = 1 

這將創建一個板,看起來像這樣:

[ [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, 0, 0], 
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
    [0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]] 

insert的問題是,它會爲列表添加另一個值。克勞斯提供的解決方案將生成一個如下所示的表格。請注意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, 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, 1, 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], 
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]] 
+0

我通常會使用del()來刪除元素,然後用insert()插入一個新元素。 – darkcraygon 2014-11-04 16:59:18