代码之家  ›  专栏  ›  技术社区  ›  TassosK

删除python中的列表,getsizeof()非零?

  •  2
  • TassosK  · 技术社区  · 6 年前

    我在玩python列表,不使用时想从内存中删除一个列表(我有大的数据列表,可能有成千上万个元素..数据类型->float)

    我尝试了这段代码来了解删除在python中是如何工作的(示例)

    import sys
    array=[[12,34,54],[23,45,54,67]]
    print(sys.getsizeof(array))  # it gives me result 80
    
    #then
    del(array[:])
    print(sys.getsizeof(array)) #it gives me result 64?
    

    为什么会这样?不应该是零吗?有一些开销吗?只是好奇

    2 回复  |  直到 6 年前
        1
  •  3
  •   Mike Scotty    6 年前

    你不是在删除列表,你只是在删除内容。

    64只是空列表在内存中的大小:

    print(sys.getsizeof([])) # 64
    

    每个对象都需要内存空间,直到它被完全删除,甚至是一个空字符串或 None .

        2
  •  1
  •   mohammed thaha jk    6 年前

    就这么做

    del array
    

    而不是

    del(array[:])