android list 替换元素_Python数据结构(一)List使用(大厂面试解答)

35ed92c10e0c121734ace25c61b96f3c.png

List是什么?

List顾名思义就是列表,那么它具体描述是什么呢?

列表是一个线性的集合,它允许用户在任何位置插入、删除、访问和替换元素。在Python中list是保留字,List中的每个元素都有自己的编号,很像C、C++、java中的数组,但是List更强大。列表主要有以下几个特点:

  • 列表中元素顺序是有序的。比如,你将1,2,3一次存入列表,那个列表中元素顺序一定是1,2,3,而不会是其他的。
  • 列表长度不确定。不同于C/C++里的数组,列表长度不确定,在使用列表时不需要提前声明长度。
  • 列表中存储的元素类型可以不唯一。可以将任何东西加入列表中,其中元素之间可以没有任何关系。
  • 列表中可以有重复元素。
d0dd1b8b1a4f332fff9562450fbc7f40.png

List简单使用

1. 列表创建

创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:

此外,如果创建一些常用的数列等列表,可采取以下pythonic的方法快速创建列表:

2. 列表访问

列表访问和其他数组访问差不多,常用索引。但是python列表可以切片,可以取指定索引区间内的元素。

3. 操作列表的函数

  • len(list):列表元素个数
  • max(list):返回列表元素最大值
  • min(list):返回列表元素最小值
  • list(seq):将元组转换为列表
  • del:删除列表,释放内存空间

例子:

3. 列表类型定义的函数

  • list.append(obj):在列表末尾添加新的对象
  • list.count(obj):统计某个元素在列表中出现的次数
  • list.extend(seq):在列表末尾一次性追加另一个序列中的多个值
  • list.index(obj):从列表中找出某个值第一个匹配项的索引位置
  • list.insert(index, obj):将对象插入列表
  • list.pop(obj=list[-1]):移除列表中的一个元素(默认最后一个元素),并返回
  • list.remove(obj):移除列表中某个值的第一个匹配项
  • list.reverse():反向列表中元素
  • list.sort([func]):对原列表进行排序

例子:

list一些常见函数的时间复杂度

8eebbe816e4171720ce74799c049ab85.png

常见函数的时间复杂度

99b3226ba25eb68aad918aa17f02475f.png

【附加阅读】

底层实现机制

List对象是用c结构来实现,由一个保存元素的指针数组和预先分配的内存总容量构成。分离式结构,两者之间用一个元素建立一个链接,连在一起。能够根据元素的数量自动的扩充或者缩小list的内存大小。

要在内存中给集合开辟一块区域,总得先确定大小(容量),不然如何开辟?另外,确定区域后,还要知道当前已经占用了几个元素(元素个数),一旦溢出,就需要重新申请空间。要表达这种结构,有两种实现方式。一种是把头信息和元素串到一起,形成一个元素个数+2的表。另一种就是把头信息和元素分开放,两者之间用一个元素建立一个链接,连在一起。

c0424b2a0f8dc4b3cb0421bf4e29dcb8.png

存储表信息的单元与元素存储区以连续的方式安排在一块存储区里,两部分数据的整体形成一个完整的顺序表对象。一体式结构整体性强,易于管理。但是由于数据元素存储区域是表对象的一部分,顺序表创建后,元素存储区就固定了。

分离式结构中表对象里只保存与整个表有关的信息(即容量和元素个数),实际数据元素存放在另一个独立的元素存储区里,通过链接与基本表对象关联。一旦表需要扩充,对于一体式结构来说,就要重新申请一块更大的空内存区域,将所有元素放入其中,再清空旧的内存区域。对于分离式结构来说,则需要将链接地址更新一下,顺序表对象是不变的。

List的扩充采取两种策略,每次扩充增加固定数目的存储位置,这种策略可称为线性增长,节省空间,但是扩充操作频繁,操作次数多。每次扩充容量加倍,以空间换时间。从实现上来讲,在python中创建空ist时,会申请一个8个元素大小的内存区域。以后如果满了,就扩容4倍,且当元素总数达到50000时,再扩容就改为2倍。

31b1c2e67425aab6f4ec82e509e0706b.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/432683.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 获取打印机缺纸_JAVASE 语言概述和JAVA

第一章:开发前言计算机分为硬件和软件,一般来说。硬件就是组成计算机的可见的物理组件。我们的电脑、手机、电子设备都算一个小的计算机。而软件提供看不见的指令,这些指令控制硬件并且通过硬件完成特定任务。常见硬件:CPU、内存、…

冯诺依曼原理中计算机包括功能部件,水泥越细,强度发展越快,对混凝土性能也越好...

现象其结定相同的不一果却,水泥现象现象现象确定模糊机现非随随机,下同的条件在相,称为。、越细越快也效期望强度联性某价C激励激励、关值B水平,需要学习得到的机脱产会”“我非常是否属于。下面不是哪个功能够完成的操作页能开始…

南科大计算机系实力a,五大竞赛学科A+高校排行榜发布!北大实力碾压,科大赶超清华...

什么是学科评估?学科评估是教育部官方针对全国大学的专业实力进行分档而得到的,在评价高校的单一专业实力方面非常权威。学科评估分为A、A、A-、B等共9个等级,每个等级内的高校不再另做排名,只为等级不排名次。其中学科评估为A的要…

设置最大值_变频器用远传压力表控制恒压供水参数设置

变频器控制恒压供水的应用介绍在这里以台达变频器为例,利用远传压力表作为反馈信号。控制要求:① 恒压供水变频器的启动和停止,要求用数字面板操作器来控制启停;② 设定压力值要求用数字面板上下键来设定压力(数字0-50对应0-压力表…

为什么中国的程序员总被称为码农?

实际上IT行业在中国并不是特别差的行业,而程序员的工资也并不低,但为什么中国的程序员总被称作码农或者说是苦逼的程序员?中国的程序员生活和欧美的有什么不一样? 编程活动和机械电子一样可以视为一种工艺(craftsmansh…

计算机调节音量找不到,电脑右下角的小喇叭不见了?教你这样操作,轻松调节音量!...

原标题:电脑右下角的小喇叭不见了?教你这样操作,轻松调节音量!一般情况下,如果我们需要调节音量,可以直接通过电脑右下角的小喇叭调节,它是电脑声音设备的图标。但是,最近有位朋友想…

计算机d,计算机词汇d

data block 数据块data connection 数据连接Data Control Language (DCL) 数据控制语言 (DCL)data definition 数据定义data definition language (DDL) 数据定义语言 (DDL)data dictionary 数据字典data dictionary view 数据字典视图data explosion 数据爆炸data file 数据文…

a5d2 mac 驱动分析

2.6内核以后的多数驱动都是基于平台总线驱动模型(platform),对于平台总线来说,无非是两块组成 platform_driver和platform_device,在a5d2的bsp中,因为引入了device tree,因此,代码里已经看不到 platform_…

10以内的分解与组成怎么教_【一年级数学】(上)10以内的分与合技巧及练习题...

《10以内的分与合》知识点数的组成:一个数(1除外)分成几和几,先把这个数分成1和几,依次分到几和1为止。例如:5的组成有1和4、2和3、3和2、4和1。把一个数分成几和几时,要有序地进行分解,防止重复或遗漏。《…

交通与计算机杂志社,交通信息与安全

期刊名称:交通信息与安全主管单位:中华人民共和国教育部主办单位:武汉理工大学;交通计算机应用信息网期刊级别:国家级国际刊号:ISSN:1674-4861国内刊号:CN:42-1781/U邮发代号&#x…

k1658停运到什么时候_最近网传的春节快递停运时间表,是假的!

“我有货,你有钱,其间没有快递员。”最近,杭州市民梁先生的朋友圈里,突然火了一张图片。标记为2019年日历的这张图片上,1月25日和2月12日之间的日期都被白线框定,并打出了“其间没有快递员”的字样。还有一…

a5d2 phy驱动

1. 下面代码实现了phy驱动的实现和注册 2. device tree实现了phy的device 3. 在mdio总线注册后,总线会调用总线驱动的match函数,进行device和driver的匹配 static int mdio_bus_match(struct device *dev, struct device_driver *drv) return (phydrv-…

vs2008配置winddk

Vs2008配置winddk 1、 安装winddk,我安装在了c盘下; 2、 电脑-》属性-》环境配置里 系统变量里加入 DDKBASE,其值是 3、 path变量里增加 ;C:\WinDDK\7600.16385.1; 第二大步:(非常关键) 1、 vs2008里 工具…

android跨进程事件注入(程序模拟用户输入)

转载请注明出处 早想写这篇,一直没空,现在总结下。 需求: 需要在程序内模拟用户输入,比如点击屏幕,或者输入键盘。模拟用户的滑动等。具体的需求,比如测试的时候,测试打开浏览器1000次。或者通过…

三菱d700变频器接线图_图解PLC与变频器通讯接线

plc与变频器两者是一种包含与被包含的关系,PLC与变频器都可以完成一些特定的指令,用来控制电机马达,PLC是一种程序输入执行硬件,变频器则是其中之一。但是PLC的涵盖范围又比变频器大,还可以用来控制更多的东西&#xf…

a5d2启动分析

A5D2对外部存储设备的启动顺序如下图: SDMMC_1接的sd卡,SDMMC_0接的emmc, SPI_0接的串行flash,当外部存储都不可用或没有启动程序的话,会直接进入sam-ba monitor,就可以执行sam-ba提供的各种烧写脚本了。 目前我们使用的烧写脚本…

软件测试菲律宾,英雄联盟手游菲律宾测试资格怎么得 菲律宾测试资格获取攻略[多图]...

英雄联盟手游菲律宾服务器将先行开放测试,所有想体验游戏的玩家可以申请获得测试资格来优先体验,下面各位玩家一起来看一下测试资格的获取方法吧。目前游戏只能够在外服测试,而且是菲律宾的服务器才行,这是国外游戏测试的一个老套…

ug建模文本怎么竖着_UG建模知乎答疑练习小集锦

持续更新中……solidworks 如何在圆弧边折弯?​www.zhihu.comsolidworks像这样使用扫描为什么得不到结果?​www.zhihu.com请问一下solidworks像我这样使用扫描加了引导线但为什么没有反应(想扫描一个杨桃那样的东西)?​www.zhihu…

win10 iis网站服务器,windows10如何搭建IIS服务器

web服务器无处不在,本次教程主要简单介绍一个简单的web服务IIS,IIS主要适用于ASP.NET、ASP等语言使用。1、打开控制面选择程序和功能2、点击启用或关闭windows功能打开一个小框框提供给用户配置相关软件,本次主要打开IIS功能 ,具体…