算法小抄3-理解使用Python容器之列表

news2024/11/14 20:43:00

引言

首先说一个概念哈,程序=算法+数据结构,算法是条件语句与循环语句组成的逻辑结构,而数据结构也就是容器. 算法决定数据该如何处理,而容器则决定如何数据如何存储. 不同的语言对容器有不同的实现方式, 但他们的功能都是相似的, 打好容器基础,你就可以在各式各样的语言中来回横跳了

对于任何一个容器来说,它的作用永远是数据的存储,它提供的API接口应该包含基本的增删改查能力与迭代遍历功能,而对于python这样的高级语言来说,你不需要管容器底部是怎么实现的,只需要关注如何使用即可

初始化

service = ['http','ssh','ftp']

通过这样的方式,创建了一个名为service的列表,它按照顺序装有三个元素http,ssh和ftp

根据索引获取

print(service[1])    ##输出第二个元素,ssh
print(service[-1])   ##输出最后一个元素,ftp

属于增删改查中的部分, 通过索引下标来获取指定元素,http,ssh,ftp的正负下标分别为0,1,2和-3,-2,-1

切片

print(service[1:])   ##打印第一个元素之后的内容
print(service[:-1])  ##打印最后一个元素之前的内容
print(service[::-1])  ##倒序输出

是一种创建列表的方式,切片并没有改变原来的列表而是在原来列表的基础上创建了一个新的列表,每次对service进行切片,都会创建出一个新的列表,原来的列表还是能照常使用

重复

print(service * 3)   ##输出三遍

也是一种创建列表的方式,原来的列表依然没有被改变,创建了一个长度为原列表三倍的新列表

连接

service1 = ['nfs','samba']
print(service + service1)

是一种创建列表的方式,通过组合两个列表,获得一个新的列表

成员操作赋

print('nfs' in service)   ##判断是否存在

名字可能有点拗口,其实就是判断某个元素是否在列表中存在,其本质和遍历相似,只不过python提供了更方便的接口让你不用写循环也能知道某个元素是否存在,若存在则输出true否则为false

迭代列表

for i in service:
	print(i)       ##遍历输出每个元素

属于遍历功能,即如果想对列表中每个元素进行某项操作时使用,或者想筛选出特定元素都需要使用遍历

列表里嵌套列表

service2 = [['abc','def','www'],[1,2,3],['mike','tony','sun']]

对其索引:print(service2[2][1])   ##第三个元素中的第二个元素
对其切片:print(service2[:][1])   ##第二个元素

这个对于你们学算法的应该很好理解,嵌套两层就是二维,嵌套三层就是三维

增加元素

增加分为插入和追加,其接口分别为insert(idx,element)和append(element)

  • insert有两个参数,第一个是你想要将当前元素插入到哪个位置,第二个参数是需要插入的元素
  • append由于默认在列表末尾添加,所以就不需要第一个参数了,例子如下
  • 至于extend接口,可以理解为连续append,至于为什么要这么个接口,可能要归结于程序员的懒癌了
1.service.append('firewalld')   print(service)    ##append:追加一个元素到列表中

2.extend:拉伸 追加多个元素到列表中  service.extend(['mysql','firewalld'])

3.service.insert(1,'samba')  ###在指定索引位置插入元素  ##在第二个元素的位置插入samba作为第二个元素

删除

对列表元素的删除操作为pop和remove两种

  • pop: 弹出最后一个元素,因为进行过重载,所以支持没有参数与有参数pop(idx),表示弹出第i个元素
  • remove:如果知道列表中元素具体是什么,但是不知道索引位置,可以使用remove接口进行删除
1.service.pop()   ##弹出最后一个元素
a = service.pop(0)  ##弹出第1个元素  ###可以将其赋值

2.service.remove('ssh') ##指定删除对象的名字  ##直接删除,不能将其赋值   ##不能指定序号,只能指定要删除对象

3. del service  ##删除列表

del service   ##直接删除整个列表
print(service)

替换

其实是增删改查中的改操作,列子如下:

1.service[0] = 'mysql'   ##通过索引 重新赋值

2.service[:2] = ['samba','iscsi']  ##通过切片给前两个元素重新赋值

 

查看

可以查看列表中某个元素出现的次数(因为列表不具有自动排重效果,所以会出现某个元素多次出现的情况),它的api是count

service.count('ssh')

也可以查看某个元素的索引位置,例子如下:

service.index('iscsi')    ###最小索引值
service.index('ssh',1,3)   ###从1-3中查找【第二个元素和第三个元素之间】【不取上限】

排序

虽然底层算法对于初学者来说有些复杂,但是用起来还是很简单的啦,只需要调用sort接口,就会对列表进行自动排序,同时sort接口也可以指定一些排序的规则,例子如下:

names = ['alice','Bob','coco','Harry']
names.sort()
names      ###按照ASCLL排序   ###先排序首字母为大写的,再排序首字母是小写的

names.sort(key=str.lower)   ###对字符串排序不区分大小写,相当于将所有元素转换为小写,再排序
names.sort(key=str.upper)   ###相当于将所有元素转换为大写,再排序

 

 

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

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

相关文章

1.Spring Cloud (Hoxton.SR10) 学习笔记—基础知识

本文目录如下:一、Spring Cloud基础知识什么是微服务架构?服务拆分 有哪些注意事项?什么是分布式集群?分布式的 CAP 原则?组件 - Spring Cloud 哪几个组件比较重要?组件 - 为什么要使用这些组件?组件 - Na…

有关白盒加密

白盒密码技术白皮书 有关白盒的概念 其实白盒黑盒之类概念其实是软件保护方面的概念,在很多方面都有应用,例如 黑盒: 传统的加密技术是默认假定处于黑盒中的,也就是假定攻击者无法获得密钥。具体而言,认为攻击者并…

PMP证书含金量如何,打算以后从事项目管理这一行业的有没有必要考这个证书?

建议考一个,虽然说这一纸证书实际不能带来多少利益,只是一个资格证书,项目管理行业入门证书,但是现在很多企业招聘要求中写了“有 PMP 证书”优先录取,还是考一个有备无患。含金量问题一直备受关注,总结了一…

操作系统(1.1)--引论

目录 一、操作系统的目标和作用 1.操作系统的目标 2.操作系统的作用 2.1 OS作为用户与计算机硬件系统之间的接口 2.2 OS作为计算机系统资源的管理者 2.3 0S实现了对计算机资源的抽象 3. 推动操作系统发展的主要动力 二、操作系统的发展过程 1.无操作系统的计算机系统…

Web3中文|日本元宇宙经济“狂飙”

2月27日,三菱、富士通和其它科技公司发布关于建立“日本元宇宙经济区”的协议,表示将联手从角色扮演游戏的角度创建开放的元宇宙基础设施,以推动日本的Web3战略。据了解,日本一直在努力将Web3技术纳入其国家议程,去年1…

规范哈夫曼编码和Deflate算法

经过常规的哈夫曼编码以后,我们需要将每个符号对应的码字记录下来,比较容易想到的是按照字母序记录每个字母的编码,这样的好处是字母与码字的映射关系被隐式记录: 假设字母表 A{a1,a2,a3,a4,a5}\mathcal{A}\{a_1,a_2,a_3,a_4,a_5\…

基于数据驱动的电动车电池数据分析(一)

基于数据驱动的电动车电池数据分析(一) 欢迎关注笔者的微信公众号 笔者过去一年多的时间都在国内一家头部新能源企业实习,主要参与一些数据分析和平台研发的工作。在工作中积累了一些数据分析的经验,其中新能源领域比较多的是一…

曾经被人们看成是异想天开的产业互联网,或许终将会实现

一波还未平息,一波又起。元宇宙的热度还未彻底散去,ChatGPT已经成为了名符其实的新风口。如果用一个概念来定义现在这样一个热点和风口频出的时代的话,我想,用产业互联网或许是再合适不过的了。对此,可能有人并不认同。…

【设计模式】21.访问者模式

概述 定义: 封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。 结构 访问者模式包含以下主要角色: 抽象访问者(Visitor)角色:定义了对每一个元素&a…

Outlook邮箱登录不上?被阻止?这些方法教你解决

Outlook是微软的一款备受欢迎的应用软件,可以用来收发电子邮件、管理联系人信息、记日记、安排日程、分配任务等。然而最近就有很多朋友向东哥反映,有的时候没有办法正常登录outlook 邮箱,这是怎么回事呢?不用担心,今天…

揭秘可视化图探索工具 NebulaGraph Explore 是如何实现图计算的

前言 在可视化图探索工具 NebulaGraph Explorer 3.1.0 版本中加入了图计算工作流功能,针对 NebulaGraph 提供了图计算的能力,同时可以利用工作流的 nGQL 运行能力支持简单的数据读取,过滤及写入等数据处理功能。 本文将简单分享下 NebulaGr…

学习记录 --- Pytorch优化器

文章目录参考文献什么是优化器optimizer的定义optimizer的属性defaultsstateparam_groupsoptimizer的方法zero_grad()step()add_param_group()state_dict()、load_state_dict()优化一个网络同时优化多个网络当成一个网络优化当成多个网络优化只优化网络的某些指定的层调整学习率…

总结对Dva数据流向的简单理解

在刚刚接触Dva时,我最想知道的第一个问题就是: 1. Dva是什么? Dva官网文档的介绍是: dva 是体验技术部开发的 React 应用框架,将上面三个 React 工具库包装在一起,简化了 API,让开发 React 应…

[Datawhale][CS224W]图神经网络(八)

目录一、图神经网络1.1 为什么卷积神经网络 (CNN) 在图形上失败?1.2 一个GNN网络的结构如图:![在这里插入图片描述](https://img-blog.csdnimg.cn/20210606150918449.png?x-oss-processimage/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cH…

MySQL实战解析底层---事务隔离:为什么你改了我还看不见

目录 前言 隔离性与隔离级别 事务隔离的实现 事务的启动方式 前言 和数据库打交道的时候,总是会用到事务最经典的例子就是转账,你要给朋友小王转 100 块钱,而此时你的银行卡只有 100 块钱转账过程具体到程序里会有一系列的操作&#xff0…

高可用/性能

文章目录1.数据库系统架构发展(1)单库架构(2)主备架构(3)主从架构2.主从复制主从同步配置主从复制模式(1)异步复制(2)半同步复制(3)全…

用spectralayers 简单去一下人声做个伴奏

最近有个同事说有个工作要一个歌的伴奏不会下载问我能不能给下一个。问题是我五音不全,也不咋关注伴奏这方面的事儿,然后巧了,当天晚上就有个网上的大哥在群里聊天的时候说有个去人声比较给力的软件,我马上给要来了。 软件叫啥sp…

【代码随想录训练营】【Day29】第七章|回溯算法|491.递增子序列|46.全排列|47.全排列 II

递增子序列 题目详细:LeetCode.491 注意这道题求的是子序列,而不是子数组,子数组要求其数组是原数组的子集,且元素是连续的,而子序列只需要保证至少有两个元素即可,不需要关系元素是否连续。 所以一开始…

测试人员如何在测试环境数据库批量生成测试数据?方案分享

测试人员为了测试某个特定场景,往往需要在测试环境数据库中插入特定的测试数据来满足需求;性能测试时,常需要在测试环境生成大量可用测试数据来支持性能测试;建设持续集成持续交付体系时,我们往往也需要在测试环境生成…

【网络】套接字 -- TCP

🥁作者: 华丞臧. 📕​​​​专栏:【网络】 各位读者老爷如果觉得博主写的不错,请诸位多多支持(点赞收藏关注)。如果有错误的地方,欢迎在评论区指出。 推荐一款刷题网站 👉 LeetCode刷题网站 文章…