Страницы

Поиск по вопросам

четверг, 9 января 2020 г.

Объясните пожалуйста как работает данный код

#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]

Комментариев нет:

Отправить комментарий