#python #список #python_37
Объясните, пожалуйста, как работает этот код. Почему ['d'] на первом месте в списке x и почему повторяется ['a', 'b', 'c']? x = [[]]*3 x[0].append('a') x[1].append('b') x[2].append('c') x[0]=['d'] print(x) stdout: [['d'], ['a', 'b', 'c'], ['a', 'b', 'c']]
Ответы
Ответ 1
Если выражаться просто, то список - это некое хранилище ссылок. В Вашем примере, при умножении, новые списки не создаются. Вы размножаете ссылки. Поэтому после первой инструкции список содержит 3 ссылки на один и тот же объект списка. Проверить это можно с помощью оператора is: x = [[]] * 3 print(x[0] is x[1] is x[2]) # True Вот и получается, что Вы добавляете элементы в одни и те же списки: stdout: [['d'], ['a', 'b', 'c'], ['a', 'b', 'c']] ['d'] оказался на первом месте, так как Вы явно создали новый объект с помощью литералов и заменили ссылку в x[0]
Комментариев нет:
Отправить комментарий