python学习——列表

news2024/10/3 6:32:10

一、列表介绍
可以将列表视作一个容器,里面可以存储多个元素。这些元素可以是不同的数据类型。
二、列表的操作
2.1.列表的创建
方式一:使用中括号[]进行列表的创建,元素之间使用英文的逗号隔开。例如
在这里插入图片描述
在上图中,lst1是列表对象名,=就是赋值号,后面就是利用中括号创建列表的方式。
方式二:使用内置函数list(),根据内置函数创建完成之后,再赋给列表对象进行应用。
在这里插入图片描述
2.2.列表的特点
(1)有序排序,print输出的时候是按照列表元素的顺序进行输出的。
在这里插入图片描述
在这里插入图片描述
(2)列表中的元素是通过索引获取的,那么索引映射唯一的数据。从前往后是正索引,从后往前是负索引,正索引是从0开始的,负索引是从-1开始的。
在这里插入图片描述在这里插入图片描述
(3)列表可以存储重复的数据
在这里插入图片描述
在这里插入图片描述
(4)任意的数据类型都可以存储在列表中
(5)列表是根据需要动态分配和回收内存的。也就是说会根据列表中元素的多少动态分配内存
2.3.列表查询
2.3.1获取列表中指定元素的索引
(1)利用index获取列表中指定元素的索引,在这种方法中,如果列表中存在相同的元素,那么返回的索引值是这些相同元素中第一个元素的索引。
在这里插入图片描述在这里插入图片描述
(2)如果列表中的元素不存在,那么就会输出ValueError.
在这里插入图片描述
在这里插入图片描述

(3)还可以在指定的范围内进行查找。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.3.2获取列表中的单个元素
在前面的2.3.1部分讲了由元素根据index获取索引,现在本部分讲由索引去获取列表中的元素。
(1)正向索引是从0到N-1的。
(2)逆向索引是从-N到-1的。
(3)指定索引不存在,报错IndexError
如下图所示
在这里插入图片描述
运行结果在这里插入图片描述
2.4.列表的切片操作
切出来的列表是一个新的列表,最后切片的结果就是原列表中片段的拷贝。
一般表示形式

列表名[start:stop:step]

其中,start和stop确定了切片的范围,切片区间一般是左闭右开,一般情况下步长也就是step默认为1,step为正整数或者是负整数。
(1)step为正数,那么是从start开始往后计算切片。

[:stop:step]

在这种情况下切片的第一个元素默认是列表的第一个元素

[start::step]

在这种情况下切片的最后一个元素默认是列表的最后一个元素
例如

#建立一个列表
lst = [0,1,2,3,4,5,6,7,8,9]
#列表切片,列表名[start:stop:step]

#step为正,前向切片
print(lst[1:6:1])#前向切片,步长为1
print(lst[1:6:2])#前向切片,步长为2
print(lst[:6:1])#前向切片,省略start
print(lst[1::1])#前向切片,省略stop
print(lst[1:6:])#前向切片,默认步长1

运行结果
在这里插入图片描述

(2)step为负数,那么是从start开始往前计算切片。

[:stop:step]

在这种情况下切片的第一个元素默认是列表的最后一个元素

[start::step]

在这种情况下切片的最后一个元素默认是列表的第一个元素
例如

#建立一个列表
lst = [0,1,2,3,4,5,6,7,8,9]
#列表切片,列表名[start:stop:step]

#step为负,后向切片
print('原列表:',lst)
print(lst[::-1])#后向切片,省略start和stop
print(lst[8:5:-1])#后向切片,步长为1

print(lst[9:0:-2])#后向切片,步长为2
print(lst[:0:-2])#后向切片,省略start,默认是从列表的最后一个元素开始
print(lst[9::-2])#后向切片,省略stop,默认是到原列表的第一个元素结束

运行结果
在这里插入图片描述

2.5.列表元素的增加
列表元素的增加操作并没有使列表对象发生变化,也就是说仅仅是在原来列表的基础上增加了元素,原来列表的ID值也并未发生改变。
(1)在列表的末尾添加一个元素,append()

lst=[0,1,2,3]
print('初始列表',lst,id(lst))

lst.append(4)
#在列表的末尾添加一个元素
print('添加元素之后的列表lst',id(lst))

运行结果在这里插入图片描述

(2)在列表末尾至少增加一个元素
我们可以先建立新的列表,这个列表中包含所需要添加的一系列元素,再通过扩展的方式进行元素添加,extend()。

#在列表末尾添加一个列表
lst1=[4,5,6,7,'hello','world']
lst.extend(lst1)
print('添加元素之后的列表1',lst,id(lst))

运行结果
在这里插入图片描述
(3)在列表的任意位置添加一个元素,insert()
比如这里,在列表的第一个位置上添加元素hello。

lst=[0,1,2,3]
print('初始列表',lst,id(lst))
#在列表的任意位置添加一个元素
lst.insert(1,'hello')
print('插入元素之后的列表',lst,id(lst))

运行结果
在这里插入图片描述
(4)列表元素的切片操作,先切片后替换,例如

lst=[0,1,2,3]
print('初始列表',lst,id(lst))
#在列表的任意位置添加一个元素
lst1=['hello','world','wuliwuli',100]
lst[1:]=lst1  #表示从1开始切片,索引为1以及索引大于1的元素将被新的列表替换
print('切片',lst,id(lst))

运行结果
在这里插入图片描述
2.6.列表元素的删除
(1)remove()——针对元素
①一次删除一个元素

lst=[0,1,2,3]
print('初始列表',lst,id(lst))
#remove(),一次删除一个元素
lst.remove(1)
print('删除一个元素后的列表',lst,id(lst))

运行结果
在这里插入图片描述
②重复元素只删除第一个

lst=[0,1,2,3,3,3]
print('初始列表',lst,id(lst))
#remove(),相同元素只移除一个
lst.remove(3)
print('相同元素只移除一个',lst,id(lst))

运行结果
在这里插入图片描述
③元素不存在抛出ValueError

lst=[0,1,2,3,3,3]
print('初始列表',lst,id(lst))
#remove(),元素不存在,报错
lst.remove(4)
print('所要删除的元素不存在',lst,id(lst))

运行结果
在这里插入图片描述
(2)pop()——针对索引
①删除一个指定索引位置上的元素

lst=[0,1,2,3,3,3]
print('初始列表',lst,id(lst))
#pop(),删除指定索引位置上的元素
lst.pop(0)
print('删除指定索引位置上的元素',lst,id(lst))

运行结果
在这里插入图片描述
②指定索引不存在抛出IndexError

lst=[0,1,2,3,3,3]
print('初始列表',lst,id(lst))
#pop(),索引不存在
lst.pop(6)
print('索引不存在',lst,id(lst))

运行结果
在这里插入图片描述
③不指定索引,则删除列表中的最后一个元素

lst=[0,1,2,3,3,3]
print('初始列表',lst,id(lst))
#pop(),未指定索引
lst.pop()
print('没有指定索引',lst,id(lst))

运行结果
在这里插入图片描述
(3)切片,一次至少删除一个元素
此部分分为产生新的列表和删除原列表中的元素,删除原列表中的元素就相当于拿一个空列表区取代原列表中的元素。

lst=[0,1,2,3,'hello','world']
print('初始列表',lst)

#切片,产生新的列表
newlist=lst[1:4]
print('切片后的列表',newlist)
#切片,不产生新的列表,仅删除原来列表中的内容
lst[1:4]=[]
print('删除列表中的元素',lst)

运行结果
在这里插入图片描述

(4)clear(),对列表进行清空

lst=[0,1,2,3,'hello','world']
print('初始列表',lst)

#对列表进行清空处理
lst.clear()
print(lst)

运行结果
在这里插入图片描述
这里的运行结果是删除列表中所有的元素
(5)del(),删除列表
与clear不同的是,这里的del是删除整个列表

lst=[0,1,2,3,'hello','world']

#删除列表
del lst
print(lst)

运行结果
在这里插入图片描述
删没了,完全找不到

2.7.列表元素的修改
(1)指定索引,更改元素(为指定索引的元素赋予一个新的值)

lst=[0,1,2,3,'hello','world']
print('原列表',lst)
#改列表中的一个元素
lst[5]='python'
print('更改元素后的列表',lst)

运行结果在这里插入图片描述
(2)为指定的切片赋予一个新的值,从而达到修改的目的

lst=[0,1,2,3,'hello','world']
print('原列表',lst)
#赋予切片新的值,进行修改操作
lst[1:3]=[7,8]
print('更改后的列表',lst)

运行结果
在这里插入图片描述
2.8.列表元素的排序操作
对列表元素进行排序操作,并没有改变原来的列表。
(1)调用sort()方法默认按照从小到大的顺序进行排序,也就是升序排序,但也可以指定reverse=True,进行降序操作。

#列表的排序

lst=[409,364,373,383,374,377,406]
print('排序前的列表',lst,id(lst))

#sort,默认升序排序
lst.sort()
print('sort排序后的列表',lst,id(lst))

#通过指定关键字进行降序操作
lst.sort(reverse=True)
print('降序排序后的列表',lst,id(lst))

运行结果在这里插入图片描述
(2)调用内置函数sorted(),可以指定reverse=True,进行降序

#列表的排序

lst=[409,364,373,383,374,377,406]
print('排序前的列表',lst,id(lst))

#内置函数sorted,默认升序
newlist=sorted(lst)
print('默认升序',newlist,id(newlist))

#指定关键字参数,进行降序排序
newlist1=sorted(lst,reverse=True)
print('降序',newlist1,id(newlist1))

运行结果
在这里插入图片描述
可以看到列表的id值发生了变化,也就说这里内置函数排序的方法是产生了新的列表。

2.9.列表生成式
所谓列表生成式就是生成列表的公式

#列表生成式
#例1,产生整数序列生成列表
lst1=[i for i in range(1,10)]
print(lst1)

lst2=[2*i for i in range(1,10)]
print(lst2)

lst3=[i*i for i in range(1,10)]
print(lst3)

例如i,2i,ii,是列表表达式,i是自变量,range是自变量的范围。
运行结果在这里插入图片描述

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

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

相关文章

Ant Design Vue - table实现跨页选择

实现下图跨页选择效果 :rowSelection"{ onSelect: onSelect, onSelectAll: onSelectAll, selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"onSelectChange(selectedRowKeys, selectionRows) {console.log(select, this.selectedRowKeys, this.selecte…

ActiveMQ消息队列主从集群

文章目录 1.ActiveMQ消息队列主从集群模式1.1.主从集群架构1.2.环境规划 2.部署ActiveMQ主从高可用集群2.1.部署Zookeeper集群2.1.1.搭建Zookeeper三节点2.1.2.配置Zookeeper三节点2.1.3.配置Zookeeper各个节点的myid2.1.4.启动Zookeeper集群 2.2.部署ActiveMQ主从集群2.2.1.部…

解决90%面试问题!GitHub顶级“Java面试手册“了解下八股文天花板

前言 身为java开发工程师的你找到自己满意的工作了吗?又或者还在面试的路上经历一次又一次的失败。迟迟找不到正确的开门砖,也许你的技术能力可能并不差但就是在面试上得不到充分的证明。 而那些成功拿下自己满意的开发工作的人又是怎样做到的呢?我这一路走来也有…

2023下半年杭州/广州/深圳软考(中/高级)认证,进入备考

软考是全国计算机技术与软件专业技术资格(水平)考试(简称软考)项目,是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试,既属于国家职业资格考试,又是职称资格考试。 系统集成…

Svg基本使用

1.说明 双闭合标签&#xff0c;默认宽度和高度300*150 svg绘制图形务必在svg标签内使用 ,可以通过样式设置宽高 svg与canvas区别就是它并不是图片 2.绘制直线 2.1代码展示 <linex1"100"y1"100"x2"500"y2"100"stroke"pink…

网络安全行业,面对供大于求的现状是怎么样的呢?

一、网络安全行业市场发展情况 网络时代生活越来越离不开网络&#xff0c;与此同时发生的网络安全攻击事件、非法入侵等等一系列事件都威胁着普通人的生活。没有网络安全保障&#xff0c;个人和企业等重要领域都暴露在风险之中。 二、网络安全行业人才发展需求 网络安全行业至…

【算法题】剪绳子、计算二进制中1的个数、数值的整数次方

剪绳子、计算二进制中1的个数、数值的整数次方 一、剪绳子1.1、题目描述1.2、思路1.3、代码实现&#xff1a;1.4、华丽的快速幂取余1.5、小结 二、数值的整数次方2.1、题目描述2.2、思路2.3、代码实现2.4、小结 三、计算二进制中1的个数3.1、题目描述3.2、思路3.3、代码实现3.4…

Kafka最基础使用

一、概念 2、应用场景 异步处理系统解耦流量削峰日志处理 3、消息队列的两种模式 点对点模式 消息发送者生产消息发送到消息队列中&#xff0c;然后消息接收者从消息队列中取出并且消费消息。消息被消费以后&#xff0c;消息队列中不再有存储&#xff0c;所以消息接收者不可…

(一)CSharp-网络编程

一、OSI 参考模型 &#xff08;1&#xff09;物理层 作为原始的位流或电气处理。 &#xff08;2&#xff09;数据链路层 负责建立、维持和释放数据链路的连接。 &#xff08;3&#xff09;网络层 选择合适的网间路由和交换结点&#xff0c;以确保数据及时传送。网络层将数据…

Flutter性能优化的一些路径思考

不可否认 Flutter 是一个非常强大的移动应用开发框架&#xff0c;我们在技术架构选型时就是选用的 Flutter&#xff0c;特别是跨端能力属实很优秀&#xff0c;but 也逐渐发现在复杂的应用程序实现中&#xff0c;App 的性能会受到一些影响。 其实这个问题&#xff0c;我们内部…

如何用Dialog DA1468X DK PRO测试其他板子的电流

2021.09.27 Jim 目录 工具准备... 1 PC上位机安装... 1 打开PC上位机... 1 消除DA1468X开发板本身底电流... 2 测试待测板子的功耗... 3 电压调节... 4 跳线帽... 6 工具准备 DA1468X DK PRO开发板一套&#xff0c;不需要装顶板的小板子&#xff0c;只需要母板&#…

「缤纷色彩的饼状图」:通过使用matplotlib库绘制饼状图,让读者期待在这个色彩缤纷的图表中探索数据的美丽。

嘿&#xff0c;大家好&#xff01;今天我要带你们探索一个有趣的话题&#xff1a;使用matplotlib库绘制饼状图。虽然这听起来可能有些复杂&#xff0c;但我会用轻松幽默的语言给大家讲解&#xff01;准备好了吗&#xff1f;让我们开始吧&#xff01; 首先&#xff0c;我们需要导…

人工智能的奥秘:机器学习的各大门派

本篇文章是博主在人工智能等领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对人工智能等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅解。 文章分类在学习摘录和笔记专…

2023网络安全 -- 正向连接与反向连接

一、正向连接&#xff0c;Linux服务器主动控制windows服务器 1、上传nc到windows服务器上运行 2、以管理员身份运行cmd 3、执行下面命令&#xff0c;监听任意来自8899端口的数据&#xff0c;等待服务器来连接 nc -e cmd -lvvp 8899 4、Linux服务器执行如下命令&#xff0c;i…

解决USB设备PC不识别问题思路(亲测方案)

前言&#xff1a; 因环境是集控封锁USB端口的&#xff0c;所以刚碰到用户出现此问题&#xff0c;一般都认为是策略封堵拒绝了&#xff0c;但经过后面测试及权限查看是没问题的&#xff0c;所以深究一看&#xff0c;完全是USB设备都没有被PC主机识别的问题。按常规我们一般碰到这…

渗透怎么学?渗透测试中超全的提权思路来了!

提权Webshell&#xff1a;尽量能够获取webshell&#xff0c;如果获取不到webshell可以在有文件上传的地方上传反弹shell脚本&#xff1b;或者利用漏洞&#xff08;系统漏洞&#xff0c;服务器漏洞&#xff0c;第三方软件漏洞&#xff0c;数据库漏洞&#xff09;来获取shell。 …

webpack3 打包vue项目导致app体积过大

问题说明&#xff1a;打包导致 js 很大&#xff0c;然后访问特别慢。 Q&#xff1a;如果你的 js 达到了好几M&#xff0c;&#xff08;除了个别情况&#xff0c;比如的代码量真的超级大到不行&#xff0c;其实这个本身就不成立&#xff09;。我最开始就是&#xff0c;打包了我…

CSDN个性化推荐系统-负反馈测试

文章目录 前言一、uc不感兴趣标签过滤测试1.uc不感兴趣标签获取(uc_unlike_tag_list)1.1个人中心界面1.2从标签中可以发现什么&#xff1f;1.3与研发确认点1.4设计开发1.5接口获取结果 2.推荐流文章标签获取(tag_list)2.1部分代码2.2基本标签校验2.3基本标签校验结果 3.推荐流u…

Linux——DNS域名解析服务

个人简介&#xff1a;云计算网络运维专业人员&#xff0c;了解运维知识&#xff0c;掌握TCP/IP协议&#xff0c;每天分享网络运维知识与技能。座右铭&#xff1a;海不辞水&#xff0c;故能成其大&#xff1b;山不辞石&#xff0c;故能成其高。 个人主页&#xff1a;小李会科技的…

【③MySQL 数据查询】:提高查询的效率

前言 ✨欢迎来到小K的MySQL专栏&#xff0c;本节将为大家带来MySQL数据查询的讲解&#xff08;基本、分组、排序、聚合、分页、条件查询&#xff09; 目录 前言一、基本查询二、条件查询三、聚合函数(统计函数)四、分组查询五、排序查询五、分页查询六、总结 一、基本查询 MySQ…