Python基础教程

第一章: 环境搭建,安装Python

第二章: 挑选一款趁手的IDE

第三章: 计算机基础知识

第四章: 命令行基础知识

第五章: 从全局把握Python

第六章: Python语言基础

第七章: Python流程控制

第八章: Python数据类型与运算

第九章: Python字符串类型

第十章: Python列表类型

第十一章: Python元组类型

第十二章: Python字典类型

第十三章: Python集合类型

第十四章: Python函数处理

第十五章: Python文件处理

第十六章: Python面向对象

第十七章: Python异常处理

第十八章: Python模块处理

第十九章: Python高级编程

第二十章: Python项目实战

首页 > Python基础教程 > 第十章: Python列表类型 > 10.3节: 列表的操作方法

10.3节: 列表的操作方法

薯条老师 2020-05-07 15:39:52 232115 5

编辑 收藏

广州番禺Python, Java小班周末班培训

薯条老师在广州做Python和Java的小班培训,一个班最多10人,学员的平均就业薪资有11K。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Python量化投资,Python机器学习,Java中高级后端开发。授课详情请点击:http://chipscoco.com/?cate=6

10.3.1 列表常用操作方法

列表类型是一种抽象数据类型,抽象数据类型定义了数据类型的操作方法,在本节的内容中,着重介绍列表类型的常用操作方法。

10.3.2 列表的添加

(1) list.append(object)

函数说明:
将参数object代表的数据对象添加至列表中,元素被添加至列表的尾部,该方法无返回值。在定义一个空的列表时,无法通过索引来进行元素的添加。添加新的元素需通过本节介绍的列表添加方法。

代码实例:

# __desc__ = 执行append方法来添加新元素
 
# 定义一个空的列表,空列表无法通过索引来添加元素
plans = []
 
# 参数object可为任意数据类型
# 执行append方法时,元素被添加至列表的尾部,即列表最右边的位置
plans.append("每天晚上做100个俯卧撑")
plans.append(666)
 
# plans的输出为["每天晚上做100个俯卧撑", 666]

(2) list.insert(index, object)

函数说明:
参数index表示索引值,insert方法用来在index的前一个位置来插入元素。如果index的值大于列表中的最大索引,那么等同于执行append方法。
append方法是每次将元素添加至列表尾部,而通过 insert方法可以在指定位置来插入元素。

代码实例:

# __desc__ = 执行insert方法在指定位置插入元素。
 
# 定义一个空的列表plans
plans = []
plans.insert(0, "每天晚上做100个俯卧撑")
# plans的输出为["每天晚上做100个俯卧撑"]
 
# 继续在索引0前面的位置进行元素添加,此时索引0中的元素为
"每天晚上做100个俯卧撑"
 
plans.insert(0, 66)
# plans的输出为[66,"每天晚上做100个俯卧撑"]

(3) list.extend(iterable)

函数说明
在列表的末尾添加一个可迭代对象,无返回值。extend方法只接受可迭代的对象,会将可迭代对象中的元素逐一添加到列表中。

代码实例:

# __author__ = 薯条编程
# __desc__ = 执行extend方法在列表末尾添加一个可迭代对象
 
# 定义一个空的列表plans
plans = []
plans.extend("每天晚上做100个俯卧撑")
# plans的输出为['每', '天', '晚', '上', '做', '1', '0', '0', '个', '俯', '卧', '撑']
 
'''
同学们需要注意extend方法与append方法的区别。
extend方法是添加一个可迭代对象,
会将可迭代对象中的元素逐个添加到列表中。
append方法是将数据对象作为一个整体添加到列表中
'''
 
# 定义一个空的列表plans
plans = []
plans.append("每天晚上做100个俯卧撑")
# plans的输出为['每天晚上做100个俯卧撑']

凡是可以将数据集合中的元素进行逐一遍历的都是可迭代对象。迄今为止学过的可迭代类型有字符串类型,列表类型。

10.3.3 列表的查找

(1) list.index(value, [start, [stop]])

函数说明:
查在列表中查找元素是否存在,如果存在会返回该元素的索引,如果不存在会抛出异常。start表示查找的起始位置,stop表示查找的结束位置(闭区间,不包括stop)。
start的默认值为0,end的默认值为列表的长度。

代码实例:

# __author__ = 薯条编程
# __desc__ = 执行index方法来查找元素的索引
 
# 定义一个空的列表plans
plans = []
plans.append("每天晚上做100个俯卧撑")
plans.append(666)
# plans现在的输出为["每天晚上做100个俯卧撑", 666]
 
index = plans.index(666)
# index的输出为1

(2) list.count(value)

函数说明:
查找元素值value在列表中出现的次数,元素值value不存在时,返回0。
代码实例:

# __author__ = 薯条编程
# __desc__ = 执行count方法来查找元素的数目
 
# 定义一个空的列表numbers
numbers = []
numbers.append(666)
numbers.append(666)
# numbers的输出为[666, 666]
 
count_of_number =  numbers.count(666)
# count_of_number的输出为2
 
count_of_number =  numbers.count(999)
# count_of_number的输出为0
现在写一段简单的代码实例,通过循环结构来实现count方法的功能。

代码实例:

# __author__ = 薯条编程
# __desc__ = 通过循环结构来实现count方法的功能
 
# 定义一个空的列表numbers
numbers = []
numbers.append(666)
numbers.append(666)
# numbers的输出为[666, 666]
 
count_of_number = 0
key_number = 666
 
# 代码逻辑很简单,如果元素值相等,就对count_of_number进行自增
for _ in numbers:
  count_of_number = count_of_number+1 if key_number == _ else count_of_number
else:
  print(count_of_number)
# 程序的输出为2

10.3.4 列表的修改

在10.2节的内容中介绍了可以通过[]操作符对列表的元素值进行修改。同学们要注意的是[]中的索引必须在有效的范围之内,否则会抛出访问越界的错误异常。

10.3.5 列表的删除

(1) list.pop([index])

函数说明:
删除索引index对应的元素值,index的值默认为列表的最大索引值,也就是说,pop方法默认删除尾部的元素。列表的最大索引值为列表长度减一。返回值为被删除的列表元素,index的值必须在列表有效的索引范围内,否则会抛出异常。

代码实例:

# __author__ = 薯条编程
# __desc__ = 通过pop方法来删除列表中的指定位置的元素
 
# 定义一个空的列表plans
plans = []
plans.append("每天晚上做100个俯卧撑")
plans.append(666)
# plans的输出为["每天晚上做100个俯卧撑", 666]
 
# 1. pop方法不传递任何参数时,默认删除尾部中的元素
plan = plans.pop()
# plan的输出为666
# plans的输出为["每天晚上做100个俯卧撑"]
 
# 在pop方法中传递参数时,表示删除指定索引位置的元素
plan = plans.pop(0)
 
# 2. plan的输出为"每天晚上做100个俯卧撑"
# plans迭代输出为[]
 
# 3. 索引必须在有效的范围之内,否则抛出错误异常
plans.pop()
# 抛出异常,此时的plans为空列表。

对索引的有效范围不是很熟悉的同学,可以复习9.2节中的内容。

(2) list.remove(value)

函数说明:
执行remove方法来直接删除列表中的元素,无返回值。注意:remove方法只删除首次匹配的元素

代码实例:

# __author__ = 薯条编程
# __desc__ = 执行remove方法来直接删除元素
 
# 定义一个空的列表plans
plans = []
plans.append("每天晚上做100个俯卧撑")
plans.append(666)
plans.append(666)
# plans的输出为["每天晚上做100个俯卧撑", 666, 666]
 
plans.remove(666)
# plans的输出为["每天晚上做100个俯卧撑", 666]
现在写一段简单的代码实例,通过循环结构以及列表的切片操作来实现remove方法的功能。
代码实例:

# __author__ = 薯条编程
# __desc__ = 通过循环结构以及切片操作来实现remove方法的功能
 
# 定义一个空的列表plans
plans = list()
plans.append("每天晚上做100个俯卧撑")
plans.append(666)
plans.append(666)
 
plan = 666
 
# index变量用来保存遍历的索引位置
index = 0
for _ in plans:
    if plan == _:
        """ 如果元素值相等就执行切片操作 """
        plans = plans[:index]+plans[index+1:]
        # 然后再执行break退出循环
        break
    
    index += 1
 
print(plans)
# 程序的输出为["每天晚上做100个俯卧撑", 666]

(3) list.clear()

函数说明:
无参数,无返回值,一键清空列表中的所有元素。
代码实例:

# __author__ = 薯条编程
# __desc__ = 执行clear方法将列表中的元素全部清除
 
# 小美喜欢做计划
plans = ["每天晚上做瑜伽来健身", "每个月看两本书"]
 
# 但是她从来没实现过,在暴怒之下,她一键执行了clear方法将计划全部清除
plans.clear()
# plans的输出为[]

10.3.6 与列表有关的其它操作方法

(1) len(container)

函数说明:
len方法是一个内置方法,用来返回容器数据类型中的元素数目。Python中的复合数据类型都是一种容器类的数据对象。

代码实例:

# __author__ = 薯条编程
# __desc__ = 执行len方法获取列表的元素数目
 
# 小美喜欢做计划,却从来不认真去执行
plans = ["每天晚上做瑜伽来健身", "每个月看两本书"]
 
how_many_plans = len(plans)
# how_many_plans的输出为2

(2) list.sort(key=None, reverse=False)

函数说明:
对列表进行原地排序,只使用 < 操作符来进行元素值的比较。 如果在比较过程中发生异常,那么排序操作会失败。参数key的默认值为None, 用来传递带一个参数的函数。sort方法会将列表元素传递给该函数,然后根据该函数的输出来进行比较。例如key=len,那么sort方法会计算列表元素的长度,然后根据长度来进行排序。参数reverse用来指定是降序排序还是升序排序。reverse为False时表示升序排序,为True时表示降序排序。

代码实例:

# __author__ = 薯条编程
# __desc__ = 执行sort方法对列表进行排序
 
# 定义一个杂乱无序的数字列表
numbers = [1,3,5,7,1,4,9]
# 执行sort方法来排序,sort方法不带任何参数时表示直接根据元素大小进行升序排序
numbers.sort()
# numbers的输出为[1,1,3,4,5,7,9]
 
# 定义一个杂乱无序的数字列表
numbers = [[1,2,3],[4,5],[6,7,8,9]]
 
# key传递的是len,sort方法会先计算列表元素的len值,然后进行降序排序
numbers.sort(key=len, reverse=True)
# numbers的输出为[[6,7,8,9],[1,2,3],[4,5]]
 
# 在key指定的方法中,传递给该方法的列表项必须是合法的参数类型
# 比如传递简单数据类型给len方法时就会抛出异常

(3) str.join(list)

函数说明:
当列表中的元素类型全为字符串时,可以通过字符串的join方法将列表中的元素组成以str做为分隔符的字符串。

代码实例:

# __author__ = 薯条编程
# __desc__ = 执行字符串类型的join方法来将列表中的元素进行拼接
 
# 小美喜欢做计划,却从来不认真去执行
plans = ["每天晚上做瑜伽来健身", "每个月看两本书"]
 
# plans_never_implemented变量表示从未认真执行过的计划
plans_never_implemented =",".join(plans)
 
# plans_never_implemented的输出为"每天晚上做瑜伽来健身,每个月看两本书"

10.3.7 知识要点

(1) 在定义一个空的列表时,无法通过索引来进行元素的添加。添加新的元素需要通过append方法。
(2) append方法是将数据对象作为一个整体进行添加,而extend方法是将可迭代对象中的元素逐个地添加至列表中。

10.3.8 最具实力的小班培训

薯条老师在广州做Python和Java的小班培训,一个班最多10人。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习打算参加小班培训的同学,必须遵守薯条老师的学习安排,认真做作业和项目。把知识学好,学扎实,那么找到一份高薪的工作就是很简单的一件事。

(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,免费领取课程大纲
(3) Java后端开发工程师高薪就业班,月薪11K-20K, 免费领取课程大纲
(4) Python大数据分析,量化投资就业班,月薪12K-25K,免费领取课程大纲

扫码免费领取Python学习资料:



已有5位薯条发表了看法:

  • 访客

    访客  评论于 2020-06-04 15:58:10  回复

    10.3.3中“通过循环结构来实现count方法的功能”这个代码示例中,第15行的代码和第13行的注释逻辑不吻合,应该是count_of_number = count_of_number+1 if key_number == _ else count_of_number,请您核对一下。

  • 访客

    访客  评论于 2020-06-04 17:10:08  回复

    ˃˃˃numbers = ['abd','Abc','aBc','ABc','abC','ABC','123']
    ˃˃˃ numbers.sort()
    ˃˃˃ numbers
    ['123', 'ABC', 'ABc', 'Abc', 'aBc', 'abC', 'abd']
    在python交互模式中运行上述代码,请问如何解释运行结果,这种情况下默认的排序函数是什么?

    • 薯条老师

      薯条老师  评论于 2020-08-25 07:40:35  回复

      默认是进行升序排序,明显字符C的ASCII码小于字符c,字符B的ascii码小于字符b, 字符A的ascii码小于字符a

欢迎 发表评论: