Python的进阶之道【AIoT阶段一(上)】(十五万字博文 保姆级讲解)—玩转Python语法(一):面向过程—背上我的行囊—列表(1)(十二)

简介: 玩转Python语法(一):面向过程

4.背上我的行囊

有关列表,字典,元组,集合,字符串;我把它们归到了 4.背上我的行囊 我们可以把它们理解成存储数据的容器,它们类似我们行囊的功能,都是具备存储的功能,如果你学过 C/C++,你可以把它们理解成数组,我们在之前的学习中知道,如果我们连续的去给一个变量不断的进行赋值操作,那么最终结果就是我们变量的值被不断的覆盖(只存储最后一次赋值的结果),如果它们每次赋值的结果我们都想进行存储的话,那么我们当然可以设多个变量每次存储,我们也可以借助列表这些容器去实现存储它们.


4.1 列表

🚩列表是包涵若干元素的 有序连续 内存空间,其中元素被放在 [] 中,每个元素之间用 , 进行隔开,每个元素可以是不同的类型:它既可以是整数,浮点数,字符串,亦可以是我们后续会讲到的:列表,元组,字典,集合甚至函数以及其他对象;在这里你不需要理解这么多,你简单直接的理解成:列表中的元素可以是各种各样的类型即可,下述的列表都是合法的:

[1, 2, 3, 4, 5]
[0.3, 2, 2.1, 3.7]
['hello', 'world', 2, 3.14, 666]

4.1.1 列表的创建,删除与遍历

🚩列表的创建:我们可以直接使用赋值运算符 “=”,直接把一个列表常量(用[]表示列表,列表的元素之间用,隔开)赋值给变量,如果我们想建立一个列表但是不给它赋任何的值,我们直接让变量 “=” 一个空列表([]),即:

# 博主:辰chen
# 博客地址:https://chen-ac.blog.csdn.net/
# 开发时间:2021/12/9 10:02
# 欢迎大家关注AIoT相关博客~
a = ['hello', 'world', 2, 3.14, 666]
b = []        # 建立一个空列表
print(a)
print(b)

image.png

我们还可以调用 list() 函数进行列表的创建,具体操作如下所示:

# 博主:辰chen
# 博客地址:https://chen-ac.blog.csdn.net/
# 开发时间:2021/12/9 10:02
# 欢迎大家关注AIoT相关博客~
a = list(['hello', 'world', 2, 3.14, 666])
b = list()  # 建立一个空列表
print(a)
print(b)

image.png

当然,你可能觉得 list() 函数很没用嘛,写起来还多,但是 list() 函数最主要的功能就是它可以把元组,字符串,字典,集合,range() 等转成列表,我们下面只介绍把字符串和 range() 转为列表,其余等读者学完相应内容之后自行实验:

# 博主:辰chen
# 博客地址:https://chen-ac.blog.csdn.net/
# 开发时间:2021/12/9 10:02
# 欢迎大家关注AIoT相关博客~
a = list('hello world')
b = list(range(10))
print(a)
print(b)

image.png

🚩当一个列表不再使用的时候,我们可以使用 del 把它删除:

# 博主:辰chen
# 博客地址:https://chen-ac.blog.csdn.net/
# 开发时间:2021/12/9 10:02
# 欢迎大家关注AIoT相关博客~
a = list('hello world')
del a
print(a)

image.png

出现:NameError: name ‘a’ is not defined,意思是名称错误:a 未被定义,并不是它未被定义,而是因为我们用 del 操作把它删除了

🚩列表的遍历语法格式如下:

for 迭代变量 in 列表名:
  操作语句

比如我们建立一个列表,并打印所有的列表元素可以如下述代码所示:

# 博主:辰chen
# 博客地址:https://chen-ac.blog.csdn.net/
# 开发时间:2021/12/9 10:02
# 欢迎大家关注AIoT相关博客~
a = list(range(10))
for item in a:
    print(item, end = ' ')

image.png

4.1.2 列表元素的查询

🚩对于一个我们已经创建好的列表,我们如何去快速的访问列表中的元素呢?这里我们介绍一个新的知识:索引,如果你学过 C/C++,你可以把索引理解成数组的下标,但是又略有不同:

image.png

如上图所示,其中红色的数字和蓝色的数字对应的就是该列表的索引(蓝色的数字和红色的数字对应的列表位置是一一对应相匹配的),下面我们用代码去演示:

# 博主:辰chen
# 博客地址:https://chen-ac.blog.csdn.net/
# 开发时间:2021/12/9 10:44
# 欢迎大家关注AIoT相关博客~
a = list(['hello', 'world', 2, 3.14, 666])
print(a[0], a[-5], a[4], a[-1])

image.png

index() 方法用来返回指定元素在列表中 首次 出现的位置(索引),如果列表中不存在该元素则会显示 ValueError:

# 博主:辰chen
# 博客地址:https://chen-ac.blog.csdn.net/
# 开发时间:2021/12/9 10:44
# 欢迎大家关注AIoT相关博客~
a = list(['hello', 'world', 2, 3.14, 666])
print(a.index(3.14))
print(a.index(4))

image.png

可以看出,列表 a 中存在元素 3.14,返回了它的索引 3,列表 a 中不存在元素 4,显示:ValueError


对于列表中的元素查询,我们还可以使用 in 和 not in,返回值为 True 或 False,True 代表在列表中存在你查找的值,False 则代表不存在,代码如下:

# 博主:辰chen
# 博客地址:https://chen-ac.blog.csdn.net/
# 开发时间:2021/12/9 10:44
# 欢迎大家关注AIoT相关博客~
a = list(['hello', 'world', 2, 3.14, 666])
print('hello' in a)
print('2' not in a)     # 注意这里是字符串 '2',并非数字 2 

image.png

4.1.3 列表元素的增删改

🚩首先介绍一个 特别重要 的操作:切片,切片的语法格式为:

列表名[start : stop : step]

切片的结果是对原列表序列的拷贝,切片的范围是 [start, stop)【左闭右开】,虽然参数列表为三个:start,stop,step,但是和 range() 一样,我们可以只传入其中的一个或者两个,其余有如下默认值:

[start:stop]  # step 默认为1
# step 为正数,从 start 开始往后切片
[:stop:step]  # 切片的第一个元素默认为列表第一个元素
[start::step] # 切片的最后一个元素默认为列表最后一个元素
# step 为负数,从 start 开始往前切片
[:stop:step]  # 切片的第一个元素默认为列表最后一个元素
[start::step] # 切片的最后一个元素默认为列表第一个元素

说白了,step的作用就是决定是正向切片还是反向切片,step为负代表为反向切片,反之如果step为正,那么就代表正向切片,切片的步长为 step 绝对值的大小

# 博主:辰chen
# 博客地址:https://chen-ac.blog.csdn.net/
# 开发时间:2021/12/9 11:19
# 欢迎大家关注AIoT相关博客~
a = list([1, 2, 3, 4, 5, 6])
print(a[:: 2])    # 从下标0开始隔一个取一个
print(a[:: -1])   # 反向切片,其实就是让列表反转

image.png

我们除了可以通过切片获取列表中的值,还可以利用切片增加,替换或修改,删除列表元素,下面依次去介绍

1️⃣ 增加元素:可以使用切片操作在列表的任意位置插入元素,这里我们会使用len() 函数,读者只需知道 len(L) 可以返回列表 L 的长度即可,具体操作用代码的形式给出:

# 博主:辰chen
# 博客地址:https://chen-ac.blog.csdn.net/
# 开发时间:2021/12/9 11:19
# 欢迎大家关注AIoT相关博客~
a = list(range(10))
print(a)
# 在列表头部(索引为0)的位置上插入一段 [10, 11, 12] 的列表
a[:0] = [10, 11, 12]    # 可以理解为在0的位置之前插入了[10, 11, 12]
print(a)
# 在索引为6的位置上插入一个元素 13
a[6:6] = [13]
print(a)
# 在列表的末尾插入一段 [-1, -2, -3] 的列表
a[len(a):] = [-1, -2, -3]
print(a)

image.png

我们还可以通过以下方法给我们的列表添加元素:

方法 介绍
append(x) 在列表尾追加一个元素x
extend(L) 将列表L中所有的元素追加至列表尾
insert(index, x) 在列表的index位置插入一个元素x

下面我们通过代码去演示上述函数的用法:

# 博主:辰chen
# 博客地址:https://chen-ac.blog.csdn.net/
# 开发时间:2021/12/11 12:26
# 欢迎大家关注AIoT相关博客~
# 创建一个 [1, 3, 5, 7, 9] 的列表
a = list(range(1, 10, 2))
print(a)
# 将 100 追加至列表a尾
a.append(100)
print(a)
# 将 [2, 4, 6, 8] 追加至列表a尾
a.extend(list(range(2, 10, 2)))
print(a)
# 在 index = 3 的地方插入一个元素 '这是index为3的位置'
a.insert(3, '这是index为3的位置')
print(a)

image.png

2️⃣ 删除元素:和增加元素一样,我们在删除列表中的元素的时候同样有切片和调用函数(方法)两种方法,我们的相关函数如下:

函数(方法) 介绍
remove(x) 删除第一个值为x的元素,如果不存在值为x的元素则会抛出ValueError
pop(index) 删除并返回列表中索引为index的元素,index默认为-1(最后一个元素)
clear(L) 清空列表L

下面关于切片以及相关函数的操作我们利用代码进行讲解:

# 博主:辰chen
# 博客地址:https://chen-ac.blog.csdn.net/
# 开发时间:2021/12/11 13:34
# 欢迎大家关注AIoT相关博客~
a = list(range(10))
print(a)
# 利用切片删除元素
a[:3] = []    # 删除列表的前三项
print(a)
a[:] = []     # 删除列表的所有元素(清空列表)
print(a)
del a
print('------------------------')
a = list(range(10))
print(a)
# remove()函数:
a.remove(5) # 看列表中是否有元素5,有则删除,没有抛出ValueError
print(a)
# pop()函数:
a.pop(4)   # 删除索引为4的元素(第5个元素)
a.pop()    # 默认索引为-1(最后一个元素)
print(a)
# clear()函数:
a.clear()  # 清空列表中的所有元素
print(a)
'''
注意辨析 clear()和del
del是删除列表,clear()是清空列表中的元素
del a 操作的结果为列表a不存在
clear(a) 操作的结果为列表a中的元素都消失
'''

image.png

3️⃣ 修改元素:我们修改元素有两种方法:切片以及为指定索引赋值,下面我们用代码去演示:

# 博主:辰chen
# 博客地址:https://chen-ac.blog.csdn.net/
# 开发时间:2021/12/11 14:03
# 欢迎大家关注AIoT相关博客~
a = list(range(10))
print(a)
# 切片
# 如删除原列表的前三个元素[0, 1, 2],并修改为[10, 11]
a[:3] = [10, 11]
print(a)
# 切片连续(step == 1)不要求等号两边列表长度相等
# 切片不连续(step != 1)要求等号两边列表长度相等
'''
运行会报错:
a[::2] = [2]   # 因为切片不连续,故必须要求等号两边列表长度相等
print(a)
'''
# 隔一个改一个(切片不连续,必须要求等号两边列表长度相等)
a[::2] = ['a', 'b', 'c', 'd', 'e']
print(a)
del a
print('---------------------------')
# 利用索引去修改:
a = list(range(0,10,2))
a[3] = '这是索引为3的点'
print(a)

image.png



目录
相关文章
|
1天前
|
存储 Python
Python中列表解包
【6月更文挑战第18天】
12 2
|
2天前
|
存储 数据处理 计算机视觉
Python中的列表处理:获取与设置缩略图的艺术
Python中的列表处理:获取与设置缩略图的艺术
6 1
|
2天前
|
Python
python 中列表和元组的解包
【6月更文挑战第17天】
12 1
|
21小时前
|
存储 数据库 数据安全/隐私保护
Python基础语法及使用方法
Python基础语法及使用方法
|
22小时前
|
存储 Python
Python的高端语法
Python的高端语法
|
1天前
|
Python
python之列表添加、修改、删除、插入、翻转、排序、复制排序
python之列表添加、修改、删除、插入、翻转、排序、复制排序
4 0
|
1天前
|
存储 Java 程序员
【Python】--- 基础语法(1)
【Python】--- 基础语法(1)
4 0
|
3天前
|
机器学习/深度学习 人工智能 前端开发
Python中的模块化编程
【6月更文挑战第17天】Python模块化编程与软件架构设计的关键在于拆分任务到独立模块,提高代码的可维护性、可重用性和可扩展性。例如,学生管理系统可分解为录入、查询和删除模块。MVC和MVVM架构模式有助于组织代码,而微服务和函数式编程将在未来发展中扮演重要角色。通过示例代码,读者能学习如何实现这些概念,提升项目开发效率和质量。
149 57
|
11天前
|
测试技术 虚拟化 云计算
GitHub高赞!速通Python编程基础手册,被玩出花了!
随着云时代的来临,Python 语言越来越被程序开发人员喜欢和使用,因为其不仅简单易学,而且还有丰富的第三方程序库和相应完善的管理工具。 从命令行脚本程序到 GUI程序,从图形技术到科学计算,从软件开发到自动化测试,从云计算到虚拟化,所有这些领域都有 Python 的身影。 今天给小伙伴们分享的这份手册采用以任务为导向的编写模式,全面地介绍了 Python 编程基础及其相关知识的应用,讲解了如何利用 Python 的知识解决部分实际问题。
GitHub高赞!速通Python编程基础手册,被玩出花了!
|
2天前
|
Python
Python多进程编程详细剖析
Python多进程编程详细剖析
13 3