本文将介绍列表区别于元组和字符串的方面。列表的内容在定义过后可变,且其具有许多有用的特定的方法(方法区别与普通函数,可以看成是类的成员函数)。
首先介绍list函数:
>>>list(‘Hello!’)
['H','e','l','l','o','!']
通过list函数我们可以得到一个列表,且list函数适合与所有序列不仅是字符串。
基本列表操作如下:
1、列表元素赋值操作:
>>>x = [1,1,1]
>>>x[1]=2
>>>x
[1,2,1]
2、删除元素:
>>>names = ['qiu','shao','yun']
>>>del names[1]#注del命令还可以用于字典元素的删除和其他变量的删除
>>>names
['qiu','yun']
3、分片赋值:
>>>name = list(‘Qiu’)
>>>name
['Q','i','u']
>>>name[2:] = list(‘an’)
>>>name
['Q','i','a','n']
>>>name[2:2] = list(‘uxi’)#插入元素
>>>name
['Q','i','u','x','i','a','n']
>>>nums = [1,3]
>>>nums[1:1] = [2,4]
>>>nums
[1,2,4,3]
>>>nums[1:3] = []#删除元素
>>>nums
[1,3]
列表方法举例:
1、append,在列表末尾追加新元素:
>>>lst = [1,2,3]
>>>lst.append(4)
>>>lst
[1,2,3,4]
2、count,统计某个元素在列表中的出现次数:
>>>['a','b','to','xx','qw','mn','c','d','b','a','2','1'].count(‘a’)
2
>>>lvar = [[1,2],1,2,[3,2,[2,4]]]
>>>lvar.count(2)
1
>>>lvar.count([1,2])
3、extend扩展原有的列表,对原有的列表进行了修改,类似于连接符’+'。连接符‘+’不修改原有列表,返回全新的列表,效率叫extend低。使用分片赋值可以实现同样的功能,但是代码的可读性不如extend:
>>>a = [1,2,3]
>>>b = [4,5,6]
>>>a.extend(b)
>>>a
[1,2,3,4,5,6]
4、index找出某个值在列表中的第一个匹配项的索引:
>>>knights = ['We', 'study', 'the', 'Python', 'as', 'a', 'ability']
>>>knights.index(‘the’)
2
>>>knights.index(‘who’)#没有‘who’这个代码执行会返回异常
5、insert将对象插入到列表中(同样可以使用分片赋值实现,但可读性同样是问题):
>>>nums = [1,2,3,5,6,7]
>>>nums.insert(3,’four’)
>>>nums
[1,2,3,four,5,6,7]
6、pop会移除列表中的一个元素——默认最后一个,并显示这个元素.pop和append组成了类似于栈的pop和push操作,pop()和append方法还组成了先进先出的队列操作:
>>>x = [1,2,3]
>>>x.pop()
3
>>>x.pop(0)
1
>>>x
[2]
7、remove移除列表中与给定值匹配的第一项(修改列表但无返回值):
>>>x = ['to', 'be', 'or', 'not', 'to', 'be']
>>>x.remove(‘be’)
>>>x
['to', 'or', 'not', 'to', 'be']
>>>x.remove(‘bee’))#没有‘who’这个代码执行会返回异常
8、reverse将列表中元素的顺序反转(同样改变列表无返回值):
>>>x = [1,2,3]
>>>x.reverse()
>>>x
[3,2,1]
#对序列经行反转
>>>x = [1,2,3]
>>>list(reversed(x))
[3,2,1]
9、sort方法在原列表上进行排序,修改了原列表但返回一个空值(None):
>>>x = [3,4,2,1,5,6,8,7,0,9]
>>>x.sort()
>>>x
[0,1,2,3,4,5,6,7,8,9]
#顺便介绍sorted函数:
>>>x = [3,4,2,1,5,6,8,7,0,9]
>>>y = sorted[x]
>>>x
[3,4,2,1,5,6,8,7,0,9]
>>>y
[0,1,2,3,4,5,6,7,8,9]
#sorted函数适合用于任何序列并返回一个列表:
>>>sorted(‘Python’)
['P','h','n','o','t','y']
10、高级排序,期望元素按照特定的方式排序而不是sort函数默认的形式,那么可以使用compare(x,y)的形式自定义比较函数。内建函数cmp提供了比较函数的默认实现方式:
>>>cmp(1,2)
1
>>>cmp(100,9)
-1
cmp(1,1)
0
>>>nums = [5,2,9,7]
>>>nums.sort(cmp)
>>>nums
[2,5,7,9]
sort方法还有另外两个可选参数:key和reverse,参数key和cmp类似,必须提供一个在排序过程中使用的函数,为每个元素创建一个键,然后所有元素依据键值排序,例如:要依照元素的长度进行排序,可以使用len作为键函数:
>>>x = ['qwe','q','we','wert','qwdsf']
>>>x.sort(key=len)
>>>x
['q','we','qwe','wert','qwdsf']
>>>nums = [3,5,2,6,1,4]
>>>nums.sort(reverse=True)
>>>nums
[1,2,3,4,5,6]
cmp、key、reverse参数还可以用于sorted函数。