【发布时间】:2013-04-06 02:35:33
【问题描述】:
在 Python 中,使用列表列表与使用字典相比是否有任何优点/缺点,更具体地说是在使用它们进行数值运算时?我正在编写一类函数来解决我的线性代数类的简单矩阵运算。我用的是字典,但后来我看到numpy 使用的是列表列表,所以我想它一定有一些优势。
示例:[[1,2,3],[4,5,6],[7,8,9]] 与 {0:[1,2,3],1:[4,5,6],2:[7,8,9]} 相对
【问题讨论】:
-
视情况而定。阅读有关哈希表如何工作的数据结构教科书。有很多不同之处使得某些用例更快,而另一些则更慢。
-
lists将保持顺序,而dicts是无序的,恕我直言,矩阵相关操作列表更合适。 -
numpy 不使用列表列表:它可能以列表列表的形式显示一个二维数组,但它使用更高效且更高效的专用数组类型比列表列表更通用。
-
它确实取决于,如果你有一个非常稀疏的矩阵,那么
lists 充满Nones,dict可能更有意义。 -
@Lattyware 直观地说,看起来即使是一个稍微稀疏的列表,中间有许多删除/插入(这需要在
list中进行大量复制),dict可能会更好. (当然,也可能不是因为复杂性理论与实践中的性能没有直接关系。)
标签: python arrays list math dictionary