所以我对 python 有一个非常初步的了解(为期 10 周的暑期类(class)分为 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 = []
但我不明白我的两种方法之间的区别以及为什么只有第二种方法有效...
请您参考如下方法:
在 Python 中,理解一切皆对象这一点至关重要。其中,您有两种类型:
- 不可变的(整数、 float 、字符、海峡、元组)
- 可变的(列表、字典、其他对象……)
不可变对象无法更改。也就是说,您不能重新定义不可变:
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 绑定(bind)到的相同列表。
我为什么要告诉你这些?因为:
data.clear()
改变 data 绑定(bind)到的原始列表。
相比之下,
data = ()
简单地重新绑定(bind) 数据到其他一些对象。
