Python学习笔记1:List与Deque的比较
刚开始学习Python,做做笔记自我监督
1.列表List
Python最基本的数据结构是序列(sequence),有6种内建序列:列表、元组、字符串、Unicode字符串、buffer对象、xrange对象。
下边记录一些列表的基本方法的比较(并不是所有方法都改变列表)。
a.删除元素的方法:del、remove、pop
>>> names = ['Bryant','Jordan','James','Duncan'] >>> del names[2] >>> names ['Bryant', 'Jordan', 'Duncan']
names = ['Bryant','Jordan','James','Duncan'] >>> names.remove('James') >>> names ['Bryant', 'Jordan', 'Duncan'] >>> names.remove('Thunder') Traceback (most recent call last): File "<pyshell#12>", line 1, in <module> names.remove('Thunder') ValueError: list.remove(x): x not in list
names = ['Bryant','Jordan','James','Duncan'] >>> names.pop() 'Duncan' >>> names ['Bryant', 'Jordan', 'James']
b.添加元素:append(),extend(),insert()
lst1 = [3, 4, 5] >>> lst2 = [0, 1, 2] >>> lst1.append(4) >>> lst1 [3, 4, 5, 4]
>>> lst1.extend(lst2) >>> lst1 [3, 4, 5, 4, 0, 1, 2]
>>> lst1.insert(4,'three') >>> lst1 [3, 4, 5, 4, 'three', 0, 1, 2]
append()方法在列表末尾添加元素;extend()方法将两个列表拼接起来;insert()在某指定位置添加元素(与原来元素类型不同也可以)
c.元素排序:sort(),sorted()
sort方法改变了列表原来的内容,不会返回一个已排序的列表,所以下面的做法是错误的
x = [1, 2, 3, 4]
y = x.sort()
获取排序后的列表副本还可以采用sorted函数:
x = [1, 2, 3, 4]
y = sorted(x)
sorted的函数原型为(sort()的函数原型类似):
1 sorted(data, cmp=None, key=None, reverse=False)
其中cmp为可以自定义的比较函数;key提供在排序中使用的函数,创建一个键;reverse值为布尔值,表示正向或反向排序。
注:Python3.0及以后的版本中,内建的sorted()方法和list.sort()方法不再接受表示比较函数的cmp参数,使用key参数代替
2.双端队列deque
deque为collection模块下的类型,双端队列可以在开头增加、弹出元素(这不同于List),还可以有效的旋转元素,extenfleft方法添加的对象会反序出现在deque中
1 x = deque(range(11)) 2 >>> x 3 deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 4]) 4 >>> x.appendleft(10) 5 >>> x 6 deque([10, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 4]) 7 >>> x.pop() 8 4 9 >>> x.popleft() 10 10 11 >>> x.rotate(1) 12 >>> x 13 deque([10, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9])