0

My list is behaving oddly and I can't figure out why. I have added a print line each time a variable changes to determine what is happening and it seems like the insert function is writing over multiple items in the list.

    def move_down(self, sn_game):
        print("Initial Snake: " + str(self.snake_array))

        temp_position = self.snake_array[0]
        print("Temp Position: " + str(temp_position))

        temp_position[1] += 1
        print("Updated Position: " + str(temp_position))

        self.snake_array.insert(0, temp_position)
        print("Updated Snake: " + str(self.snake_array))

        del self.snake_array[-1]
        print("Final Snake: " + str(self.snake_array) + "\n")

Print output for 3 iterations:

Initial Snake: [[5, 2], [5, 1], [5, 0]]
Temp Position: [5, 2]
Updated Position: [5, 3]
Updated Snake: [[5, 3], [5, 3], [5, 1], [5, 0]]
Final Snake: [[5, 3], [5, 3], [5, 1]]

Initial Snake: [[5, 3], [5, 3], [5, 1]]
Temp Position: [5, 3]
Updated Position: [5, 4]
Updated Snake: [[5, 4], [5, 4], [5, 4], [5, 1]]
Final Snake: [[5, 4], [5, 4], [5, 4]]

Initial Snake: [[5, 4], [5, 4], [5, 4]]
Temp Position: [5, 4]
Updated Position: [5, 5]
Updated Snake: [[5, 5], [5, 5], [5, 5], [5, 5]]
Final Snake: [[5, 5], [5, 5], [5, 5]]

What am I missing?

0 Answers0