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 最具实力的小班培训
薯条老师在广州有开设线下培训班,小班授课模式,一班最多6个人。也可一对一授课,全程帮助你学好计算机,实现高薪就业。不在广州的同学可提供住宿,也可以报名线上小班,用腾讯会议上直播课。
(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python中高级爬虫逆向工程师就业班,月薪15K-25K,包拿Offer
(3) Python数据分析+商业分析+数据科学就业班,企业级项目实战,月薪10K-20K
(4) Python量化交易就业班,A股+期货+数字货币量化,月薪10K-40K
(5) Python机器学习+深度学习算法工程师,月薪20-50K
跟薯条老师学习的学生有拿到花生日记,林氏家居,南方电网,京东, 阿里等公司的offer, 学生的最低薪资有6K,最高薪资有18K, 平均就业薪资有11000。
扫码咨询薯条老师:
已有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-08-25 07:35:05 回复
已修改,谢谢指正
访客 评论于 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-07-16 13:50:33 回复
盲猜是ASCII码
薯条老师 评论于 2020-08-25 07:40:35 回复
默认是进行升序排序,明显字符C的ASCII码小于字符c,字符B的ascii码小于字符b, 字符A的ascii码小于字符a