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=[]

  • 和1种用于清除字典的方法:

  • 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[:] = []