Python从入门到精通——2. 1 列表创建及相关操作
前言
序列是Python中最基本的数据结构,序列中的每个值都有对应位置上的数据值,称之为索引。
注意:索引的第一个是0
在Python中,一共有6个内置类型,其中列表和元组是最常见的类型。
1. 列表
1.1 列表是什么及其创建
列表是由一系列按特定顺序排列的元素的组成。包括你不仅可以创建包含字⺟表中所有字⺟、数字 0~9 或所有家庭成员姓名的列表,还可以将任何东西加⼊列表,其中的元素之间可以没有任何关系。列表通常包含多个元素,因此给列表指定⼀个表⽰复数的名称(如 letters、digits 或 names)是个不错的主意。
你可以把列表理解为C语言中的数组,但是Python的列表是一个更宏观的概念,它可以包括你想到的任何数据内容。
Python中,列表用中括号[]表示,用逗号分割其中的元素(ps:这里都是指英文半角下的符号,不能用中文符号,不然就会报错)。
举个例子:
可以看到:Python 将打印列表的内部表⽰,包括⽅括号。
1.2 列表的相关操作
1.2.1 列表索引访问
单个索引访问
列表是一个有序集合,也就是说其中的元素并不是无序的,每个元素都有自己的位置,也就是[[#前言]]说的索引。我们要访问列表中的某一个位置,可以直接告诉Python这个位置的索引(我们说的第n个元素或位置,其索引要减去1,也就是索引为n-1)。要访问列表元素,可以指出列表的名称加上元素索引,索引要放在中括号内。
图片来源:菜鸟教程
举个例子:
这里有个特殊的方法,可以让你返回列表中的最后一个元素,无论列表的长度是多少,你都可以用索引-1来表示列表的最后一个元素,以此类推,索引-2用来访问倒数第二个元素……,如下:
ps:访问的索引不能超过列表最后一个元素的索引,这样将会直接导致报错。只要列表不为空,索引-1来访问列表最后一个元素都有效
索引切片访问
可以利用[]和:来确定一个索引范围来进行切片,就是对列表的某一段切出来进行打印。
图片来源:菜鸟教程
注意:这里:右边的索引是不会被取到的,如下的1:4,是取不到索引为4的位置的元素。
同样,也可以用负数索引来表示倒数第几个元素
有一种特殊情况,在:的左右两边是可以不加索引值的,意思是直接取到头,比如2:,表示从索引为2的(第三个)的元素取到最后一个(包括最后一个)。在前面切片范围的:之后还可以添加一个:,表示步长,所谓步长可以理解为等差数列的公差,就是隔一个步长取一个元素。
你也可以用标准化输出来使用列表中的值,也就是第一章的f标准化输出
1.2.2 列表的修改、添加、删除
Python的列表一般是动态的,也就是你可以对其中的某些元素进行一些操作来改变列表。比如当以后你自己做一个项目的适合,你自己做了一个游戏,游戏中有一些怪物,怪物是用一个列表存储的,当你消灭了一个怪物,这个怪物就会从列表中删除,相应的,当你通过一个关卡,列表中的怪物也会进行更新。
列表的修改
列表的修改十分简单,只是利用赋值运算符对某个索引位置的元素进行覆盖赋值。如下:
列表的添加和删除(更新)
列表的添加是一个很重要的操作,你可以用来更新你的列表数据,以达到你的目标要求。
首先介绍一下队列:队列是一种先进先出(FIFO)的数据结构,我们可以使用列表来实现队列的基本功能。我们都知道在一个地方排队,是要从队伍末尾开始排的(不考虑没素质的人)。这样我们列表基本的添加和删除都是在列表的末尾进行操作的
append()函数
函数语法:list.append(obj)
首先来介绍列表的内置函数,可以把一个列表看成一个队列,这个append()函数也是满足队列的条件,是在列表的末尾进行添加。
pop()函数
函数语法:list.pop([index=-1])
ps:pop()的默认参数就是最后一个索引,一般不自主选择(当然也可以自己选择索引)。这里需要注意,pop()函数是有返回值的,返回值就是你选择删除的数据,可以理解为一个抽象的栈,把数据从栈里面弹出来pop()函数是和append()函数相对的,这个函数是将列表的最后一个元素删除。


insert()函数
函数语法:list.insert(index, obj)
ps:- index – 对象 obj 需要插入的索引位置 - obj – 要插入列表中的对象。
这个函数字面意思就是插入,你可以插入数据到列表的任意一个地方,你甚至可以插入一个列表,这就是列表的嵌套。当你插入一个数据后,后面的所有数据都会向后移一个位置,也就是索引加一
del语句
语法:del list[index]del不是python3 中的内置函数,del只是一个关键字,就跟import和return一样
del也是可以删除列表中任意位置的数据,你只需要知道数据的索引即可
比较del和pop()
当你想要删除数据时该如何选择呢?这个其实很简单,当你想要直接删除数据并且不想再使用这个数据时,你就可以用del语句,直接将数据清楚;当然你也可以用pop()函数,但是不用一个变量来保存这个删除的数据,也就相当于直接删除。如果你想要将数据从列表中取出来,并且要将这个数据用以其他操作,那么你就只能用pop()函数。
remove()函数
有时候,你不知道要从列表中删除的值在哪个位置。如果只知道要删除的元素的值,可使⽤ remove() ⽅法。
ps:remove()函数只会删除第一个满足条件的数据,也就是当找到了第一个需要删除的元素,他就停止寻找了。如果想要删除更多或者全部相同元素,就需要使用循环,这将在后面循环结构的一章进行讲解
列表的排序
sort()函数
函数语法:list.sort(cmp=None, key=None, reverse=False)
- cmp – 可选参数, 如果指定了该参数会使用该参数的方法进行排序。
- key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
- reverse – 排序规则,reverse = True 降序, reverse = False 升序(默认)。
Python有一个内置函数,可以对列表轻松的进行排序。值得注意的是,sort()函数不止对数字进行排序,也可以对字母进行排序。如下:
当然也可以对列表进行逆序,只需要加上参数reverse = True
sorted()函数
sort()函数使用之后,列表的顺序就会被永久改变,如果想要进行临时排序,就可以使用sorted()函数
在调⽤ sorted() 函数后,列表元素的排列顺序并没有变
如果要按与字⺟顺序相反的顺序显⽰列表,也可向 sorted() 函数 传递参数 reverse=True
ps:在并⾮所有的值都是全小写的时,按字⺟顺序排列列表要复杂⼀些。在确定排列顺序时,有多种解读⼤写字⺟的⽅式,此时要指定准确的排列顺序,可能会比这⾥所做的更加复杂。然而,大多数排序方式是以本节介绍的知识为基础的。
reverse()函数
要反转列表元素的排列顺序,可使⽤ reverse() ⽅法。这里是将原列表的顺序进行反转,而不是排序后反转
列表的其他操作
count()函数
这个函数是用来统计列表中某个数据出现的次数的
extend()函数
在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
index()函数
从列表中找出某个值第一个匹配项的索引位置
ps:如果在列表中有重复元素,只会索引到目标数据第一次出现的索引位置
copy()函数
将一个列表进行复制并返回该复制的列表
clear()函数
将列表清空
1.2.3 Python列表脚本操作符
列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。
| Python 表达式 | 结果 | 描述 |
|---|---|---|
| len([1, 2, 3]) | 3 | 列表的长度 |
| [1, 2, 3] + [4, 5, 6] | [1, 2, 3, 4, 5, 6] | 组合 |
| [‘Hi!’] * 4 | [‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’] | 重复 |
| 3 in [1, 2, 3] | True | 元素是否存在于列表中 |
| for x in [1, 2, 3]: print(x, end=” “) | 1 2 3 | 迭代 |
| max([1, 2, 3]) | 3 | 列表中的最大值 |
| min([1, 2, 3]) | 1 | 列表中的最小值 |
[!NOTE] 本文用到的代码集合
blog_code/Python_course_code/2.1.ipynb at main · dunm1e/blog_code (github.com)
- Title: Python从入门到精通——2. 1 列表创建及相关操作
- Author: Dunm1e
- Created at : 2024-09-25 18:56:47
- Updated at : 2024-09-27 17:47:09
- Link: https://dunm1e.github.io/2024/09/25/d56bb46a6c29/
- License: This work is licensed under CC BY-NC-SA 4.0.