kateli1991

由于Python列表可以保存不同类型的元素,访问一个元素是否比常量时间更糟糕?



C++等语言要求数组保持单个类型的元素。据我所知,知道每个元素的大小就可以进行指针运算,从而在O(1)时间内访问特定的元素。在

Python lists呢?在

Python列表允许混合元素类型。当然,这个实现不涉及一个缓慢访问的数据结构,比如链表,对吗?访问一个元素的时间是恒定的吗?如果是这样,Python如何使用可变元素类型来实现它?在


已被浏览了9945次
6 日,21 小时 之前提问
2 个回答
fefe Tyson

这是一个简单的索引查找。Python在其列表中存储对对象的引用,而不是对象本身。考虑一个C++(空*)指针列表。每个指针的大小都是已知的,数组查找速度很快,但它指向的对象的大小可能不同。在

评论 - 2020年7月29日 15:44
fefe Tyson

在Python中,所有东西都是一个“对象”(您可以通过类似(1).__add__(2))直观地确认这一点。因此,粗略地说,Python的列表只包含对存储在内存中某处的实际对象的引用。如果你通过列表索引查找一个对象-这是非常非常简单的-它会将你重定向到实际的对象。在

Here是一个很好的表,它向您展示了列表上不同操作的复杂性(大哦)。在

评论 - 2020年7月29日 15:44

最新Python问答

推荐Python问答