Очистить список Python, очистить неправильный список? - PullRequest
0 голосов
/ 27 июня 2018

Итак, у меня очень элементарное понимание Python (10-недельный летний курс, разделенный между Python и Matlab). Я пытаюсь создать 2d список примерно так:

data.append (samples)
data.append (matches)
data_list.append (data)
data.clear()

Это выполняется в цикле for и записывает каждый раз при выполнении итерации. Однако, когда я запускаю его и я print(data_list), я получаю пустой список.

Я успешно запустил его так:

data.append (samples)
data.append (matches)
data_list.append (data)
data = []

Но я не понимаю разницы между моими двумя методами и почему работает только второй ...

1 Ответ

0 голосов
/ 27 июня 2018

В Python важно понимать, что все является объектом . Из них у вас есть два типа:

  • неизменяемый (int, float, char, str, tuple)
  • изменяемый (список, dict, другие объекты, ...)

Неизменный объекты не могут быть изменены . То есть вы не можете переопределить неизменное:

1 = 0

Это смешно! Однако вы можете привязать неизменяемые имена. Мы называем такие имена «переменными».

x = 1
y = x
x = 0

# x = 0
# y = 1

Изменяемые объекты, однако, могут изменить свое внутреннее содержимое:

x = [0, 2]
y = x
x[0] = 1

# x = [1, 2]
# y = [1, 2]

Обратите внимание, что y - это просто имя в списке. Когда вы изменяете список x с помощью x[0] = 1, вы изменяете тот же список, к которому привязан y.


Почему я говорю вам все это? Потому что:

data.clear()

изменяет исходный список, с которым data связан.

В отличие от

data = ()

просто связывает data с другим объектом.

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