Python的list本质是什么
admin
2023-07-21 09:42:51
0


一、利用插入元素的例子详解list之本质

代码一:
count = 10**5
nums = []
for i in range(count):
nums.append(i)
nums.reverse() #翻转功能
代码二:
count = 10**5
nums = []
for i in range(count):
nums.insert(0, i)

简析:两段代码的作用都是将“99999,99998,…,0”这串数字填入列表nums,但其实现方式不同。其中,第一段代码利用循环,先将数字添加到列表nums的尾端,再利用reverse函数翻转,从而达到目的;第二段代码则直接利用insert函数,将数字直接添加到列表nums的首端。看似第二段代码更加便捷,但在实际上,第二段代码的速度下降了两个数量级。


原理:传统列表(即链表)都是通过一系列节点来实现的,除尾节点外的每个节点都有指向下一个节点的指针。而Python中的list不是由相互指向的节点组成,而是一整块单一连续的内存区块,即数组。在进行遍历时,链表与数组的效率相差无几;进行直接访问时,链表需要从头开始遍历以寻找需要访问的元素,而数组则可以通过计算来得到目标元素在内存中的位置;在进行插入时,只要知道插入元素的位置,链表的操作成本非常低,而数组则需要移动插入点右边的所有元素,效率降低了许多。由此可见,上述第二段代码每次插入元素时都需要移动所有已经插入的元素,效率低下。

相关内容

热门资讯

白宫宴会厅越建越贵,特朗普被曝... 白宫宴会厅越建越贵,特朗普被曝动用公款,这到底是怎么回事?特朗普为何对宴会厅如此执着?特朗普心心念念...
外墙防水施工多少钱一平方 外墙防水多少钱一平方米45-70元1、需要根据当地市场行情及施工环境来估算,一线城市人工费相对来说比...
南宁外墙渗水防水补漏多少钱 其他2条回答 回复者:花与少年cn 外墙防水的话,如果漏的情况不多。可以建议用补漏剂,这样节约成...
建筑防水布大概多少钱 已有2条回答 回复者:gsk88952481 建筑防水布的价格主要是在55元一平方米,这种建...
请问做外墙防水堵漏的师傅一天多... 已有2条回答 回复者:魏滨海 外墙防水堵漏楼主你好,很高兴我能为你回答这个问题,现在这样的师...
新房楼顶有裂缝正常吗 不正常,屋顶墙体之间出现伸缩缝,造成乳胶漆墙面产生裂纹,可以先铲除墙面基层,将裂缝清洗干净后,再往裂...
纸尿裤事件经历反转再反转,国家... 极目新闻评论员 屈旌一纸检测报道,牵动万千父母的心;两轮舆论反转,让一场婴幼儿用品安全事件变成罗生门...
原创 传... 6月20日消息,据科技媒体FundaAI报道,英特尔已与中国台湾第二大晶圆代工厂联华电子(UMC,简...
小米最高端旗舰!MIX Fol... 据博主数码闲聊站透露,小米一款型号为2608BPX34C的全新机型正式通过工信部入网认证,这款产品预...
父亲节礼物指南:千元大爆品,全... 六月是充满温情的月份,端午节与父亲节接踵而至,加之618大促的余热未消,正是为父母更换新手机的绝佳时...