python - 为什么内存使用量会根据列表函数的位置而有所不同?
问题描述
这是我的 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()
。
为什么内存使用有差异?
解决方案
您是否尝试过简单地打印 2 个选项的结果?您会看到第一个包含可变对象的列表,因此可能带有额外的内存分配,而第二个包含不可变元组,这些元组可能具有更好的优化内存占用...
推荐阅读
- c# - 使用 JSON.net 自动序列化 JSON 服务器响应
- c# - 我如何用 DateTime.ParseExact 解析这个?
- c++ - 当我按下鼠标按钮时如何生成 QRect?
- mongodb - 直接拷贝mongodb Document对象
- java - 尝试使用 Auth0 在 Java 中验证 JWT 的问题
- c++ - GPS 将米转换为位移度
- python-3.x - pandas groupby nlargest 不允许查看所有数据 set_index 问题
- sql - 旧的 Mac 软件所以不能使用数据库 (Xcode)(SQL)
- python - 无法将时间对象转换为 datetime64[ns]
- angular - Angular 7 材质 | mat-select 按键上的自动填充在清除后不会重置源