列表
- a.clear():清空列表a。
- a.append(e):在列表a的末尾添加元素e。
- a.count(e):统计元素e在列表a中出现的次数。
- a.index(e):从列表a中找出第一个与e匹配的元素的索引。
- a.insert(i,e):将元素e插入列表a中索引为i的位置。
- a.pop([i=-1]):移除列表a中索引为i的元素(默认为尾元素),并返回该元素。
- a.remove(e):移除列表a中第一个与e匹配的元素。
- a.reverse():逆置列表a中的元素。
支持列表的主要函数如下,这些函数并不是列表的成员,可以直接调用,但需要在函数参数中指定列表名称(如列表a)。
- len(a):返回列表a中元素的个数。
- sum(a[,start]):返回列表a中从start位置开始向右的所有元素的和,start默认为0。
- max(a):返回列表a中元素的最大值。
- min(a):返回列表a中元素的最小值。
- list(seq):将可迭代对象seq转换为列表。
列表的排序
Python提供了两种排序方式,即用列表的list.sort()方法进行排序和用sorted(list)函数进行排序,两者的区别是sorted(list)返回一个对象,可以用作表达式,但原来的list不变,而是生成一个新的排好序的list对象;list.sort()不会返回对象,直接改变原有的list。list.sort()的使用格式如下:
1
list.sort(func=None,key=None,reverse=False)
其中,key指出用来进行比较的元素;reverse指出排序规则,reverse=True为递减排序,reverse=False为递增排序(默认)。例如:
1
2
3
4
5
a=[2,5,8,9,3]
a.sort() #递增排序
print(a) #输出:[2,3,5,8,9]
a.sort(reverse=True) #递减排序
print(a) #输出:[9,8,5,3,2]
对于多关键字排序,key可以使用operator模块提供的itemgetter函数获取对象的哪些维的数据,参数为一些序号,这里的operator.itemgetter函数获取的不是值,而是定义了一个函数,通过该函数作用到对象上才能获取值。另外,也可以使用lambda函数,在需要反序排列的数值关键字前加“-”号。例如:
1
2
3
4
5
6
7
8
9
10
from operator import itemgetter,attrgetter
a=[('b',3),('a',1),('c',3),('a',4)]
a.sort(key=itemgetter(1),reverse=True) #对第二个关键字递减排序
print(a) #输出:[('a',4),('b',3),('c',3),('a',1)]
a.sort(key=itemgetter(0,1),reverse=True) #对第一个和第二个关键字递减排序
print(a) #输出:[('c',3),('b',3),('a',4),('a',1)]
a.sort(key=lambda x:x[0]) #对第一个关键字递增排序
print(a) #输出:[('a',4),('a',1),('b',3),('c',3)]
a.sort(key=lambda x:(x[0],-x[1]))#对第一个关键字递增排序,对第二个关键字递减排序
print(a) #输出:[('a',4),('a',1),('b',3),('c',3)]