Python列表概念及其应用

本文深入讲解Python列表的定义、创建、删除、访问、遍历、增删改查、排序及统计计算方法,涵盖列表推导式和二维列表的实用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本章节主要内容有:

Python列表的定义

列表的创建和删除

1. 使用赋值运算符直接创建列表

2.创建空列表

3.创建数值列表

4.删除列表

访问列表元素

遍历列表

1.使用for循环实现

2.使用for循环和enumerate函数实现

添加、修改、删除列表元素

1. 添加元素

2. 添加元素列表

3. 修改元素

4. 删除元素

根据索引值删除

根据元素内容进行匹配删除

对列表进行统计和计算

1.获取指定元素出现的次数

2.获取指定元素首次出现的下标

3.统计数值列表的元素和

对列表进行排序

1. 使用列表对象的sort()方法

2. 使用内置的sorted()函数实现

3.使用排序方法需要注意的事项

列表推导式

1. 生成指定范围的数值列表

2. 根据列表生成指定需求的列表

3.从列表中选择符合条件的元素组成新的列表

二维列表的运用

1.直接定义二维列表

2.使用嵌套的 for 循环创建

3.使用列表推导式创建


 

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='')

输出结果为:

本节到此结束啦,希望给大家带去帮助^_^

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是一名程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值