首页 > 解决方案 > 为什么内存使用量会根据列表函数的位置而有所不同?

问题描述

这是我的 leetcode 算法问题的提交代码(https://leetcode.com/problems/subsets/

我只是itertools.combinations()用来解决这个问题。

第一种情况内存使用量为 14.4 MB

class Solution:
    def subsets(self, nums: List[int]) -> List[List[int]]:
        result = []
        for x in range(len(nums) + 1):
            result.extend(itertools.combinations(nums, x))
        result = [list(x) for x in result] # located in list comprehension 
            
        return result

第二种情况内存使用量为 14.6 MB

class Solution:
    def subsets(self, nums: List[int]) -> List[List[int]]:
        result = []
        for x in range(len(nums) + 1):
            result.extend(list(itertools.combinations(nums, x))) # located in extend function
            
        return result

唯一的区别是位置list()

为什么内存使用有差异?

标签: pythonalgorithmdata-structures

解决方案


您是否尝试过简单地打印 2 个选项的结果?您会看到第一个包含可变对象的列表,因此可能带有额外的内存分配,而第二个包含不可变元组,这些元组可能具有更好的优化内存占用...


推荐阅读