首页 > 解决方案 > 最好在 Python 中使用项目或索引列表

问题描述

我正在学习一些 Python 课程,他们创建了一个项目子列表,这些项目是数据集中的行。我想知道为什么他们不建议使用索引列表而不是列出整个数据行。

例如 list_of_freeApps.append(row[x])

似乎只保存索引: list_of_freeApps.append(x)
在空间方面会更有效,但也许 Python 解释器会做一些事情,所以不必担心这一点,

或者这是一个初学者课程,当使用 Python Panda 数据帧时,它会被照顾吗?

那么有人可以评论一下这个 Python 初学者问题吗?谢谢

标签: python-3.x

解决方案


包含子序列的列表实际上比子序列的索引列表使用的额外空间更少。原因是列表只包含对其成员的引用;当您创建一个包含一些旧列表元素的新列表时,新列表仅包含对这些成员的引用。这些成员已经存在,没有复制它们,所以唯一使用的内存是在新列表中保存对它们的新引用。

索引列表使用更多内存,因为它包含对必须创建并占用内存的整数对象的引用,而不是对某些已经存在的对象的引用。

相当有用的Python Tutor 工具可以在内存中显示这一点的可视化,这可能有助于您理解我的解释。单击“下一步”按钮查看代码运行时在内存中创建了哪些对象。


推荐阅读