Python 清除列表和字典的最佳方法
代码: 在外部循环中,我必须一次又一次地清除Python 清除列表和字典的最佳方法,python,python-2.7,dictionary,Python,Python 2.7,Dictionary,代码: 在外部循环中,我必须一次又一次地清除lst2列表以重用它 在内部循环中,为了重用它,我必须一次又一次地清除lst1字典 我知道两种清除列表的方法: del lst2[:] lst2=[] 和1种用于清除字典的方法: lst1={} 但我不知道这些方法和我应该使用的方法之间的区别 是否有其他方法来清除列表和字典?这是更好的方法吗?为什么 有没有更好的方法来编写整个代码?赋值是清除列表或记录的非常好和有效的方法 my_dict={} 和my_list=[] 不需要什么花哨的东西。两种“清除”
lst2
列表以重用它
在内部循环中,为了重用它,我必须一次又一次地清除lst1
字典
我知道两种清除列表的方法:
del lst2[:]
lst2=[]
lst1={}
有没有更好的方法来编写整个代码?赋值是清除列表或记录的非常好和有效的方法
my_dict={}
和my_list=[]
不需要什么花哨的东西。两种“清除”列表的方法的不同之处在于,第一种方法操作到位,删除原始列表对象的内容,而第二种方法只是创建一个新的列表对象并将其指定给相同的名称。您必须在此处使用第二个版本,否则词典中的所有列表都将是末尾相同的空列表的副本:
num_of_iterations_for_outer_loop = 2
num_of_iterations_for_inner_loop = 3
data = []
for j in range(num_of_iterations_for_outer_loop):
lst2 = []
for k in range(num_of_iterations_for_inner_loop):
lst1 = {}
lst1['1'] = "first_value" # these are not default, in my original code they are coming from some other values after calculation
lst1['2'] = "second_value"
lst1['3'] = "third_value"
lst2.append(lst1)
value = {'values':lst2}
data.append(value)
类似地,您可以从字典中删除所有键值对,但您也会遇到同样的问题。当您将原始容器对象放入其他容器中时,您应该在每个循环中通过赋值(例如lst1={}
)创建一个新容器
有没有更好的方法来编写整个代码
我不知道您还对数据做了什么,但是字典值
可能是不必要的,最里面的三元组数据就足够了:
>>> l = [1, 2, 3]
>>> d = {'a': l}
>>> del l[:]
>>> d
{'a': []}
下面简要介绍每种方法的作用:
lst2=[]
确实清除了列表的内容。它只是创建一个新的空列表并将其分配给名称lst2
。然后,GC的任务是根据剩余的引用删除实际内容
data = [[(1, 2, 3), (4, 5, 6)], [(7, 8, 9), ...], ...]
del lst2[:]
清除列表中的内容
请注意,另一个列表b也会被清除,因为内容会被就地删除lst1={}
与第1点相同。它创建一个空字典,并将引用分配给名称lst1
>>> a = [1,2,3]
>>> b = a
>>> del a[:]
>>> a
[]
>>> b
[]
这两条语句实际上都没有清除相应对象的内容。它们只是创建新的空容器,并将它们分配给每个名称。我相信OP想把它做好。@martineau我打赌他们不想,这样,他们只会得到
数据
包含对同一个列表的一大堆引用,包含对同一个字典的一大堆引用,然后就回到这里,抱怨他们只会看到最后一个值反复出现。dict.clear()
方法将快速删除字典中的所有项目。
>>> a = [1,2,3]
>>> b = a
>>> del a[:]
>>> a
[]
>>> b
[]
lst2[:] = []