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,一经查实,立即删除!

相关文章

河北2018年职称计算机开始,2018河北职称计算机考试操作题答案(8页)-原创力文档...

PAGEPAGE 131、说明:以下文件名及文件夹名均不区分大小写,而且所有字母和数字都是英文半角字符1、?在ComputerA文件夹下建立如下的文件夹结构:(4分)????ComputerA?———北京——海淀区??????????????|?????????…

mkenvimage

mkenvimage -s bin文件size -o uboot-env.bin uboot-env.txt

关于php的字符串编码

PHP中的字符串可以用四中方式来定义: 单引号,双引号,Nowdoc结构 , heredoc 结构 也就说用这四中方式命名的字符串不管有没有值,都是字符串类型的变量。 但是,字符串遍历是已经定义好了怎么操作这些字符串&a…

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

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

计算机图形处理与应用程序,计算机图形处理与应用

本文主要介绍了计算机图形图像处理的基本概念;导出三维图形几何变换矩阵的一般形式;简要介绍了消隐技术;介绍了AutoLISP语言的功能、特点及绘图程序,并结合简单实例,展示了开发的实际效果。计算机图形处理及其应用摘要计算机图像处理技术产生于上个世纪80年代末,经历…

ARM Linux 3.x的设备树(Device Tree)

宋宝华 Barry Song <21cnbaogmail.com>1. ARM Device Tree起源 Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称“this whole ARM thing is a f*cking pain in the ass”&#xff0c;引发ARM Linux社区的地震&#xff0c;随后ARM社区进行了一系列的重大修正。在…

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

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

win7连接sftp_SFTP远程连接服务器上传下载文件-vs2013项目实例

本项目仅测试远程连接服务器&#xff0c;支持上传&#xff0c;下载文件&#xff0c;更多功能开发请看API自行开发。环境&#xff1a;win7系统&#xff0c;vs2013vs2013项目实例下载地址&#xff1a;CSDN下载如果没有CSDN积分&#xff0c;百度网盘下载(密码&#xff1a;uqob)文件…

累觉不爱

不知不觉已经九年了&#xff0c;再过一个年头就满十了。 记得刚入职AI的时候&#xff0c;看着有人捧着个十年奉献奖的时候&#xff0c;心里还是有些小小的鄙夷的。那时候朝气蓬勃&#xff0c;充满自信&#xff0c;什么都是不放在眼里的。 在AI的前五年&#xff0c;即是成长最快…

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

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

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

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

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

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

pin controller driver代码分析

一、前言 对于一个嵌入式软件工程师&#xff0c;我们的软件模块经常和硬件打交道&#xff0c;pin control subsystem也不例外&#xff0c;被它驱动的硬件叫做pin controller&#xff08;一般ARM soc的datasheet会把pin controller的内容放入GPIO controller的章节中&#xff09…

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

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

lm opencv 算法_OpenCV进行图像相似度对比的几种办法

// PSNR.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include // Console I/O#include // String to number conversion#include // Basic OpenCV structures#include // Image processing methods for the CPU#include // Read images#include // GPU…

android程序获取WIFI的IP地址和MAC地址

转自&#xff1a;http://my.oschina.net/chenj/blog/68680 近日在鼓捣这玩意&#xff0c;拿出来大家分享一下&#xff0c;代码比较简单&#xff0c;如果有不懂的再问 <Button android:id"id/btn"android:text"获取IP"android:layout_width"fill_pa…

计算机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)&#xff0c;对于平台总线来说&#xff0c;无非是两块组成 platform_driver和platform_device&#xff0c;在a5d2的bsp中&#xff0c;因为引入了device tree&#xff0c;因此&#xff0c;代码里已经看不到 platform_…

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

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