列表:python的主力

本文将介绍列表区别于元组和字符串的方面。列表的内容在定义过后可变,且其具有许多有用的特定的方法(方法区别与普通函数,可以看成是类的成员函数)。

首先介绍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函数。

http://www.tebik.com/?p=195

posted on 2012-09-20 11:06  挺胸收腹  阅读(278)  评论(0编辑  收藏  举报

导航