python - 为什么元组在 python 中切片`O(n)`?
问题描述
In [1]: x = tuple(range(0,5000000))
In [2]: %timeit x[0:200000]
782 µs ± 8.82 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
In [3]: %timeit x[0:200]
350 ns ± 4.43 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
所以......看起来更大的元组切片意味着花费更多的时间,因此元组对于以下操作来说是一个糟糕的数据结构:(head, tail) = t[0], t[1:]
. (另见蒂姆·彼得斯:https ://mail.python.org/pipermail/python-list/2003-May/225347.html )
但是因为元组是不可变的,我原以为可以实现切片来引用原始元组的数据,而不是像发生的那样在内部复制数据引用列表。那么,这是怎么回事?他们以缓慢的方式实施是否有原因?
解决方案
推荐阅读
- android - 机器学习套件占用太多内存 [Android]
- cloud - 如何从实例写入谷歌云存储?
- image - 如何获得具有 base64 字符串源的图像的高度和宽度?
- sql - Rails 通过 JSON 属性搜索
- html - 如何在 html/css 的移动视图中逆时针旋转项目?
- c# - WPF MDI 添加 Mahapps Metro 风格
- android - 如何正确加载插页式广告?
- vb.net - FreeBusy Outlook 方法在 VB.NET 中不起作用
- scala - Scala Source.fromReader() 不见了?
- sybase - 在 Sybase ASE 中,sp_helptext 显示成功,但没有显示其他内容