Python清除列表清除错误列表?

时间:2018-06-27 02:45:25

标签: python list

所以我对python有一个非常基本的理解(为期10周的夏季课程,由python和Matlab分开)。我正在尝试创建一个二维列表,如下所示:

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 :(得分:5)

在Python中,了解一切都是对象至关重要。其中,您有两种类型:

  • 不可变(int,float,char,str,tuple)
  • 可变(列表,字典,其他对象,...)

不可变对象无法更改。也就是说,您无法重新定义不可变的内容:

1 = 0

那太荒谬了!但是,您可以将不可变项 bind 绑定到名称。我们称此类名称为“变量”。

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到其他对象。