《人生苦短,我学Python》——列表(List)

昨天,我们学习了一种数据结构——元组。今天我们将学习另一种数据结构——列表

列表又叫List,与元组的结构类似,也可以用于存储多个类型的数据。接下来,我们一起学习列表的用法–>


在这里插入图片描述


文章目录

  • 一、要点先知:
  • 二、基础讲解:
    • 1. 存储对象——装什么?
    • 2. 访问方法——如何访?
      • (1)取单个元素——索引:
      • (2)取连续多个元素——切片:
        • 常规切片法:
        • 步长切片法:
        • 列表逆序切片法:
    • 3. 修改错误——如何改?
      • :warning:列表和元组的异同:
    • 4. 追加元素——append():
    • 5. 插入元素——insert():
    • 6. 删除元素——pop():
  • 三、列表的另类定义:


一、要点先知:

我们通过下面这段代码来理解列表的相关知识:

# 定义一个列表:
friendName = ["Kevin", "Tony", "Asum"]# 输出整个列表:
print(friendName)# 访问列表的第一个元素:
print(friendName[0])# 修改列表的第一个元素:
friendName[0] = "Jessica"# 切片访问列表元素:(下标从0开始)
# 1.切片访问整个列表,冒号两边没有数字
print(friendName[:])# 2.切片访问从第二个元素开始的所有后续元素
print(friendName[1:])# 3.切片访问第一个到第三个元素(但不包括第三个),即访问第一个和第二个元素
print(friendName[:2])# 4.切片访问第2个元素
print(friendName[1:2])# 5.列表逆序输出:
print(friendName[::-1])# 向列表中追加元素:
friendName.append(2021)
#print(friendName)# 向列表中追加列表:
friendName.append(["May", "Anna"])
#print(friendName)# 使用insert()往列表第一项添加元素"Tony":
friendName.insert(0,"Tony")# 使用pop()1删除列表中的元素:
# 没有参数时默认删除列表末尾
friendName.pop()# 删除列表第二个元素(下标从0开始)
friendName.pop(1)
  • friendName:变量名,用来存储这个列表。

  • []:一对中括号,是定义列表的固定格式。

  • ,:逗号,列表内部数据之间使用逗号分隔开。

  • 空格:两个空格,这里的空格不是必须的。但为了代码美观,建议在逗号后面加一个空格。

  • 字符串:三个字符串,是friendName这个列表里面包含的具体数据。

✨如果你已经有了一定的编程基础(比如C,C++,Java等等),相信本文后面的内容将对你作用不大,可以自行跳过,后面的内容主要争对于将python作为第一门编程语言的同学。


二、基础讲解:

1. 存储对象——装什么?

我们知道元组中可以存储多种类型的数据。

列表与元组一样,列表中的数据元素也可以是任何一种类型,如下所示,整型、浮点型、布尔数等。除此之外,也可以是整型,浮点型,字符串或布尔数的任意组合。

#  元素全是整数的列表
integer=[1,2,3,5,7]
#  元素全是浮点数的列表
floatNumber=[1.5,1.6,1.7,1.8]
#  元素全是字符串的列表
string=['aa','b','c','d']
#  元素全是布尔值的列表
boolList=[True,False,True,False]
# 元素全是列表的列表
listList=[[1,2,3],[4,5,6],[7,8,9]]
#  元素全是元组的列表
tupleList=[(1,2,3),(4,5,6),(7,8,9)]
#  元素全是字典的列表
dictList=[{'name':'Tom','age':18},{'name':'Jerry','age':20}]
#  元素全是集合的列表
setList=[{1,2,3},{4,5,6},{7,8,9}]
#  元素全是range的列表
rangeList=[range(1,10),range(10,20),range(20,30)]
#  元素全是None的列表
noneList=[None,None,None,None]
#  元素是混合类型的列表
mixList=[1,1.5,'aa',False,[1,2,3],(7,8,9),{'name':'Jerry','age':20},{1,2,3},range(1,10),None]print(integer)
print(floatNumber)
print(string)
print(boolList)
print(listList)
print(tupleList)
print(dictList)
print(setList)
print(rangeList)
print(noneList)
print(mixList)

2. 访问方法——如何访?

(1)取单个元素——索引:

前面我们学过,使用索引能够获取元组中的元素,而列表与元组类似,也可以使用索引。

#  元素全是整数的列表
integer=[1,2,3,5,7]
#  取出第一个元素
first=integer[0]
#  取出最后一个元素
last=integer[-1]
# 打印元素
print(first,last)
# 修改最后一个元素
integer[-1] = 9
# 打印列表
print(integer)

如上,我们成功地对integer数组进行了取单个元素的操作。

⚠️列表在索引时最容易出现以下 bug:

索引错误

列表中有6个元素,从0开始索引,最大的索引为5或-1

  • 当索引的值超过5以后,就会出现越界并提示:列表索引超出范围(IndexError: list index out of range)

我们知道索引用于取单个元素,如果要提取列表中的多个连续的元素,该怎么操作呢?

接下来,我们先学习切片的概念。


(2)取连续多个元素——切片:

定义:编程中的切片能对元组、列表等有序数据结构进行处理,以截取数据中连续的片段,方便使用。

隐喻:就像从长条面包里面切出某一段面包一样,从一段线性排列的数据中选取某一段数据。
在这里插入图片描述

这段代码做的事情是定义了一个叫做"integer"的列表,并对其进行了切片操作:

#  元素全是整数的列表
integer=[1,2,3,5,7]
#  切出第一个和第二个元素
print(integer[0:2])

[:] 括号中既有数字也有冒号,表明要对列表进行切片;冒号用于分隔切片开始的位置和切片终止的位置。

切片要遵循“左闭右开”原则,就是取左边的数据,不取右边的数据,与数学中的区间类似[0, 2),取左不取右,所以输出[1,2]

⚠️注意:切片与索引类似,也是从0开始,即第一个元素的索引为0。


Python中的切片操作非常灵活,可以通过指定不同的参数来实现不同的切片方式。下面是一些常见的切片操作示例:

常规切片法:

(1.list[start:end]:从索引start开始,到索引end-1结束,以步长为1切片。共有3种情况:

1️⃣开始位置数字不填,默认从第一个元素开始切片。根据“左闭右开”原则,如图,从第一个元素(含)开始,取到第三个元素(含)。
在这里插入图片描述

2️⃣结束位置数字不填,默认从开始位置切片,取到最后一个元素。

注意:不填写结束位置的数字时,列表中最后一个元素也会被提取。如图,表示从第二个元素(含)开始,到最后一个元素(含)结束。
在这里插入图片描述
3️⃣开始位置和结束位置都不填写时,就是取列表中的所有元素。如图,[:]直接取出所有元素,但这种用法不常见,了解即可。
在这里插入图片描述


步长切片法:

(2.list[start:end:step]:从索引start开始,到索引end-1结束,以步长为step切片。

 integer=[1,2,3,5,7]
#步长为2进行切片
print(integer[0::2])

列表逆序切片法:

(3.list[::-1]:以步长为-1切片,实现列表的逆序。

integer=[1,2,3,5,7]
#  步长为-1进行逆序
print(integer[::-1])

学习了列表的切片方法后,元组也可以使用切片来截取一段数据,如下所示。

integer=(1,2,3,5,7)
#  步长为2进行切片
print(integer[::2])
# [0,2)切片
print(integer[:2])
# [1,4)切片
print(integer[1:4])
# 逆序
print(integer[::-1])

3. 修改错误——如何改?

学习了索引和切片访问列表中数据的方式后,如果,某个列表中的数据定义错误了,想要进行修改,该怎样操作呢?

可以直接对相应的元素进行值覆盖!

friendName = ["Kevin", "Tony", "Asum"]
print(friendName)
print(friendName[0])
# 修改,值覆盖
friendName[0] = "Jessica"
print(friendName)

⚠️列表和元组的异同:

相同点

  1. 可以使用索引定位到某个元素;
  2. 可以使用切片取一个片段;
  3. 可以存储不同的数据,如,字符串、整型、浮点型、布尔数等。

不同点:元组的内容定义完成后,里面的内容就不能再修改了!(元组具有不可变的特性)

由于,元组是不可修改的,强行修改会出现以下 bug:
类型错误:
当对元组进行修改时,就会提示元组类型数据更改(TypeError: ‘tuple’ object does not support item assignment)。


4. 追加元素——append():

想象一下在食堂排队打饭,你会自动排在队伍的最后方。

此时排的队列就像是一个列表,自动排在最后方的行为,可以类比为一次对这个列表的“追加”。
在这里插入图片描述
定义:追加一般用于描述在列表的末尾添加元素的行为。

当我们想在列表的尾部追加一个元素的时候,可以在列表名后使用 append() 语句。


integer=(1,2,3,5,7)
#  在列表中添加元素9
integer.append(9)
#  继续在列表中添加元素11
integer.append(11)print(integer)

句点:一个句点,表明将会使用列表的某个内置功能。

  • 这是一个固定的搭配格式,只能使用英文句号,不能替换成其他符号。

append:类似print,表明我们要在这个列表的尾部添加新的元素。

( ):一对英文括号,这是 append 功能的固定格式。括号内是具体要添加到列表末尾的元素。

  • 使用 append() 可以追加不同数据类型,包括:字符串、整型、浮点型、元组以及列表等。

5. 插入元素——insert():

在 Python 中,可以使用 insert() 语句来执行插入元素的操作。

integer=[1,2,3,5,7]
#  在列表中添加元素9
integer.insert(1,9)
#  继续在列表中添加元素11
integer.insert(3,11)print(integer)

句点:句点,表明将会使用列表的某个内置功能。

insert:类似print。表明我们要在这个列表的某个位置插入新的元素。

( ):一对括号,这是insert功能的固定格式。括号内是插入的元素位置以及要插入的元素。

索引:第一个数字位置表示索引,也就是这个元素要插入到列表中的位置。索引是从 0 开始。

逗号:一个逗号,用来分隔插入的位置以及插入的具体数据。

插入元素:插入的元素可以是不同数据类型,包括:字符串、整型、浮点型、元组以及列表等。

  • 插入元素以后,排在此元素之后的原有元素自动后移一位。

列表插入元素的场景在生活中很常见,例如游戏排行榜。

游戏玩家得分如果能上榜排行,系统就会把玩家的分数插入排行榜中。

插入玩家名称和分数后,排在之后的玩家自动后移一位。


6. 删除元素——pop():

如果列表中存在我们不需要的元素,想要删除它,这该怎么操作呢?

这时,我们可以使用 pop(),删除列表中的元素。

integer=[1,2,3,5,7]
#  删除列表最后一个元素
integer.pop()
#  删除列表中的第一个元素
num=integer.pop(0)print(integer)
print(num)

pop(),作用是删除列表中指定索引处的元素。

括号内的数字表示要删除数据的索引,不填写数字则表示默认删除列表中的最后一个数据。

pop() 在删除列表指定的元素后,可以赋值给变量存储下来。


三、列表的另类定义:

我们前面的例子在定义一个列表时,都是使用的常量来作为列表中的元素。

变量也同样可以作为定义列表的元素,并且列表的各种操作也同样适用于变量数据。

first=1
second=2
third=3
integer=[first,second,third]
#  删除列表最后一个元素
integer.pop()
#  删除列表中的第一个元素
num=integer.pop(0)print(integer)
print(num)

上述代码中展示了变量作为列表元素时,代码的使用方式。


好了,列表的内容就到这里了,我们下期再见!
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于 Flink CDC 构建 MySQL 和 Postgres 的 Streaming ETL

官方网址:https://ververica.github.io/flink-cdc-connectors/release-2.3/content/%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B/mysql-postgres-tutorial-zh.html官方教程有些坑,经过自己实测,记录个笔记。 服务器环境: VM虚拟机&am…

护航数字政府建设,美创科技成为“数字政府建设赋能计划”成员单位

近日,“2023软博会-软件驱动数字政府创新发展论坛”顺利召开,本次论坛由中国信息通信研究院、中国通信标准化协会承办,中国通信标准化协会云计算标准和开源推进委员会、数字政府建设赋能计划支持。 天津市工业和信息化局总经济师杨冬梅、中国…

Paimon+StarRocks 湖仓一体数据分析方案

本文整理自阿里云高级开发工程师曾庆栋(曦乐)在 Streaming Lakehouse Meetup 分享的内容,深入探讨了传统数据仓库分析、PaimonStarRocks湖仓一体数据分析、StarRocks 与 Paimon 的协同使用方法与实现原理,以及StarRocks 社区湖仓分…

无涯教程-JavaScript - DELTA函数

描述 DELTA函数测试两个值是否相等。如果number1 number2,则返回1;否则返回1。否则返回0。 您可以使用此功能来过滤一组值。如,通过合计几个DELTA函数,您可以计算相等对的计数。此功能也称为Kronecker Delta功能。 语法 DELTA (number1, [number2])争论 Argum…

python调用GPT实现:智能用例生成工具

工具作用: 根据输入的功能点,生成通用测试点 实现步骤 工具实现主要分2个步骤: 1.https请求调用Gpt,将返回响应结果保存为.md文件 2.用python实现 将 .md文件转换成.xmind文件 3.写个简单的前端页面,调用上述步骤接口 详细代…

table 单元格中嵌套子表格 样式撑开问题

如图,表格中的td嵌套表格,里边表格把外层撑开,不能按100%显示; 解决办法 给父级table 加一个table-layout:fixed;样式

(其他) 剑指 Offer 46. 把数字翻译成字符串 ——【Leetcode每日一题】

❓ 剑指 Offer 46. 把数字翻译成字符串 难度:中等 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。…

cpolar内网穿透

目录 一、引言二、什么是cpolar三、内网穿透四、如何使用cpolar1、下载cpolar软件安装包2、注册cpolar账号3、使用cpolar 一、引言 当我们完成了一个tomcat的web项目之后,如果我们想让其他电脑访问到这个项目,我们可以让其他电脑和本机连接到同一个局域…

leetcode刷题--栈与递归

文章目录 1. 682 棒球比赛2. 71 简化路径3. 388 文件的最长绝对路径4. 150 逆波兰表达式求值5. 227. 基本计算器II6. 224. 基本计算器7. 20. 有效的括号8. 636. 函数的独占时间9. 591. 标签验证器10. 32.最长有效括号12. 341. 扁平化嵌套列表迭代器13. 394.字符串解码 1. 682 棒…

MySQL 如何避免 RC 隔离级别下的 INSERT 死锁?

本文分析了 INSERT 及其变种(REPLACE/INSERT ON DUPLICATE KEY UPDATE)的几个场景的死锁及如何避免。 作者:张洛丹,DBA 数据库技术爱好者~ 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编…

win11和虚拟机上的ubuntu系统共享文件夹

出发点:有时候需要在虚拟机内和win11系统之间进行文件拷贝操作,但是虚拟机内的Vmware Tools不好用 解决方式 开启虚拟机共享文件夹 在虚拟机的Ubuntu系统内的终端命令行输入以下命令 sudo /usr/bin/vmhgfs-fuse .host:/SVMware /mnt/win -o subtype…

电子产品CE认证申请,CE-RED认证

CE认证,即只限于产品不危及人类、动物和货品的安全方面的基本安全要求,而不是一般质量要求,协调指令只规定主要要求,一般指令要求是标准的任务。 构成欧洲指令核心的"主要要求",在欧共体1985年5月7日的&…