基础知识(一)

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 >>> 
View Code

1.2、在分解时,通常可以选用一个不常用的变量名来丢弃某些特定的值

1 >>> data = ['ACME',50,99.9,(2017,11,17)]
2 >>> _,shares,price,_=data
3 >>> shares
4 50
View Code

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 >>>
View Code

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 >>> 
View Code

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  
View Code

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]
View Code

4、实现优先级队列

原文地址:https://www.cnblogs.com/xb88/p/7854241.html