本章节主要内容有:
Python列表的定义
Python中的列表,是由一系列按照特定顺序排列的元素组成。是Python中内置的可变的序列。
列表可以存放整数、实数、字符串、列表、元组等任何形式的内容,并且在一个列表中,可以存放多种不同类型的元素。
列表的创建和删除
1. 使用赋值运算符直接创建列表
语法格式:listname = [element1, element2, element3,......,element n]
listname是列表的名称,中括号里的内容为列表中的元素
列表特点:没有个数限制,也不限制元素类型(只要是Python支持的数据类型都可以)
下面例子包含了整数、浮点数、字符串、列表:
list1 = [1,2,3,'我是中国人',12.00,['数据1','数据2']]
2.创建空列表
Python中,可以创建空格列表
语法格式: emptylist = [ ]
3.创建数值列表
语法格式:list(data)
语法格式解析:
- 其中list()为Python中的函数
- data表示可以转换为列表的数据,类型可以是range对象、字符串、元组或者其他可迭代类型的数据。
举个小例子:
print(list(range(10,20,3)))
将会打印出:[10, 13, 16, 19]
4.删除列表
对于不再使用的列表,可以使用del命令对其进行手动删除。
语法格式:del listname,listname为要删除的列表的名称
举个小例子:
list1 = [1,2,3]
del list1
del list2 #list2不存在,执行会报错

注意:
Python有自带的垃圾回收机制,该机制会自动销毁无用的列表,就算我们不对列表手动删除,垃圾回收机制也会对其进行自动回收。
访问列表元素
这里直接上代码示例:
list1 = [1,2,'字符1','字符2',['语文','数学','英语']]
print(list1[2])
print(list1[4])
运行结果:

遍历列表
1.使用for循环实现
语法格式:for item in listname:
代码示例:
#使用for循环遍历列表
list1 = [1,2,'字符1','字符2',['语文','数学','英语']]
for item in list1:
print(item)
代码运行结果:

2.使用for循环和enumerate函数实现
语法格式:
for index,item in enumerate(listname):
#输出index和item
参数释义:
- listname:列表名称
- index:用于保存元素的索引,可作为循环编号输出
- item:用于保存获取到的元素值,要输出元素内容时,直接输出该item
代码示例:
#使用for和enumerate函数循环遍历列表
list1 = [1,2,3,'字符1','字符2','字符3','字符4',['a','b','c']]
for index,item in enumerate(list1):
print(index+1,item)
运行结果:

添加、修改、删除列表元素
1. 添加元素
语法格式:listname.append(obj)
释义:
- listname是列表名称
- obj是要添加的目标元素
- append()方法用来实现添加元素(注意是追加在列表的末尾位置)
代码示例:
list1 = [1,2,3,'字符1','字符2','字符3','字符4',['a','b','c']]
for index,item in enumerate(list1):
print(index+1,item)
print('============添加元素===========')
list1.append('字符5')
for item in list1:
print(item)
代码运行结果:

tips:
在Python中,不仅仅append()方法可以实现元素的添加,insert()方法也能实现。只不过insert方法的效率没有append方法高,所以不推荐使用insert方法。
2. 添加元素列表
语法格式:listname.extend(seq)
释义:
listname是原列表,seq为要添加的目标列表。
代码示例:
#使用extend()方法实现整个列表的添加
list1 = [1,2,3]
list2 = [4,5,6]
list1.extend(list2)
list1.extend([7,8,9])
print(list1)
代码运行结果:

3. 修改元素
修改元素的步骤:
- 首先获取要修改目标元素的索引值index
- 然后通过列表[index]直接为该元素赋值即可
代码演示:
#修改元素值
list1 = ['字符1','字符2','字符3']
print(list1)
list1[2] = '我被重新赋值了'
print(list1)
代码运行结果:

4. 删除元素
删除列表中的元素有两种方式:
- 根据索引值进行删除
- 根据元素内容进行匹配删除
根据索引值删除
代码示例:
#删除某个元素
list1 = ['字符1','字符2','字符3']
print('删除前:',list1)
del list1[2]
print('删除后:',list1)
代码运行结果:
==================== RESTART: E:\python_work\python_demo.py ====================
删除前: ['字符1', '字符2', '字符3']
删除后: ['字符1', '字符2']
>>>
根据元素内容进行匹配删除
代码示例:
#删除某个元素
list1 = ['字符1','字符2','字符3']
print('删除前:',list1)
list1.remove('字符1') #把元素‘字符1’删除掉
print('删除后:',list1)
list1.remove('删除不存在的字符会报错') #这句话会报错
代码运行结果:
==================== RESTART: E:\python_work\python_demo.py ====================
删除前: ['字符1', '字符2', '字符3']
删除后: ['字符2', '字符3']
Traceback (most recent call last):
File "E:\python_work\python_demo.py", line 127, in <module>
list1.remove('删除不存在的字符会报错')
ValueError: list.remove(x): x not in list
>>>
根据上面的演示示例,正确的删除方法为,先判断一下该元素是否存在于列表中,如果存在,再进行remove操作。正确示例如下:
#删除某个元素
list1 = ['字符1','字符2','字符3']
print('删除前:',list1)
if list1.count('字符1') > 0:
list1.remove('字符1') #如果匹配到这个元素,就把元素‘字符1’删除掉
print('删除后:',list1)
if list1.count('删除不存在的字符不会报错') > 0:
list1.remove('删除不存在的字符不会报错') #这句话不会报错
print('============程序执行完毕============')
代码运行结果:
==================== RESTART: E:\python_work\python_demo.py ====================
删除前: ['字符1', '字符2', '字符3']
删除后: ['字符2', '字符3']
============程序执行完毕============
>>>
对列表进行统计和计算
1.获取指定元素出现的次数
使用count()方法可以获取指定元素在列表中出现的次数。
语法格式:listname.count(obj)
代码示例:
#获取指定元素在列表中出现的次数
list1 = ['字符1','字符2','字符3','字符3']
count = list1.count('字符3')
print('该字符出现了',count,'次')
============================================
=========运行结果如下========================
============================================
==================== RESTART: E:\python_work\python_demo.py ====================
该字符出现了 2 次
>>>
2.获取指定元素首次出现的下标
使用index方法可以获取指定元素在列表中首次出现的位置
语法格式:listname.index(obj)
代码示例:
#获取指定元素在列表中首次出现的位置下标
list1 = ['字符1','字符2','字符3','字符3']
obj_index = list1.index('字符2')
print('字符2在该列表中首次出现的位置下标为',obj_index)
============================================
=========运行结果如下========================
============================================
>>>
==================== RESTART: E:\python_work\python_demo.py ====================
字符2在该列表中首次出现的位置下标为 1
>>>
3.统计数值列表的元素和
对于一个数值列表来说,我们可以统计列表中所有元素的和。
语法格式:sum(listname[,start])
其中,listname为要统计的列表名字,start数值(默认值为0)为要和列表元素一起相加的值。
代码示例:
#统计数值列表的元素和
list1 = [1,1,1,1,1]
total_test1 = sum(list1)
total_test2 = sum(list1,0)
total_test3 = sum(list1,6)
total_test4 = sum(list1,9)
print('测试 1 总和为:',total_test1)
print('测试 2 总和为:',total_test2)
print('测试 3 总和为:',total_test3)
print('测试 4 总和为:',total_test4)
============================================
=========运行结果如下========================
============================================
==================== RESTART: E:\python_work\python_demo.py ====================
测试 1 总和为: 5
测试 2 总和为: 5
测试 3 总和为: 11
测试 4 总和为: 14
>>>
对列表进行排序
1. 使用列表对象的sort()方法
语法格式:listname.sort(key=None, reverse=False)
释义:
- listname:列表名称
- key:表示指定从每个元素中提取一个用于比较的键。设置key=str.lower表示为不区分字母的大小写
- reverse:可选参数,默认值为False(表示升序排列)。如果设置为True,则为降序排列
代码示例:
print('=============数字列表的排序============')
#对列表进行排序
list1 = [2,5,1,9,3]
print('未排序的列表:',list1)
list1.sort() #默认为升序
print('升 序:',list1)
list1.sort(reverse=True) #设置为降序
print('降 序:',list1)
print('=============字母列表的排序============')
#对于字母列表的排序,注意key=str.lower设置不能用在整数类型上
list2 = ['a','b','A','B']
print('未排序的列表:',list2)
list2.sort() #默认为区分字母大小写
print('区分字母大小写:',list2)
list2.sort(key=str.lower) #不区分字母大小写
print('不区分字母大小写:',list2)
***********************************************************
************************运行结果如下************************
==================== RESTART: E:\python_work\python_demo.py ====================
=============数字列表的排序============
未排序的列表: [2, 5, 1, 9, 3]
升 序: [1, 2, 3, 5, 9]
降 序: [9, 5, 3, 2, 1]
=============字母列表的排序============
未排序的列表: ['a', 'b', 'A', 'B']
区分字母大小写: ['A', 'B', 'a', 'b']
不区分字母大小写: ['A', 'a', 'B', 'b']
>>>
2. 使用内置的sorted()函数实现
在Python中,也可以使用内置的sorted()函数进行列表排序。
语法格式:sorted(listname, key=None, reverse=False)
释义:
- listname:列表名称
- key:表示指定从每个元素中提取一个用于比较的键。设置key=str.lower表示为不区分字母的大小写
- reverse:可选参数,默认值为False(表示升序排列)。如果设置为True,则为降序排列
代码示例:
#使用函数sorted()对列表进行排序
list1 = [2,5,1,9,3]
list2 = sorted(list1) #默认为升序
list3 = sorted(list1,reverse=True) #设置为降序
print('未排序的列表:',list1)
print('降序:',list2)
print('升序:',list3)
***********************************************************
************************运行结果如下************************
==================== RESTART: E:\python_work\python_demo.py ====================
未排序的列表: [2, 5, 1, 9, 3]
降序: [1, 2, 3, 5, 9]
升序: [9, 5, 3, 2, 1]
>>>
3.使用排序方法需要注意的事项
给大家看这样一段代码:
print('=============数字列表的排序============')
#对列表进行排序
list1 = [2,5,1,9,3]
list2 = list1.sort() #默认为升序
list3 = list1.sort(reverse=True) #设置为降序
print('未排序的列表:',list1)
print('升 序:',list2)
print('降 序:',list3)
print('=============第二段代码=============')
list1.sort()
print('升 序:',list1)
list1.sort(reverse=True)
print('降 序:',list1)
大家猜猜看,这段代码的运行结果会是什么。
==================== RESTART: E:\python_work\python_demo.py ====================
=============数字列表的排序============
未排序的列表: [9, 5, 3, 2, 1]
升 序: None
降 序: None
=============第二段代码=============
升 序: [1, 2, 3, 5, 9]
降 序: [9, 5, 3, 2, 1]
>>>
代码结果如上,我们发现 list2 和 list3 结果为None,说明列表自身的sort()方法直接通过改变自身元素来做排序,每进行一次排序,列表就会发生一次变化。大家再看上面的sorted()函数运行示例,发现原有的列表根本没有发生变化。这一点要特别注意哦。
列表推导式
使用列表推导式可以快速生成一个列表,或者根据某个列表生成满足指定需求的列表。
1. 生成指定范围的数值列表
语法格式:listname = [Expression for var in range]
释义:
- listname:列表的名称
- Expression:用于计算新列表的元素
- var:循环变量
- range:采用range函数生成的range对象
代码示例,生成一个长度为 5 的列表,其中生成的列表的元素为 1~20(生成的随机数包括1和20)之间的随机数。
#生成指定范围的数值列表
import random
random_number = [random.randint(1,20) for i in range(5)]
print("生成的随机数为:",random_number)
random_number = [random.randint(1,20) for i in range(5)]
print("生成的随机数为:",random_number)
random_number = [random.randint(1,20) for i in range(5)]
print("生成的随机数为:",random_number)
*********************************************************************************
************************运行结果如下**********************************************
==================== RESTART: E:\python_work\python_demo.py ====================
生成的随机数为: [8, 17, 14, 4, 2]
生成的随机数为: [14, 13, 15, 12, 4]
生成的随机数为: [10, 20, 20, 17, 14]
>>>
2. 根据列表生成指定需求的列表
语法格式:newlist = [Expression for var in list]
释义:
- newlist:新生成的列表名称
- list:原有列表的名称
- var:变量,值为后面列表的每个元素值
- Expression:用于计算新列表的元素
代码示例,将列表中的元素分别乘以2:
#根据列表生成指定需求的列表
list1 = [1,2,3,4,5]
list2 = [int(x*2) for x in list1]
print('原列表list1:',list1)
print('新列表list2:',list2)
*********************************************************************************
************************运行结果如下**********************************************
==================== RESTART: E:\python_work\python_demo.py ====================
原列表list1: [1, 2, 3, 4, 5]
新列表list2: [2, 4, 6, 8, 10]
>>>
3.从列表中选择符合条件的元素组成新的列表
语法格式:newlist = [Expression for var in list if condition]
释义:
- newlist:新列表
- list:原有列表
- var:变量,值为后面列表的每个元素值
- Expression:表达式,用于计算新列表的元素
- condition:条件表达式,用来设置筛选条件
代码示例:
#通过条件筛选数据来组成新的列表
list1 = [1,2,3,4,5,6,7,8,9,10]
list2 = [x for x in list1 if (x%2==0)]
print(list1)
print(list2)
*********************************************************************************
************************运行结果如下**********************************************
==================== RESTART: E:\python_work\python_demo.py ====================
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[2, 4, 6, 8, 10]
>>>
二维列表的运用
二维列表就是包含列表的了列表,在一个列表中,包含多个列表。
1.直接定义二维列表
看示例直接定义二维列表:
list1 = [['春','眠','不','觉','晓'],
['处','处','闻','啼','鸟'],
['夜','来','风','雨','声'],
['花','落','知','多','少']]
print(list1)
运行结果为:
==================== RESTART: E:\python_work\python_demo.py ====================
[['春', '眠', '不', '觉', '晓'], ['处', '处', '闻', '啼', '鸟'], ['夜', '来', '风', '雨', '声'], ['花', '落', '知', '多', '少']]
>>>
2.使用嵌套的 for 循环创建
使用for循环创建二维列表,例如,我们创建一个4行5列的二维列表:
#创建一个4行5列的二维列表
arr = []
for i in range(4):
arr.append([]) #在外层列表中添加一个空列表
for j in range(5):
arr[i].append(j) #为里层的列表添加元素
print(arr)
运行结果:
==================== RESTART: E:\python_work\python_demo.py ====================
[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]
>>>
3.使用列表推导式创建
这里直接上代码,创建一个4行5列的二维列表:
arr = [[j for j in range(5)] for i in range(4)]
print(arr)
-----------------下面为运行结果---------------
==================== RESTART: E:\python_work\python_demo.py ====================
[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]
>>>
4.访问二维列表中的元素
语法格式:
listname[下标1][下标2]
下标1:表示二维列表中的第几行,下标从 0 开始,第一行的下标为 0
下标2:表示二维列表中的第几列,下标从 0 开始,第一列的下标为 0
代码示例:
arr = [[j for j in range(5)] for i in range(4)]
print(arr)
#获取列表中第2行第4列的数值
print(arr[1][3])
----------以下为运行结果-----------
==================== RESTART: E:\python_work\python_demo.py ====================
[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]
3
5.创建一个二维列表并输出二维列表内容
这里以输出一首诗作为演示。
str1 = '春眠不觉晓'
str2 = '处处闻啼鸟'
str3 = '夜来风雨声'
str4 = '花落知多少'
print('测试一下========原str1:',str1)
print('测试一下========经list类型转换后的值:',list(str1))
arr = [list(str1),list(str2),list(str3),list(str4)]
print('=========横版==循环遍历二维列表,输出一首完整的诗=========')
for i in range(4):
for j in range(5):
if j == 4:
print(arr[i][j])#换行
else:
print(arr[i][j],end='')#不换行
print('=========竖版==循环遍历二维列表,输出一首完整的诗=========')
for i in range(5):
for j in range(4):
if j == 3:
print(arr[j][i])
else:
print(arr[j][i],end='')
输出结果为:

本节到此结束啦,希望给大家带去帮助^_^
本文深入讲解Python列表的定义、创建、删除、访问、遍历、增删改查、排序及统计计算方法,涵盖列表推导式和二维列表的实用技巧。
2063

被折叠的 条评论
为什么被折叠?



