1、将序列分解为单独的变量
1.1、任何序列(或可迭代的对象)都可以通过一个简单的赋值操作来分解为单独的便利。(唯一要求:变量的总和和结构要与序列相吻合。如果元素的数量不匹配,将会有错误提示)
1 例1: 2 >>> p =(4,5) 3 >>> x,y=p 4 >>> x 5 4 6 例2: 7 >>> data = ['ACME',50,99.9,(2017,11,17)] 8 >>> name,shares,price,date=data 9 >>> date 10 (2017, 11, 17) 11 >>>
1.2、在分解时,通常可以选用一个不常用的变量名来丢弃某些特定的值
1 >>> data = ['ACME',50,99.9,(2017,11,17)] 2 >>> _,shares,price,_=data 3 >>> shares 4 50
1.3、需要从某个可迭代的对象中分解出N个元素,但是可迭代对象的对象超过N,这会导致出现“分解的值过多”的异常。这时可以使用"*表达式 "。
例:用户记录
1 >>> result = ('Dave','dave@126.com','山西太原','010-7788990','0351-588888') 2 >>> name,email,addrss,*phone_numbers = result 3 >>> phone_numbers 4 ['010-7788990', '0351-588888'] 5 >>>
2、collections(集合模块)
2.1使用list
存储数据时,按索引访问元素很快,但是插入和删除元素就很慢了,因为list
是线性存储,数据量大的时候,插入和删除效率很低。
deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈:
1 >>> from collections import deque 2 >>> q = deque(maxlen=3) 3 >>> q.append(1) 4 >>> q.append(2) 5 >>> q.append(3) 6 >>> q.append(4) 7 >>> q 8 deque([2, 3, 4], maxlen=3) 9 >>>
2.2如果不指定队列的大小,将会得到一个无界限的队列。其次它还有appendleft,popleft这两个方法
1 >>>q = deque([1,2,3]) 2 >>>q.appendleft(4) 3 >>>q 4 >>>deque([4, 1, 2, 3]) 5 >>>q.popleft() 6 >>>4 7
3、找到最大或最小的N个元素
1 import heapq 2 nums = [1,8,2,23,7,-4,18,23,42,37,2] 3 print(heapq.nlargest(3,nums)) 4[42, 37, 23] 5 print(heapq.nsmallest(3,nums)) 6[-4, 1, 2]
4、实现优先级队列