第8讲:Python中列表的概念与基本使用

news2025/2/26 14:58:33

文章目录

    • 1.列表的概念
      • 1.什么是列表
      • 1.2.列表中元素的索引概念
    • 2.列表的简单定义
    • 3.获取列表中某个元素的索引
      • 3.1.如何获取列表中某个元素的索引
      • 3.2.各种场景获取列表中元素的索引
    • 4.使用运算符in检查列表中是否存在指定元素

1.列表的概念

1.什么是列表

Python中的列表其实就是其他编程语言中的数组,如果理解数组的概念,那么面对Python中的列表将会很简单。

为了能够使程序方便的存储和操作数据,Python语言也是提供了一些内置的数据结构,列表就是其中的一个内置数据结构,我们可以直接在代码中使用这些内置的数据结构。

列表和数组的概念一样,并且表现形式也大差不差,在列表中每一个数据元素都有两个索引元素,也可以说是下标,通过这个索引元素可以精确的找到位于列表中的某个数据元素。

列表的逻辑图如下:

image-20220721172038044

列表会在程序中大量使用,特点如下:

  • 列表中的所有数据元素都是按照顺序有序排列的,列表也属于序列类型。
  • 列表中的所有数据元素都会有两个整数类型的索引元素,一个是从正数索引元素,一个是负数索引元素,通过指定的索引能够精确找到唯一的某个数据元素。
  • 列表中的多个数据元素内容可以存在重复性,例如第一个数据是jiangxl,第二个数据还可以是jiangxl。
  • 列表中可以保存任何类型的数据,不受限制,多个类型的数据可以混合存储在一个列表中。
  • 列表可以根据需求动态的伸缩,可以随意的增删列表中的数据元素,系统也会根据列表的动态变化从而分配和回收内存,因此使用列表前,无需指定列表占用的内存空间。

1.2.列表中元素的索引概念

在列表的概念图中,我们可以看到每个元素都有自己的索引号(索引名),并且在Python中,一个元素有两个索引号,通过索引可以精确到找到列表中特定的元素,第一个元素的索引从0开始。

image-20220721172038044

列表中每个元素都有两个整数类型的索引,分别是:

  • 正数索引,列表中第一个元素的索引是0,从0开始,以此类推,后面元素的索引依次递增1。
  • 负数索引,列表中最后一个元素的索引是-1,从-1开始,依次类推,前面的索引依次递减1。

总之通过列表的两种类型索引号,都可以精确的找到特定元素。

2.列表的简单定义

列表相当于一个集合,在列表内有多个不同数据类型的内容,我们可以将列表赋值给变量,也可以直接打印列表的内容。

1)将列表直接复制给变量

定义列表然后将列表赋值给变量,最后打印变量的结果。

#定义变量liebiao1,将一个列表赋值给变量
liebiao1 = ['Jiangxl','程序员','99','北京交通大学',True]

#打印变量liebiao1即可看到列表的所有值
print(liebiao1)
#输出结果:['Jiangxl', '程序员', '99', '北京交通大学', True]

2)打印一个空列表

还可以打印一个空列表。

#打印一个空的列表
print([])
#输出结果:[]

3)使用list函数定义列表并打印

可以通过list函数来定义列表,然后使用print函数的打印列表的内容。

#使用内置函数list创建列表
print(list(['Jiangxl','程序员','99','北京交通大学',True]))
#输出结果:['Jiangxl', '程序员', '99', '北京交通大学', True]


#range函数是定义整数序列的,同样也是一个列表
print(list(range(1,20,3)))
#输出结果:[1, 4, 7, 10, 13, 16, 19]

image-20220727170113626

4)使用len函数查询列表的长度(有多少个元素)

len函数可以统计列表中有多少个元素。

print(len(mylist))

5)使用count方法查询列表中一个元素出现的次数

mylist = ['西瓜', '草莓', '芒果', '火龙果', '山竹', '西瓜']

xgcount= mylist.count('西瓜')
print('西瓜出现了' + str(xgcount) + '次')

#输出结果:西瓜出现了2次

3.获取列表中某个元素的索引

3.1.如何获取列表中某个元素的索引

当我们定义好一个列表后,在列表中的每一个元素,我们都可以通过该元素的索引号来找到这个元素,首先我们先来看一下如何通过元素找到对应的索引号。

想要查看列表元素对应的索引号,可以调用index()方法来获取,但是该方法只能返回列表元素的正数索引,也就是第一个元素的索引号大于0的那个索引。

接下来我们定义下面一组列表,在图中我已经标记了每个元素的索引号,下面我们通过index方法来获取列表中某个元素的索引号。

image-20220727222026586

index方法的获取某个元素索引的语法格式:

print(列表名.index(列表中的元素))

3.2.各种场景获取列表中元素的索引

1)定义列表

定义上图的列表。

liebiao2=['python',77,99,'jiangxl',66,55,77,65]
print(list(liebiao2))

image-20220727222421014

2)获取列表中jiangxl元素的索引

分析:jiangxl这个元素在列表中的第四个位置上,索引起始是从0开始的,那么该元素的索引则是3。

print(liebiao2.index('jiangxl'))
#输出结果:3

打印出jiangxl这个元素的索引号为3。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B9rxwDJH-1669512080525)(https://gitcode.net/weixin_44953658/typorajiangxl-image/-/raw/master/Python-Image/image-20220727222749812.png)]

3)获取列表中77元素的索引

77这个元素在列表中出现了2次,也就代表该元素是重复的,我们先来观察一下当列表中有重复元素时,默认情况下Python会获取哪一个元素的索引。

print(liebiao2.index(77))
#输出结果:1

77这个元素在第二个位置和第七个位置处都定义了,默认情况下index()方法会读取第一次出现这个元素的索引号,也就是1。

image-20220727223130222

4)当列表中有重复的元素时获取指定元素的索引

在上面,77这个元素在列表中定义了多次,有重复值,index方法只会读取第一次出现的索引号,那么我们要读取后面出现这个元素的索引号是多少时,就需要用到起始索引号(start)结束索引号(stop),指定index方法读取指定索引号范围内指定元素的索引号。

当index方法使用起始、结束索引号时,一定要指定开始索引,结束索引可以不指定默认是最后一个,切记不要只指定结束索引,否则查询的内容就不会是我们想要的。

当指定结束索引时,结束索引是不会被查询的,因此结束索引一定要比查找元素是索引大,否则数据将会不准确。

语法格式:
列表名.index(元素,起始索引,结束索引)

#代码的意思就是说,在起始索引号和结束索引号范围内,查找元素的索引号。

例如我们要读取77这个元素第二次在列表中出现的索引号,代码如下:

分析:第一个77元素在索引0~2之间,第二个77元素在索引5之后,因此我们需要指定起始索引为5,结束索引可指定可不指定,指定结束索引时,结束索引一定是大于查询元素的索引号的,否则返回的并不是我们想要的数据。

#在index方法中指定起始索引来获取指定范围内的元素索引号
print(liebiao2.index(77,5))
#代码的意思是:从索引号5后一直到最后一个索引处开始查询,查询出77这个元素的索引号
#返回结果:6


#在index方法中指定起始索引、结束索引,来获取指定范围内的元素索引号
print(liebiao2.index(77,5,7))
#代码的意思:从索引号5开始到索引号7这个范围内,查询77这个元素的索引号
#返回结果:6

通过指定元素的起始索引和结束索引,当列表中有重复元素时,就可以查找出特定元素的索引号。

image-20220727224449891

5)获取列表中不存在的元素索引号

当我们要获取列表中不存在的元素索引号时,会抛出valueerror的错误。

print(liebiao2.index(8888))

image-20220727224654288

4.使用运算符in检查列表中是否存在指定元素

一个列表中会包含很多个元素,我们可以使用运算符in去检查列表中是否有我们指定的元素。

  • 使用运算符in检查列表中是否存在指定的元素,如果存在则返回True,如果不存在则返回False。
  • 使用运算符not in检查列表中是否不存在指定的元素,如果不存在则返回True,如果存在则返回False。

1)定义一个列表

mylist = ["jiangxl", "linux", "kubernetes", "docker", "devops", 789, 987, 123]

2)检查k8s是否存在于列表mylist中

print("k8s" in mylist)

#输出结果:False

3)检查jiangxl是否存在于列表mylist中

print("jiangxl" in mylist)

#输出结果:True

4)检查k8s是否不存在于列表mylist中

print("k8s" not in mylist)

#输出结果:True

5)检查jiangxl是否不存在于列表mylist中

print("jiangxl" not in mylist)

#输出结果:False

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

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

相关文章

骨传导蓝牙耳机哪个品牌好,骨传导蓝牙耳机品牌推荐

在选择骨传导耳机时还不知道选择什么品牌好?下面小编就给大家推荐几款做的不错的骨传导耳机,大家要注意,在选择骨传导耳机时,还是要选择一些较大的骨传导品牌,这样无论是耳机体验还是售后服务都有保证。 1、南卡Runne…

【机器学习入门项目10例】(八):贝叶斯网络-拼写检查器

🌠 『精品学习专栏导航帖』 🐳最适合入门的100个深度学习实战项目🐳🐙【PyTorch深度学习项目实战100例目录】项目详解 + 数据集 + 完整源码🐙🐶【机器学习入门项目10例目录】项目详解 + 数据集 + 完整源码🐶🦜【机器学习项目实战10例目录】项目详解 + 数据集 +

pagination分页插件的getResult明明有数据,但是getTotal方法为0

最近把之前毕设的SSM项目改成SpringBoot项目时遇到了明明后端数据库查询到了数据,但是page的getTotal方法却是0的bug 解决办法: 先导入需要的依赖,这里注意ssm项目的依赖和SpringBoot的依赖是不一样的,这个只要导入极少启动依赖…

视频 | 扩增子文库拆分和16S序列合并

点击阅读原文跳转完整教案。基因组中的趣事(二)- 最长的基因2.7 million,最短的基因只有8 nt却能编码基因组中的趣事(一):这个基因编码98种转录本1 Linux初探,打开新世界的大门1.1 Linux系统简介…

Strimzi Kafka Bridge(桥接)实战之二:生产和发送消息

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是《Strimzi Kafka Bridge(桥接)实战之》系列的第二篇,咱们直奔bridge的重点:常用接口,用实际操作体验如何用…

27. Ubuntu 20.04 开机自动挂载文件/etc/fstab

自动挂载文件/etc/fstab1.fstab2. 参数含义3.开机自动挂载3.1 查看要挂载的磁盘UUID3.2 向fstab文件中添加不同于热插拔的设备,对于硬盘可能需要长期挂载在系统下,所以如果每次开机都去手动mount是非常痛苦的,当然Ubuntu系统的GNOME桌面自带的…

Map学习笔记——深入理解ConcurrentHashMap

ConcurrentHashMap 是我们日常开发中使用频率最高的并发容器之一了,具有如下特点: 基于JDK8分析 存储结构和HashMap一样,都是数组 链表 红黑树是线程安全的容器,底层是通过CAS自旋 sychronized 来保证的key 和 value 都不允许为空&#xf…

【华为OD机试真题 python】叠积木【2022 Q4 | 200分】

■ 题目描述 【叠积木】 有一堆长方体积木,它们的长度和宽度都相同,但长度不一。 小橙想把这堆积木叠成一面墙,墙的每层可以放一个积木,也可以将两个积木拼接起来,要求每层的长度相同。 若必须用完这些积木,叠成的墙最多为多少层? 如下是叠成的一面墙的图示,积木仅…

太强了,全面解析缓存应用经典问题

1、前言 随着互联网从简单的单向浏览请求,发展为基于用户个性信息的定制化以及社交化的请求,这要求产品需要做到以用户和关系为基础,对海量数据进行分析和计算。对于后端服务来说,意味着用户的每次请求都需要查询用户的个人信息和…

jdk-synchronized源码学习

synchronized介绍java中jdk1.6之前和jdk1.6及之后synchronized完全不一样。1.6之前直接上来都是重量级锁导致java的性能很低效,而1.6及之后甲骨文公司对其进行优化,通过一个锁的升级过程从而来支持一些非复杂的场景。那么本文主要是针对synchronized的源…

Java并发-ThreadLocal的使用

ThreadLocal 概述 当使用 ThreadLocal 维护变量时,ThreadLocal 为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。当多个线程操作这个变量时,实际操作的是自…

python实现熵权法

原文:https://mp.weixin.qq.com/s/vPNPdbZy11q1qsfEz9etZQ 1 熵权法简介 熵源自于希腊语 “ 变化 ” 表示变化的容量,德国物理学家克劳修斯为了将热力学第二定律格式化而引入熵的概念 。 熵的概念来源于热力学,是用来描述过程的不可逆现象…

sql注入手法详解

sql定义 sql--结构化查询语句 sql注入:首先我们通过前端将我们的payload(恶意代码)传送到后台服务器 传送到后台以后 我们提交的payload拼接到sql语句中 作为sql语句的一部分被执行 从而导致数据库又被脱库甚至删库的风险 使得数据库受损 sql注入手法 sql注入可…

领悟《信号与系统》之 非周期信号的傅里叶变换及性质

非周期信号的傅里叶变换及性质一、非周期信号的傅里叶变换二、 典型信号的傅立叶变换1.单边指数信号2.偶双边指数3. 矩阵脉冲信号4. 奇双边指数5. 符号函数6. 冲激信号7. 阶跃信号三、常用傅里叶变换表这里记录的信号都是非周期信号的傅里叶变化,频谱变换的特点就是…

VsCode 配置eslint,支持typescript的语法检查,及时发现低级语法错误,包括函数未定义等行为

背景 最近学习cocos的小游戏制作,参考游戏管理器的代码进行调试的时候,发现自己运行的结果一直都是跟官方效果不一样,没有自动生成更多的方块。肉眼检查代码差异,基本上代码是一样的,浏览器页面调试的时候也看不出问题…

[附源码]Python计算机毕业设计高校教室申请管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

【仿牛客网笔记】项目进阶,构建安全高效的企业服务——热帖排行

p:投票数 T:发布时间间隔 G:系数,通常为1.5,1.8 计算帖子的分数 注入RedisTemplate 帖子刷新 实现定时任务 刷新帖子 实现更新帖子分数 刷新帖子分数任务 配置Trigger 注释掉定时任务,注释注解就可以 启动服务之…

人口数据集:地级市常住人口与户籍人口、人口1%抽样调查数据两大维度指标数据

一、地级市常住人口与户籍人口 1、数据来源:地级市常住人口数据(主要来源于各地政府公报),户籍人口数据来源于《中国城市统计年鉴》 2、时间跨度:2003-2019年 3、区域范围:280个地级市 4、指标说明&…

[附源码]Python计算机毕业设计电影网站系统设计

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

【Spring】Bean生命周期

一、背景: 自动注入 UserService 对象, UserService 结构如下 二、创建 Bean 的整体流程: UserService.class ------> 无参的构造方法 ------> 普通对象(无值) ------> 依赖注入 ------> 初始化前&#…