Danger, Will Robinson! Can you explain the logic plz?


I don't understand how this line below executes a replacement of a "O".

board[guess_row][guess_col] = "X"

if guess_row == ship_row and guess_col == ship_col:
    print "Congratulations! You sank my battleship!"
    print "You missed my battleship!"
    board[guess_row][guess_col] = "X"


well if i have a list:

aList = ["a","b","c"]

i can update a item in the list by re-assign that index:

aList[2] = "d"
print aList # output: ["a","b","d"]

i can also store the index in a variable:

x = 2
aList[x] = "e"
print aList # output: ["a","b","e"]

now, that is for a one dimensional list, but you have have a two dimensional list in the exercise:

bList = [["a","b","c"],["d","e","f"],["g","h","j"]]

so now if use indexes we get:

print bList[0]
print bList[1]
print bList[2]

so if want to get a, we need to access the first list inside bList, and then the first element inside bList:

print bList[0][0]

so then we can update a:

bList[0][0] = "X"

of course can store the indexes in variables:

x = 0
y = 0
bList[x][y] = "X"
print bList

which is basically what you do in the lessons.


wow, thank you so much for the clear answer.

One question though... In your example listed below:

why is the "e" replacing the "c" and not added to the list?



because we update the item at index 2? at index 2 is c, so c gets update to e


aList[x] = "e"

x is two. so we update the item at index 2


Thank you so much, very helpful


are you sure you understand? You can ask if you have a further questions about it.


Yes I understood. If I wanted to add it after "c" I would have written

aList[3] = "e"



no, indexes are used to manipulate/change existing items in a list. to append to a list we can use the build in append() method:



well explained. Thank you