Вот фрагмент моего кода:
Код: Выделить всё
def occurrences(s, lst):
return (i for i, e in enumerate(lst) if e == s)
positions = [[" ", " ", " ", " ", " ", " ", " ", " ", " "]]
for board in positions:
for i in range(board.count(" ")):
occ = list(occurrences(" ", board))[0]
board[occ] = "X"
print(board[0:3])
print(board[3:6])
print(board[6:])
print("---------------------")
Код: Выделить всё
['X', ' ', ' ']
[' ', ' ', ' ']
[' ', ' ', ' ']
---------------------
[' ', 'X', ' ']
[' ', ' ', ' ']
[' ', ' ', ' ']
---------------------
[' ', ' ', 'X']
[' ', ' ', ' ']
[' ', ' ', ' ']
---------------------
...
Код: Выделить всё
Copy code
[' ', ' ', ' ']
[' ', ' ', ' ']
---------------------
['X', 'X', ' ']
[' ', ' ', ' ']
[' ', ' ', ' ']
---------------------
['X', 'X', 'X']
[' ', ' ', ' ']
[' ', ' ', ' ']
---------------------
...
Я ожидал, что в выводе будет показано, что «X» помещается в каждую пустую позицию один за другим без изменения предыдущих размещений. Однако кажется, что каждая итерация внутреннего цикла влияет на переменную платы из внешнего цикла.
Я понимаю, что существуют разные способы решения этой проблемы, но мне хотелось бы знать почему Python ведет себя таким образом и как я могу предотвратить это.
Будем очень признательны за любые идеи и предложения!
Подробнее здесь: https://stackoverflow.com/questions/790 ... -in-python