列表的方法
摘要:本文为 Python 语言基础中通过列表的方法来修改列表的操作
1.1 修改列表的列表方法
上节课通过索引和切片去修改列表,接下来讲通过列表的方法来修改列表,创建05.列表的方法.py文件,然后在创建一个stus列表,分别在列表中输入’孙悟空’,’猪八戒’,’沙和尚’,然后输出原列表内容,示例如下:
stus =['孙悟空','猪八戒','沙和尚'] print('原列表:',stus)
列表的方法在python 3.6.5 documentaion里找查看的内容,打开后点击The Python Standard Library,如下图:
然后找4.6.Sequence Types é list, tuple, range点击进入,如下图:
如上图属于4.6.1的内容这些就是列表的通用操作,不管是可变序列还是不可变序列都是可以用的。
下图属于4.6.3的内容,这些操作只适用于可变序列操作,
从上图中找到s.append(x),x表示元素,作用是把x这个元素添加到列表的最后,那先不用 Append 的方法来直接添加试试行不行,继续用上述stus列表一直列表内有三个元素,索引分别是0,1,2所以在最后直接添加一个试试行不行,示例如下:
stus =['孙悟空','猪八戒','沙和尚'] print('原列表:',stus) stus[3]='a'
从执行结果来看是不行的,是因为元列表stus没有索引为3的元素所以不行,那接下来用s.append(x)测试一下,在原本的stus列表最后添加一个’唐僧’这个元素,示例如下:
stus =['孙悟空','猪八戒','沙和尚'] print('原列表:',stus) #append() stus.append('唐僧') print('修改后:',stus)
从执行结果来看,append()这个方法是可以的,所以append()的作用就是向列表最后添加一个元素,那个列表调用append()方法就向那个列表最后添加元素,比如上面这个示例是向 Stus 列表添加所以写成stus.append('唐僧')。
接下来讲insert()方法,这个方法的作用是向列表指定位置插入一个元素,上图来看格式为s.insert(i,x),从格式来看s是调用的列表,而i这个参数是要插入元素的索引位置,然后x这个参数是要插入的元素,那接下来测试把’唐僧‘插入到原来 Stus 列表中索引为2的位置,也就是原来’沙和尚‘的位置,示例如下:
stus =['孙悟空','猪八戒','沙和尚'] print('原列表:',stus) #insert() #向列表的指定位置插入一个元素 #参数: #1.要插入的位置 #2.要插入的元素 stus.insert(2,'唐僧') print('修改后:',stus)
之前讲到的索引方式插入是替代原本的元素,即给原列表中的沙和尚换为唐僧,而insert是插入后原来的位置元素后移一个索引保留,这是这两方法的不同。
接下来讲s.extend(t)是使用新的序列来扩展当前序列,t是表示序列,extend()需要一个序列作为参数,它会将该序列中的元素添加到当前列表中,接下来测试把’唐僧‘和’白骨精‘两个作为元素组成新的列表然后扩展到stus的列表中,示例如下:
stus =['孙悟空','猪八戒','沙和尚'] print('原列表:',stus) # extend() #使用新的序列来扩展当前序列 #需要一个序列作为参数,它会将该序列中的元素添加到当前列表中stus.extend([‘唐僧’,’白骨精’]) print('修改后:',stus)
本示例的效果也可以通过+=来实现,示例如下:
stus =['孙悟空','猪八戒','沙和尚'] print('原列表:',stus) stus +=[‘唐僧’,’白骨精’] print('修改后:',stus)
接下来讲clear()这个方法,它的作用是清空序列,适用于可变序列,
然后尝试清空stus这个列表,示例如下:
stus =['孙悟空','猪八戒','沙和尚'] print('原列表:',stus) #clear() # 清空序列 stus.clear() print('修改后:',stus)
如上图这两个的作用是删除,pop()的作用是根据提供的索引删除并返回被删除元素,继续用stus这个类别来测试删除索引为2的元素,示例如下:
stus =['孙悟空','猪八戒','沙和尚'] print('原列表:',stus) stus.pop(2)#删除索引为2的元素 print('修改后:',stus)
del和pop()同样是删除区别在于pop()会有删除的返回值,接下来输出一下删除的返回值,示例如下:
stus =['孙悟空','猪八戒','沙和尚'] print('原列表:',stus) result = stus.pop(2)#删除索引为2的元素 print('result =',result) print('修改后:',stus)
从示例可以看出result返回的值是沙和尚,接下来尝试不加索引值看看是会删除那个?测试如下:
stus =['孙悟空','猪八戒','沙和尚'] print('原列表:',stus) result = stus.pop() print('result =',result) print('修改后:',stus)
从示例看出当不加索引时,会删除最后一个元素,接下来测试删除索引为1的元素,示例如下:
stus =['孙悟空','猪八戒','沙和尚'] print('原列表:',stus) result = stus.pop(1) print('result =',result) print('修改后:',stus)
以以上示例就是pop()的用法和操作,接下来讲另一个删除的方法是remove()是删除指定值得元素,例如删除stus列表里的猪八戒这个元素,示例如下:
stus =['孙悟空','猪八戒','沙和尚'] print('原列表:',stus) stus.remove('猪八戒') print('修改后:',stus)
pop()是根据索引来删除,而remove()是直接删除元素值。
假如在stus里有两个猪八戒那remove()会删除那个呢?
示例如下:
stus =['孙悟空','猪八戒','沙和尚','猪八戒'] print('原列表:',stus) stus.remove('猪八戒') print('修改后:',stus)
从执行结果来看只删除了第一个猪八戒,所以remove()在删除时如果相同值得元素有多个,只会删除第一个。那remove()有没有删除返回值呢?示例如下:
stus =['孙悟空','猪八戒','沙和尚','猪八戒'] print('原列表:',stus) result= stus.remove('猪八戒') print('result =',result) print('修改后:',stus)
从测试来看是没有返回值的。接下来讲reverse()是用来反转列表,然后把原本stus列表最后的猪八戒改为唐僧来测试reverse(),
示例如下:
stus =['孙悟空','猪八戒','沙和尚','唐僧'] print('原列表:',stus) # reverse() #用来反转列表 stus.reverse() print('修改后:',stus)
从以上示例可以看出reverse()已经把列表反转了。
接下来讲sort()方法是用来对列表中的元素进行排序,然后从小创建一个my_list来测试一下,示例如下:
# sort() #用来对列表中的元素进行排序 my_list= list('asnbdnbasdabd') print('修改前', my_list) my_list.sort() print('修改后’, my_list)
从结果来看把这它们进行了升序排列,所以sort()默认是的升序排列,
接下来做一个明显的数字测试,示例如下:
# sort() #用来对列表中的元素进行排序 my_list= list('asnbdnbasdabd') my_list =[10,1,20,3,4,5,0,-2] print('修改前', my_list) my_list.sort() print('修改后’, my_list)
从数字的结果来说更明显,那sort方法在哪里查看呢?如下图:
虽然sort()默认是的升序排列,如果需要降序排列,则需要传递一个reverse=True作为参数,示例如下:
# sort() #用来对列表中的元素进行排序 my_list= list('asnbdnbasdabd') my_list =[10,1,20,3,4,5,0,-2] print('修改前', my_list) my_list.sort(reverse=True) print('修改后’, my_list)
总结本节课讲到的方法,分别是:append()、insert()、extend()、
clear()、pop()、remove()、reverse()、sort()。注意:这节课的方法操作只适用于可变序列。