python-3.x - 最好在 Python 中使用项目或索引列表
问题描述
我正在学习一些 Python 课程,他们创建了一个项目子列表,这些项目是数据集中的行。我想知道为什么他们不建议使用索引列表而不是列出整个数据行。
例如 list_of_freeApps.append(row[x])
似乎只保存索引: list_of_freeApps.append(x)
在空间方面会更有效,但也许 Python 解释器会做一些事情,所以不必担心这一点,
或者这是一个初学者课程,当使用 Python Panda 数据帧时,它会被照顾吗?
那么有人可以评论一下这个 Python 初学者问题吗?谢谢
解决方案
包含子序列的列表实际上比子序列的索引列表使用的额外空间更少。原因是列表只包含对其成员的引用;当您创建一个包含一些旧列表元素的新列表时,新列表仅包含对这些成员的引用。这些成员已经存在,没有复制它们,所以唯一使用的内存是在新列表中保存对它们的新引用。
索引列表使用更多内存,因为它包含对必须创建并占用内存的整数对象的引用,而不是对某些已经存在的对象的引用。
相当有用的Python Tutor 工具可以在内存中显示这一点的可视化,这可能有助于您理解我的解释。单击“下一步”按钮查看代码运行时在内存中创建了哪些对象。
推荐阅读
- flutter - 如何在颤振中创建可点击的复选框
- python - 如何使用 numpy 在图像中添加泊松噪声?
- c# - 使用 Azure DevOps 和 Blazor 服务器应用生成错误
- java - 向字符串添加执行多个 subString 操作的条件以避免 IndexOutOfRange 异常的最佳实践
- python-3.x - Scrapy:从页面内容派生的字段名称
- javascript - 根据 id 和 date 删除数组中的重复对象
- jquery - Django ajax 帖子在 Web 主机上引发 500 错误,但在 localhost 上有效
- java - 我的通知代码突然停止工作
- windows - Windows 回收站信息文件二进制格式
- python - 如何在没有堆栈跟踪的情况下创建 Python 异常?