【Python】一篇带你掌握数据容器之列表

news2024/12/23 23:56:09

目录

前言:

一、列表

1.列表的定义

2.列表的下标索引

3.列表的常用操作

(1)index方法:查找某元素的下标

(2)修改特定位置下标的元素

(3)insert(下标,元素)方法:插入元素

(4)append(元素)方法:追加元素1

(5)extend(其他数据容器)方法:追加元素2

(6)del(列表【下标】)/列表.pop方法:删除元素

(7)列表.remove(元素)

(8)列表.clear():清空列表内容

(9)列表.count(元素):统计某元素在列表内的数量

(10)len(列表):统计列表内有多少个元素

4.列表总结

二、列表的遍历

1.while循环

2.for循环

3.对比


前言:

思考一个问题,如果想要记录5名学生的信息,如何做呢?方法一:定义5个变量,但是这种方法不高级且低效,那么有没有更简便的方式呢?由此我们就引入了数据容器,一个变量,记录多份数据,这样的方法就更优雅和高效

数据容器根据特点的不同,如:
是否支持重复元素
是否可以修改
是否有序,等

分为5类,分别是

列表 (list)、元组 (tuple) 、字符串 (str)、集合 (set) 、字典 (dict)

我们将一一学习它们

一、列表

1.列表的定义

基本语法:以[    ]  作为标识

# 字面量
[元素1, 元素2, 元素3,  元素4, ...]

# 定义变量
变量名称 = [元素1, 元素2, 元素3,  元素4, ...]

#定义空列表
变量的名称 = [ ]
变量的名称 = list( )

注意:

列表可以一次存储不同类型(甚至可以是列表)的多个数据,并且支持嵌套

my_list = ['bite', 666, True]
print(my_list)
print(type(my_list))

运行结果:

 


2.列表的下标索引

列表的每一个元素都有其位置下标索引,

(1)从前向后的方向,从0开始,依次递增

(2)从后往前的方向:从-1开始,依次递减

如果是嵌套的列表同样支持下标索引:

要想拿到3这个元素,那么它的下标就是列表【1】【0】 


3.列表的常用操作

编号使用方式作用
1列表.append(元素)向列表中追加一个元素
2列表.extend(数据容器)

将数据容器的内容依次取出,追加到列表的尾部

3列表.insert(下标,元素)在指定下标处插入指定的元素
4del 列表【下标】删除指定下标元素
5列表.pop(下标)删除指定下标元素
6列表.remove(元素)从前往后,删除此元素第一个匹配项
7列表.clear()清空列表
8列表.count(元素)统计元素在列表中出现的次数
9列表.index(元素)查找指定元素的下标,找不到就报错
10

len(列表)

统计容器中有多少个元素
(1)index方法:查找某元素的下标

功能:查找某元素的下标,找到了返回元素下标,如果找不到就返回ValueError

语法:列表.index(元素)

mylist = ['bite', 666, True]
index = mylist.index(True)
print(f"True在列表中的下标索引是:{index}")

#运行结果:2
(2)修改特定位置下标的元素

语法:列表[ 下标 ] = 值

mylist = ['bite', 666, True]
mylist[2] = "Python"
print(mylist)

#运行结果:['bite', 666, 'Python']
(3)insert(下标,元素)方法:插入元素

语法:列表.insert(下标,元素),在指定的下标位置,插入指定的元素

mylist = ['bite', 666, True]
mylist.insert(1, 3)
print(mylist)

#运行结果:['bite', 3, 666, True]
(4)append(元素)方法:追加元素1

语法:列表.append(元素),将指定元素添加到列表的尾部

mylist = ['bite', 666, True]
mylist.append([1, 2, 3])
print(mylist)

#运行结果:['bite', 666, True, [1, 2, 3]]
(5)extend(其他数据容器)方法:追加元素2

语法:列表.extend(其他数据容器),将其数据容器的内容取出,依次追加到列表的尾部

mylist = ['bite', 666, True]
mylist.extend([1, 2, 3])
print(mylist)

#运行结果:['bite', 666, True, 1, 2, 3]
(6)del(列表【下标】)/列表.pop方法:删除元素

语法1:del(列表【下标】)(没有“ . ")

mylist = ['bite', 666, True]
del mylist[0]
print(mylist)

#运行结果:[666, True]

语法2:列表.pop(下标)

mylist = ['bite', 666, True]
mylist.pop(0)
print(mylist)

#运行结果:[666, True]
(7)列表.remove(元素)

功能:删除某元素在列表中的第一个匹配项

语法:列表.remove(元素)

mylist = ['bite', 666, True]
mylist.remove("bite")
print(mylist)

#运行结果:[666, True]
(8)列表.clear():清空列表内容

语法:列表.clear()

mylist = ['bite', 666, True]
mylist.clear()
print(mylist)

#运行结果:[]
(9)列表.count(元素):统计某元素在列表内的数量

语法:列表.count(元素)

mylist = [1, 2, 3, 5, 3, 2, 2]
print(mylist.count(2))

#运行结果:3
(10)len(列表):统计列表内有多少个元素

语法:len(列表)

mylist = [1,  5,  2, 2]
print(len(mylist))

#运行结果:4

4.列表总结

(1)可以容纳多个元素(上限为2**63-1、9223372036854775807个)

(2)可以容纳不同类型的元素(混装)

(3)数据是有序存储的(有下标序号)

(4)允许重复数据存在

(5)可以修改(增加或删除元素)


二、列表的遍历

1.while循环

mylist = ['bite', 666, True]
index = 0
while index < len(mylist):
    # 通过index变量取出对应下标的元素
    element = mylist[index]
    print(f"列表的元素:{element}")
    #将循环变量(index)每一次循环都+1
    index += 1

2.for循环

语法:

for 临时变量 in 数据容器:

        对临时变量进行处理

mylist = ['bite', 666, True]
for element in mylist:
    print(f"列表的元素:{element}")

3.对比

在循环控制上:

       while循环可以自定循环条件并自行控制
        for循环不可以自定循环条件,只可以一个个从容器内取出数据

在无限循环上:
        while循环可以通过条件控制做到无限循环
        for循环理论上不可以,因为被遍历的容器容量不是无限的

在使用场景上:
        while循环适用于任何想要循环的场景(更灵活
        for循环适用于遍历数据容器的场景或简单的固定次数循环场景


本次内容就到此啦,欢迎评论区或者私信交流,觉得笔者写的还可以,或者自己有些许收获的,麻烦铁汁们动动小手,给俺来个一键三连,万分感谢 !  

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

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

相关文章

C/C++调试工具 - gdb详解

C/C调试工具 -gdb详解 1 简介 2 常用的命令 3 使用的条件 4 程序调试 4.1 直接运行程序 4.2 断点调试(在某一行) 4.3 断点调试(在函数入口处打断点) 5 调试core文件 5.1 生成core文件的方法 5.2 调试core文件 1 简介 GDB是Linux下非常好用且强大的调试工具。GD…

Linux组调度

为什么引入组调度可以参考这篇文章的讨论。核心原因是基础的调度算法都是基于任务的&#xff0c;如果用户A有10个任务&#xff0c;用户B只有1个任务&#xff0c;假设这些任务的优先级都相同&#xff0c;那么用户A得到的CPU时间将是用户B的10倍&#xff0c;这样从任务的角度看虽…

Mac Qt 5.13.2无法加载文件

在Mac OS 14.0系统上&#xff0c;离线安装了Qt5.13.2&#xff0c;但是新建一个工程&#xff0c;却无法正常使用&#xff0c;只能加载出pro文件&#xff0c;其他文件都加载不出来&#xff0c;提示错误&#xff1a;Project ERROR: failed to parse default search paths from com…

手机号验证码登录

登录入口 1.app 正常登录入口 2.app 网页登录&#xff0c;比如分享直播卡片时&#xff0c;进入直播间需要先进行登录 3.pc 登录 一&#xff0c;app常见的登录方式 1.手机号验证码登录 2.用户名密码登录 3.一键登录 二&#xff0c;手机验证码登录示意图 三&#xff0c;流程 0.登…

No178.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

已解决:java.net.BindException: 地址已在使用

解决zookeeper报错&#xff1a;java.net.BindException: 地址已在使用&#xff0c;是因为端口被占用。显示Starting zookeeper ... STARTED&#xff0c;jps没有QuorumPeerMain进程。 问题截图&#xff1a; 看似Starting zookeeper ... STARTED&#xff0c;实则集群并没有启动…

Linux 程序开发流程 / 基本开发工具 / Vim / GCC工具链 / Make 工具 / Makefile 模板

编辑整理 by Staok。 本文部分内容摘自 “100ask imx6ull” 开发板的配套资料&#xff08;如 百问网的《嵌入式Linux应用开发完全手册》&#xff0c;在 百问网 imx6ull pro 开发板 页面 中的《2.1 100ASK_IMX6ULL_PRO&#xff1a;开发板资料》或《2.2 全系列Linux教程&#xf…

华为ensp:rip宣告

ip全部配置好 R1 进入r1视图模式 rip network 192.168.1.0 network 1.0.0.0 R2 进入r2视图模式 rip network 192.168.2.0 network 1.0.0.0 这样就完成了宣告 display ip routing-table 查看路由表

Java基础——数组(一维数组与二维数组)

文章目录 一维数组声明初始化与赋值内存图解 二维数组声明初始化与赋值内存图解 数组练习 数组是多个相同类型的数据按一定顺序排列的集合。 说明&#xff1a; 数组是引用数据类型&#xff0c;数组的元素是同一类型的任何数据类型&#xff0c;包括基本数据类型和引用数据类型…

基于YOLOv8的输电线路异物识别算法应用

基于 YOLOv8 的输电线路异物识别算法应用 输电线路作为电力系统的重要一环&#xff0c;保证其安全稳定运行是十分必要的。由于长期暴露于室外&#xff0c;线路所面临的不安全因素繁多&#xff0c;异物入侵便是其中之一。异物可能会引起线路短路甚至诱发火灾&#xff0c;因此要加…

使用3D Touch,让你左右逢源,操作更自然

本文介绍了如何在苹果设备上使用3D Touch&#xff0c;以及哪些应用程序支持该工具。3D Touch在Apple Watch上也称为Force Touch&#xff0c;在iPhone XR上也称为Haptic Touch。 如何改变3D触摸的灵敏度 按照以下步骤调整3D Touch的灵敏度&#xff1a; 1、打开“设置”应用程…

docker安装AWVS 23.9.231005181

本文声明仅AWVS用作学习使用 将镜像文件secfa_awvs.tar复制到目标机器上。 我的百度网盘文件路径&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1frbOH4UZlMz9bMXyZs1o0g 提取码&#xff1a;na6y –来自百度网盘超级会员V6的分享 在目标机器上&#xff0c;使用以下命…

原码补码相关运算

求补码步骤 原补转换 -127为负数&#xff0c;其补码为原码01111111&#xff0c;取反10000000&#xff0c;加一&#xff0c;10000001。 例如&#xff1a; 【-1】原码 10000001 反码bai11111110 补码duzhi 11111111 【3】原码 00000011 反码 00000011 补码 00000011 【-127】…

【多线程】

文章目录 概念一、线程的生命周期图二、线程的创建方式一方式二线程API线程优先级sleep阻塞守护线程多线程并发安全问题 总结 概念 线程:一个顺序的单一的程序执行流程就是一个线程。代码一句一句的有先后顺序的执行。多线程:多个单一顺序执行的流程并发运行。造成"感官上…

算法——滑动窗口

什么是窗口&#xff1f;就是符合题目要求的区域内的数据&#xff0c;将每次符合数据的窗口内的数据记录下来&#xff0c;然后将窗口后移&#xff0c;寻找其他符合要求的数据&#xff0c;每次进入窗口和退出窗口都需要一定的要求 一、 LCR 008. 长度最小的子数组 - 力扣&#…

Git之分支与版本->课程目标及知识点的应用场景,分支的场景应用,标签的场景应用

1.课程目标及知识点的应用场景 Git分支和标签的命名规范 分支 dev/test/pre/pro(即master) dev:开发环境--windows (自己的电脑) test:测试环境--windows/linux (公司专门的测试电脑 pre:灰度环境(非常大的公司非常重要的项目) pro:正式环境 灰度环境与正式环境的服务器配置…

论文笔记:Deep Trajectory Recovery with Fine-Grained Calibration using Kalman Filter

TKDE 2021 1 intro 1.1 背景 用户轨迹数据对于改进以用户为中心的应用程序很有用 POI推荐城市规划路线规划由于设备和环境的限制&#xff0c;许多轨迹以低采样率记录 采样的轨迹无法详细说明物体的实际路线增加了轨迹中两个连续采样点之间的不确定性——>开发有效的算法以…

RK3588平台 WIFI的基本概念

一.安卓WIFI框架 Android WIFI系统引入了wpa_supplicant&#xff0c;它的整个WIFI系统以wpa_supplicant为核心来定义上层接口和下层驱动接口。Android WIFI主要分为六大层&#xff0c;分别是WiFi Settings层&#xff0c;Wifi Framework层&#xff0c;Wifi JNI 层&#xff0c; W…

ARM Linux 基础学习 / Linux Shell,必要命令全记录

编辑整理 by Staok。 本文部分内容摘自 “100ask imx6ull” 开发板的配套资料&#xff08;如 百问网的《嵌入式Linux应用开发完全手册》&#xff0c;在 百问网 imx6ull pro 开发板 页面 中的《2.1 100ASK_IMX6ULL_PRO&#xff1a;开发板资料》或《2.2 全系列Linux教程&#xf…

高级项目管理总结

目录 一、背景介绍二、思路&方案三、过程1.升维思考2.结构化3.心理、知识阶段检验4.微观 四、总结 一、背景介绍 天性对学习对考试充满敌意的我&#xff0c;转变为依赖学习谋生&#xff0c;再到后来书中自有黄金屋&#xff0c;到现在学习对我而言就如同一日三餐&#xff1…