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



目录
相关文章
|
28天前
|
IDE 数据挖掘 开发工具
Python作为一种广受欢迎的高级编程语言,以其简洁的语法和强大的功能吸引了众多初学者和专业开发者
Python作为一种广受欢迎的高级编程语言,以其简洁的语法和强大的功能吸引了众多初学者和专业开发者
37 7
|
2天前
|
C语言 Python
[oeasy]python054_python有哪些关键字_keyword_list_列表_reserved_words
本文介绍了Python的关键字列表及其使用规则。通过回顾`hello world`示例,解释了Python中的标识符命名规则,并探讨了关键字如`if`、`for`、`in`等不能作为变量名的原因。最后,通过`import keyword`和`print(keyword.kwlist)`展示了Python的所有关键字,并总结了关键字不能用作标识符的规则。
22 9
|
10天前
|
数据挖掘 大数据 数据处理
python--列表list切分(超详细)
通过这些思维导图和分析说明表,您可以更直观地理解Python列表切分的概念、用法和实际应用。希望本文能帮助您更高效地使用Python进行数据处理和分析。
23 14
|
12天前
|
数据挖掘 大数据 数据处理
python--列表list切分(超详细)
通过这些思维导图和分析说明表,您可以更直观地理解Python列表切分的概念、用法和实际应用。希望本文能帮助您更高效地使用Python进行数据处理和分析。
29 10
|
27天前
|
存储 索引 Python
Python 的基本语法
这些是 Python 的基本语法要素,掌握它们是学习和使用 Python 的基础。通过不断地实践和应用,你将能够更深入地理解和熟练运用这些语法知识,从而编写出高效、简洁的 Python 代码
56 5
|
29天前
|
数据处理 开发者 Python
Python中的列表推导式:简洁高效的数据处理
在编程世界中,效率和可读性是代码的两大支柱。Python语言以其独特的简洁性和强大的表达力,为开发者提供了众多优雅的解决方案,其中列表推导式便是一个闪耀的例子。本文将深入探讨列表推导式的使用场景、语法结构及其背后的执行逻辑,带你领略这一特性的魅力所在。
|
29天前
|
存储 Python
Python编程入门:理解基础语法与编写简单程序
本文旨在为初学者提供一个关于如何开始使用Python编程语言的指南。我们将从安装Python环境开始,逐步介绍变量、数据类型、控制结构、函数和模块等基本概念。通过实例演示和练习,读者将学会如何编写简单的Python程序,并了解如何解决常见的编程问题。文章最后将提供一些资源,以供进一步学习和实践。
32 1
|
人工智能 分布式计算 前端开发
3大阶段,30+教程,超全年度 Python 礼包大放送 | 技术日报(15期)
Python简单易懂,功能强大,同时也是大数据、人工智能时代的首选编程语言之一。这两年 Python 如破竹之势一般出现在开发者眼前,甚至有许多非技术人员也会想通过学习 Python 来提高自己的工作效率。这么火的语言,开发者社区当然要为你带来 “Python 学习大礼包” 了!
989 0
|
17天前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
16天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
下一篇
DataWorks