【发布时间】:2012-11-29 21:24:30
【问题描述】:
我尝试了一些快速实验,比较了原生 Python 列表与链表实现(例如 this)的性能。
在不应该的情况下,原生 python 列表总是比非原生链表快(根据理论)。
from linkedlist import *
import time
a = LinkedList()
b = []
for i in range(1000000):
b.append(i)
a.add_first(i)
t0 = time.clock()
a.remove(10)
t1 = time.clock()
b.remove(10)
t2 = time.clock()
print t1-t0
print t2-t1
我在上面的测试中得到的结果是:
原生链表 = 2.00000000001e-05
python 列表 = 0.005576
非原生链表 = 3.90000000001e-05
所以,我想知道为什么 Python 没有原生的链表数据结构。 在 Python 的情况下,在我看来,从算法上讲,它可能很有用 链接列表而不是标准列表来加速标准库的某些方面。
我的理解是,List 数据结构是该语言的关键构建块,它使代码更易于维护和优化,以专注于该数据结构。
还有其他原因吗?
【问题讨论】:
-
我在你的测试中看到两个
prints 和三个结果——你的“原生”链表来自哪里? -
我已经用不同的实现运行了几次测试,而且我用 swig cl.ly/code/2A3t352q1m1Y 构建了这个快速而超级脏的代码
-
您是在问“为什么开发人员决定从 python 中排除链表 DS?” p.s.我认为这个问题有点主观,适合 SO,也许 Programmers.SE?
-
你是对的,但是对于标准库来说,在 Python 中实现本机链表以潜在地加速任何处理大量数据的现有应用程序是否有用。跨度>
-
在你的循环中,你附加到
b,但附加到a——这是故意的吗?
标签: python arrays algorithm linked-list