算法小抄3-理解使用Python容器之列表
引言
首先说一个概念哈,程序=算法+数据结构,算法是条件语句与循环语句组成的逻辑结构,而数据结构也就是容器. 算法决定数据该如何处理,而容器则决定如何数据如何存储. 不同的语言对容器有不同的实现方式, 但他们的功能都是相似的, 打好容器基础,你就可以在各式各样的语言中来回横跳了
对于任何一个容器来说,它的作用永远是数据的存储,它提供的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) ###相当于将所有元素转换为大写,再排序
相关文章:
算法小抄3-理解使用Python容器之列表
引言 首先说一个概念哈,程序算法数据结构,算法是条件语句与循环语句组成的逻辑结构,而数据结构也就是容器. 算法决定数据该如何处理,而容器则决定如何数据如何存储. 不同的语言对容器有不同的实现方式, 但他们的功能都是相似的, 打好容器基础,你就可以在各式各样的语言中来回横…...
Vue3中watch的value问题
目录前言一,ref和reactive的简单复习1.ref函数1.2 reactive函数1.3 用ref定义对象类型数据不用reactive二,watch的value问题2.1 ref2.1.1 普通类型数据2.1.2 对象类型数据2.1.3 另一种方式2.2 reactive三,总结后记前言 在Vue3中,…...
【线性筛+DP】最大和
看错题了,呃呃,其实就是个简单DP最大和 - 蓝桥云课 (lanqiao.cn)题意:思路:设dp[i]为以1为终点的最大和,然后枚举状态和决策就行了主要是线性筛的应用,它可以预处理出一个数的最小质因子是多少Code…...
openpnp - configure - 丢弃(Discard)位置的设置
文章目录openpnp - configure - 丢弃(Discard)位置的设置概述笔记设置丢弃位置吸取元件失败后, 吸嘴一直吸气的处理ENDopenpnp - configure - 丢弃(Discard)位置的设置 概述 测试时, 吸取了一个元件, 吸取成功了, 现在想将这个料丢掉. 点击控制面板-Special页中的Discard不好…...
java Object 万字详解 (通俗易懂)
基本介绍构造方法成员方法hashCode()getClass()toString()equals()finalize()JavaBean重写Object类的方法重写toString重写equals一、基本介绍Object类是java类层次最顶层的基类(父类),所有类都是直接或间接继承自Object类,因此&a…...
Java并发简介(什么是并发)
文章目录并发概念并发和并行同步和异步阻塞和非阻塞进程和线程竞态条件和临界区管程并发的特点提升资源利用率程序响应更快并发的问题安全性问题缓存导致的可见性问题线程切换带来的原子性问题编译优化带来的有序性问题保证并发安全的思路互斥同步(阻塞同步…...
团队API管理工具-YAPI
团队API管理工具-YAPI 推荐一款接口管理平台,操作简单、界面友好、功能丰富、支持markdown语法、可使用Postman导入、Swagger同步数据展示、LDAP、权限管理等功能。 YApi是高效、易用、功能强大的api管理平台,旨在为开发、产品、测试人员提供更优雅的接…...
学习记录 --- Pytorch优化器
文章目录参考文献什么是优化器optimizer的定义optimizer的属性defaultsstateparam_groupsoptimizer的方法zero_grad()step()add_param_group()state_dict()、load_state_dict()优化一个网络同时优化多个网络当成一个网络优化当成多个网络优化只优化网络的某些指定的层调整学习率…...
Flink State 状态后端分析
flink状态实现分析 state * State* |* -------------------InternalKvState* | |* MergingState |* | |* …...
和年薪30W的阿里测开工程师聊过后,才知道我的工作就是打杂的...
前几天和一个朋友聊面试,他说上个月同时拿到了腾讯和阿里的offer,最后选择了阿里。 阿里内部将员工一共分为了14个等级,P6是资深工程师,P7是技术专家。 其中P6和P7就是一个分水岭了,P6是最接近P7的不持股员工&#x…...
C#开发的OpenRA的界面布局数据加载
C#开发的OpenRA的界面布局数据加载 当显示完成加载界面之后,就是进行其它内容处理。 因为后面内容的加载会比较长时间,所以首先显示加载界面是一种非常友好的方法。 因此在软件设计里,尽可能先显示界面,让用户先看到程序正在运行, 然后再处理时间长的加载。如果不这样做,…...
并查集结构
文章目录并查集特点构建过程查找两个元素是否是同一集合优化查找领头元素设置两个元素为同一集合构建结构应用场景并行计算集合问题并查集特点 对于使用并查集构建的结构,可以使得查询两个元素是否在同一集合,以及合并集合的操作无限接近O(1) 构建过程…...
全国CSM敏捷教练认证将于2023年3月25-26开班,报名从速!
CSM,即Certified Scrum Master,是Scrum联盟发起的Scrum认证。 CSM可以帮助团队正确使用Scrum,从而提高项目整体成功的可能性。 CSM深刻理解Scrum的价值观、实践以及Scrum框架。 CSM是“服务型领导”,帮助Scrum团队一起紧密合作。 …...
JavaEE进阶第六课:SpringBoot ⽇志⽂件
上篇文章介绍了SpringBoot配置文件,这篇文章我们将会介绍SpringBoot ⽇志⽂件 荔枝1.日志有什么用2.自定义日志输出2.1获取程序日志对象2.2使用相关方法输出日志2.3日志级别2.3.1日志级别的作用2.3.2日志级别如何设置2.4日志格式3.持久化日志4.更简单的日志输出4.1使…...
外置MOS管平均电流型LED降压恒流驱动器
产品描述 AP5125 是一款外围电路简单的 Buck 型平均电 流检测模式的 LED 恒流驱动器,适用于 8-100V 电压 范围的非隔离式大功率恒流 LED 驱动领域。芯片采用 固定频率 140kHz 的 PWM 工作模式, 利用平均电 流检测模式,因此具有优异的负载调整…...
python+pytest接口自动化(6)-请求参数格式的确定
我们在做接口测试之前,先需要根据接口文档或抓包接口数据,搞清楚被测接口的详细内容,其中就包含请求参数的编码格式,从而使用对应的参数格式发送请求。例如某个接口规定的请求主体的编码方式为 application/json,那么在…...
开发手册——一、编程规约_3.代码格式
这篇文章主要梳理了在java的实际开发过程中的编程规范问题。本篇文章主要借鉴于《阿里巴巴java开发手册终极版》 下面我们一起来看一下吧。 1. 【强制】大括号的使用约定。如果是大括号内为空,则简洁地写成{}即可,不需要换行;如果是非空代码…...
十七、Django-restframework之序列化器(二)
1. 序列化器 REST framework提供了一个serializer类,它可以非常方便的序列化模型实例和查询集为JSON或者其他内容形式。它还提供反序列化,允许在验证传入数据后将解析的数据转换回复杂类型。 2. 定义序列化器 在crm应用目录下创建serializers.py文件&a…...
python GUI图形化编程-----wxpython
一、python gui(图形化)模块介绍: Tkinter :是python最简单的图形化模块,总共只有14种组建 Pyqt :是python最复杂也是使用最广泛的图形化 Wx :是python当中居中的一个图形化,学习结构很清晰 Pywin :是pyth…...
【Python 】yyyy-MM-dd HH:mm:ss 时间格式 时间戳 全面解读超详细
时间格式 时间格式(协议)描述gg时期或纪元。y不包含纪元的年份。不具有前导零。yy不包含纪元的年份。具有前导零。yyyy包含纪元的四位数的年份。M月份数字。一位数的月份没有前导零。MM月份数字。一位数的月份有一个前导零。MMM月份的缩写名称,在AbbreviatedMonthN…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...
