列表的基本操作
列表(list)是包含0个或多个元素的有序序列,属于序列类型。列表的长度都是可变的,可自由对列表中的元素进行增加、删除或替换。列表没有长度限制,元素类型可以不同,可以同时包含整数、实数、字符串等基本类型,也可以是列表、元组、字典、集合以及其他自定义类型的对象,使用非常灵活。
一、列表的创建
创建列表只需将逗号分隔的不同元素使用方括号括起来即可:
>>>animal = ['element','monkey','snake','tiger'] #创建列表
>>>animal #打印animal
['element','monkey','snake','tiger']
tips:列表的索引从0开始。
二、增加元素
列表由3种增加元素的方法:append()、extend()、insert()
append()
使用append()方法可在列表末尾添加新的元素,语法格式为:list.append(obj)
,其中,list表示列表,obj表示添加到列表末尾的对象。
>>>add_list =[0,1,2,3] # 创建列表add_list并赋值
>>>add_list.append(4) # 使用append()为add_list末尾添加元素4
>>>add_list
[0,1,2,3,4]
extend()
使用extend()方法可在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表),语法格式为:list.extend(seq)
。其中,list表示列表,seq表示添加到列表中的元素列表。
list_1 = [1,2,3]
list_2 = [4,5,6]
list_3 = [7,8,9]
list_1.append(list_2) # 将list_2看作一个对象,整体打包添加到list_1对象中
print(list_1)
list_2.extend(list_3) # 将list_3看作一个序列,将这个序列和list_2序列合并
print(list_2)
运行结果:
[1,2,3,[4,5,6]]
[4,5,6,7,8,9]
这也是append和extend方法的区别所在。
insert()
使用insert()方法可将指定对象插入到列表的指定位置。语法格式为:list.insert(index,obj)
,其中list表示列表,index表示对象需要插入的索引位置,obj表示要插入列表中的对象。
>>>number = [1,2,4,5]
>>>number.insert(2,3) # 使用insert()方法将元素3添加到列表索引为2的位置中
>>>number
[1,2,3,4,5]
三、查找元素与计数
查找元素
所谓在列表中查找元素,就是查看指定的元素是否存在列表中。列表提供index()方法用于返回指定元素在列表中首次出现的位置,如果该元素不在列表中则抛出异常。语法格式为:
list.index(obj)
其中,list表示列表,obj表示要查找的对象。
>>>list = ['tiger','rabbit','cat','dog']
>>>list.index('tiger')
0
计数
要想知道指定元素在列表中出现的次数,可以使用count()方法进行统计,其语法格式为:list.count(obj)
。其中,list表示列表,obj表示列表中要统计的对象。
>>> x=[1,2,1,2,1,2,1]
>>> x.count(1) # 使用count()方法统计1在变量x中的出现次数。
4
四、删除元素
在列表中删除元素的常用方法有3种:del命令、pop()方法和remove()方法。
del命令
del命令可根据索引/分片的方式删除列表中的元素。
>>> number = [1,2,3,4,5]
>>> del number[1:3] # 使用del命令删除number中索引从1到3(不包括3)的元素
>>> number
[1, 4, 5]
pop()方法
pop()方法用于移除列表中的一个元素(默认为最后一个元素),并且返回该元素的值。
语法格式为:list.pop([obj])
其中,list表示列表,obj为可选参数,表示移除列表元素的索引值,默认为-1,删除最后一个列表值。
>>> number = [1,2,3,4,5]
>>> number.pop() # 使用pop()方法删除number中的元素
5
>>> number
[1, 2, 3, 4]
>>> number.pop(0) # 使用pop()方法删除number中索引为0的元素
1
>>> number
[2, 3, 4]
remove()方法
remove()方法用于移除列表中某个值的第一个匹配项。语法格式为:list.remove(obj)
。其中,list表示列表,obj表示列表中要移除的对象。
>>> number = [1,2,3,1,2,1,4,1]
>>> number.remove(1) # 使用remove()方法移除number中第一次出现1的元素。
>>> number
[2, 3, 1, 2, 1, 4, 1]
五、分片赋值
分片赋值就是以分片的形式给序列赋值,可以一次为多个元素赋值。
>>> x=[1,2,3,4]
>>> x
[1, 2, 3, 4]
>>> x[2:]=[5,6,7] # 替换变量x索引从2开始到最后的元素
>>> x
[1, 2, 5, 6, 7]
分片赋值还可以在不替换任何原有元素的情况下插入新的元素。
>>> x=[1,7]
>>> x[1:1]=[2,3,4,5,6] # 在变量x中索引1的位置插入列表[2,3,4,5,6]
>>> x
[1, 2, 3, 4, 5, 6, 7]
分片赋值也可以用来删除元素。
>>> x=[1,2,3,4,5,6,7]
>>> x[1:6]=[] # 用空列表将x中索引1到索引6之间的元素替换
>>> x
[1, 7]
六、列表排序
reverse()方法
reverse()方法用于将列表中元素反向存放。语法格式为:list.reverse()
。其中,list表示列表,该方法没有参数,没有返回值。
>>> x=[1,2,3,4]
>>> x.reverse() # 使用reverse()方法将变量x中的元素反向存放
>>> x
[4, 3, 2, 1]
sort()方法
sort()方法用于对原列表进行排序(默认为升序排序),排序后的新列表会覆盖原列表。
语法格式为:
list.sort([key=None][,reverse=False])
。
其中,list表示列表;key为可选参数,如果指定了该参数,会使用该参数的方法进行排序;reverse为可选参数,表示是否反向排序,默认为False。
>>> x=['a','abc','ab','abcd']
>>> x.sort(key=len,reverse=True) # 使用sort()方法对变量x中元素进行长度逆序排序
>>> x
['abcd', 'abc', 'ab', 'a']
sorted()函数
我们也可以使用内置函数sorted()对列表进行排序。与sort()方法不同,内置函数sorted()返回新列表,并不对原列表进行任何修改。
语法格式为:sorted(iterable[,key=None][,reverse=False])
其中,iterable表示可迭代对象,在这里就是列表名;参数key和reverse的用法和sort()方法中的相同。
>>> x=[1,5,2,3,4]
>>> y = sorted(x) # 将x中的元素升序排列后赋值给变量y
>>> x
[1, 5, 2, 3, 4]
>>> y
[1, 2, 3, 4, 5]