Unk*_*own 178
根据源代码,列表的最大大小是PY_SSIZE_T_MAX/sizeof(PyObject*).
PY_SSIZE_T_MAX在pyport.h中定义为((size_t) -1)>>1
在常规的32位系统上,这是(4294967295/2)/ 4或536870912.
因此,32位系统上的python列表的最大大小为536,870,912个元素.
只要您拥有的元素数量等于或低于此数量,所有列表函数都应该正常运行.
Álv*_*ten 58
正如Python文档所说:
了sys.maxsize
平台的Py_ssize_t类型支持的最大正整数,因此最大大小的列表,字符串,dicts和许多其他容器都可以.
在我的电脑(Linux x86_64)中:
>>> import sys
>>> print sys.maxsize
9223372036854775807
Run Code Online (Sandbox Code Playgroud)
Nad*_*mli 27
当然可以.实际上你可以轻松地看到自己:
l = range(12000)
l = sorted(l, reverse=True)
Run Code Online (Sandbox Code Playgroud)
在我的机器上运行这些行:
real 0m0.036s
user 0m0.024s
sys 0m0.004s
Run Code Online (Sandbox Code Playgroud)
但确实如其他人所说的那样.数组越大,操作越慢.
列表的性能特征在Effbot上描述.
Python列表实际上是作为快速随机访问的向量实现的,因此容器基本上可以容纳与内存中的空间一样多的项目.(您需要列表中包含的指针空间以及指向的对象的内存空间.)
附加是O(1)(分摊的常量复杂度),但是,从序列中间插入/删除将需要O(n)(线性复杂性)重新排序,这将比列表中的元素数量慢.
您的排序问题更加细致,因为比较操作可能需要无限的时间.如果你进行非常慢的比较,那将花费很长时间,尽管它不是Python列表数据类型的错误.
逆转只需要交换列表中所有指针所需的时间(必然O(n)(线性复杂度),因为您只需触摸每个指针一次).