, если вы хотите, чтобы очистить и изменить содержимое списка на месте (в отличие от создания нового свежего списка и назначить его обратно в переменную, которая держит ваш старый список):
board[:] = startBoard
который, если ничего, что нужно, чтобы увидеть последние содержимое доски указывает на старый список, функционально эквивалентен:
board = startBoard
вы можете получить представление о том, что значит изменить что-то в месте против создать новую копию/instance, если вы немного поиграете с назначением того же контура с несколькими переменными без копирования в процессе. Обратите внимание, что с startBoard
в вашем случае есть константа, вы хотите удостовериться, что ничто ее не модифицирует, поэтому второй пример - очень плохая идея. Существует также, однако, 3-й:
board = startBoard[:]
который на самом деле является лучшим из всех трех.Он делает копию startBoard
и присваивает ее переменной board
, не изменяя старый список. board
указывал. Кроме того, поскольку вы используете копию startBoard
, вы можете быть уверены, что ваша начальная плата всегда будет такой же в будущем.
Обратите внимание, что эти аспекты возникают только в языках программирования или стилях, где используются изменяемые типы данных; в функциональном программировании почти ничего не меняется, поэтому вы можете полностью не знать о том, чтобы беспокоиться о том, чтобы вызвать случайный побочный эффект, прикоснувшись к чему-то, на что полагается кто-то другой.
Кроме того: обратите внимание, что копирование списка может выполняться множеством способов в Python; с высокой точки зрения уровня, который я в настоящее время, выступая за есть небольшая разница, хотя, так copy.copy(startBoard)
такая же, как [x for x in startBoard)
таких же, как startBoard[:]
и т.д.
Смотри также PEP8, который предоставляет вам полезные правила кодирования ,
Немного не по теме, но имена переменных обычно lower_case/верблюжьего. См. [Pep8] (https://www.python.org/dev/peps/pep-0008/). – Holloway
Возможный дубликат: http://stackoverflow.com/questions/252703/python-append-vs-extend – GLHF
'if newGame == 'Y' или 'y'' всегда будет true. Используйте 'if newGame == 'Y' или newGame == 'y'' или' if newGame in (' y ',' Y) 'или' if newGame.lower() = 'y''. – Matthias