Python清除列表清除错误列表?
因此,我对python有了非常初步的了解(为期10周的暑期课程由python和Matlab两部分组成)。我正在尝试创建一个二维列表,如下所示:Python清除列表清除错误列表?,python,list,Python,List,因此,我对python有了非常初步的了解(为期10周的暑期课程由python和Matlab两部分组成)。我正在尝试创建一个二维列表,如下所示: data.append(示例) data.append(匹配项) 数据\u list.append(数据) data.clear() 它在for循环中运行,并在每次迭代时写入。但是,当我运行它并打印(数据列表)时,我得到一个空列表 我已经成功地这样运行了它: data.append(示例) data.append(匹配项) 数据\u list.appe
data.append(示例)
data.append(匹配项)
数据\u list.append(数据)
data.clear()
它在for循环中运行,并在每次迭代时写入。但是,当我运行它并打印(数据列表)时,我得到一个空列表
我已经成功地这样运行了它:
data.append(示例)
data.append(匹配项)
数据\u list.append(数据)
数据=[]
但是我不明白我的两个方法之间的区别,以及为什么只有第二个方法有效…在Python中,理解一切都是对象是至关重要的。其中,您有两种类型:
- 不可变(int、float、char、str、tuple)
- 可变(列表、目录、其他对象等)
1 = 0
那太可笑了!但是,您可以将不可变绑定到名称。我们称这些名称为“变量”
Mutable但是,对象可能会更改其内部内容:
x = [0, 2]
y = x
x[0] = 1
# x = [1, 2]
# y = [1, 2]
请注意,y
只是列表中的一个名称。当您使用x[0]=1
对列表x
进行变异时,您正在变异绑定到y
的同一列表
我为什么要告诉你这些?因为:
data.clear()
改变数据绑定到的原始列表
相比之下
data = ()
只需将数据重新绑定到其他对象。在Python中,理解一切都是对象是至关重要的。其中,您有两种类型:
- 不可变(int、float、char、str、tuple)
- 可变(列表、目录、其他对象等)
不可变的对象无法更改。也就是说,不能重新定义不可变的:
1 = 0
那太可笑了!但是,您可以将不可变绑定到名称。我们称这些名称为“变量”
Mutable但是,对象可能会更改其内部内容:
x = [0, 2]
y = x
x[0] = 1
# x = [1, 2]
# y = [1, 2]
请注意,y
只是列表中的一个名称。当您使用x[0]=1
对列表x
进行变异时,您正在变异绑定到y
的同一列表
我为什么要告诉你这些?因为:
data.clear()
改变数据绑定到的原始列表
相比之下
data = ()
只需将数据重新绑定到另一个对象。可能重复的样本和匹配的?数据列表。追加(data.copy())
将解决您的问题。问题是您在数据列表
中放置了对数据的引用,而不是数据
中的内容。因此,当您清除data
时,data\u list
中的引用现在指向一个空列表。samples
和matches
是整数值。这是一个将你的生日与随机样本组进行比较的程序。因此我理解data\u list.append(data.copy())
是如何解决这个问题的。奇怪的是,python的处理方式有所不同,因为通过data=()
清除数据会保留数据列表中的值,而通过清除则会保留数据。清除不会保留数据。可能会重复示例和匹配的?数据列表。追加(data.copy())
将解决您的问题。问题是您在数据列表
中放置了对数据的引用,而不是数据
中的内容。因此,当您清除data
时,data\u list
中的引用现在指向一个空列表。samples
和matches
是整数值。这是一个将你的生日与随机样本组进行比较的程序。因此我理解data\u list.append(data.copy())
是如何解决这个问题的。奇怪的是,python的处理方式有所不同,因为通过data=()
清除数据,is会保留数据列表中的值,而通过清除则不会保留数据。