Почему он печатает [[1234], [1234]], когда я не назначил пустой список b - PullRequest
1 голос
/ 10 марта 2020
a=[1234]
#b=[]
b.append(a)
print(b)
output: [[1234], [1234]]
a=[1234]
b=[]
b.append(a)
#print(b)
#output:[[1234]]

Я не мог понять вышеуказанный код, когда я назначил пустой список для его печати [[1234]], но без назначения, если я добавлю его к b, он печатает [[1234], [1234]].

Что здесь происходит?

Ответы [ 2 ]

4 голосов
/ 10 марта 2020

Скорее всего, вы уже где-то были определены ранее. Когда вы устанавливаете b = [] во второй раз, b очищается. Вы не можете вызвать append для массива, который не определен. Если вы запускаете только следующий код:

a=[1234]
b.append(a)
print(b)

, вы должны получить следующую ошибку при прохождении через интерпретатор.

NameError: name 'b' is not defined
1 голос
/ 10 марта 2020

если вы используете jupyter-notebook, вы можете получить такое поведение, я полагаю, что вы запускаете одну и ту же ячейку 2 раза, один раз с b=[] комментарием и один раз с #b=[], с одного запуска на другой в jupyter переменные хранятся в памяти, поэтому для второго запуска ваш b уже равен [[1234]], эквивалентный код для вашего второго запуска вашего jupyter cell:

b = [[1234]] # aready in memory

a=[1234]
#b=[]
b.append(a)
print(b)

выход:

[[1234], [1234]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...