1.collections 模块
该模块提供了一些高阶的数据类型。
nametuple 具名元组
deque 双端队列
orderedDict 有序字典
defaultdict 默认值字典
Counter 计算器
2.具名有名字的元组
有名字的元组
导入:
from collcetions import namedtuple
格式:
namedtuple ( '名字' , '名字1 名字2···' )
第二个参数如果是字符串名字之间用空格隔开。
namedtuple ( '名字' , [ '名字1' , '名字2' ··· ] )
对象可以通过点的方式取值。
from collections import namedtuple
res = namedtuple( '坐标' , [ 'x' , 'y' ] )
res = res( 30 , 40 )
print ( res)
print ( res. x)
print ( res. y)
res = namedtuple( '坐标' , 'x y' )
res = res( 30 , 40 )
print ( res)
print ( res. x)
print ( res. y)
3.双端队列
3.1队列
--------------------------------------
--- 4 ------ 3 ----------- 2 ------- > 1 一端进一端出
--------------------------------------
queue 队列模块
方法:
. Queue ( ) 初始化
. put ( 参数 ) 往队列添加值
. get ( ) 从队列中拿值
import queue
res = queue. Queue( )
res. put( 'one' )
res. put( 'two' )
res. put( 'three' )
print ( res. get( ) )
print ( res. get( ) )
print ( res. get( ) )
print ( res. get( ) )
"""
传入三个值,拿四个,第四次拿不到值,程序会等待传入值,
如果传入三个值,拿三个,程序就此结束。
"""
3.2双端队列
----------------------------------------
--------------------------- >
4 1 2 3 5 两端进两端出
< ---------------------------
----------------------------------------
deque 双端队列模块
. deque ( ) 初始化
. appendleft ( ) 左边追加
. popleft ( ) 左边弹出
from collections import deque
res = deque( [ 1 , 2 , 3 ] )
res. appendleft( 4 )
res. append( 5 )
print ( res. pop( ) )
print ( res. popleft( ) )
print ( res. popleft( ) )
print ( res. popleft( ) )
print ( res. popleft( ) )
print ( res. popleft( ) )
"""
多取值会报错
"""
4.有序字典
Python2 中能明显的看出字典的是无序的,Pycharm中做过优化,输出 '看起来' 很有规律。
OrderedDict 有序字典
返回的结果可以使用字典的方法。
from collections import OrderedDict
orderly_dic = OrderedDict( [ ( 'name' , 'kid' ) , ( 'age' , 18 ) ] )
print ( orderly_dic)
5.默认字典
访问字典的时候,如果键不存在报错。
dic = {
}
print ( dic[ 'a' ] )
defaultdict ( 类型 ) 设置默认值当键不存在是返回默认值。
返回的结果可以使用字典的方法。
from collections import defaultdict
dic = defaultdict( int )
print ( dic)
print ( dic[ 'a' ] )
from collections import defaultdict
dic = defaultdict( str )
print ( dic)
print ( dic[ 'a' ] )
from collections import defaultdict
dic = defaultdict( list )
print ( dic)
print ( dic[ 'a' ] )
from collections import defaultdict
dic = defaultdict( dict )
print ( dic)
print ( dic[ 'a' ] )
from collections import defaultdict
ls = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ]
my_dic = defaultdict( list )
for i in ls:
if i > 5 :
my_dic[ 'k2' ] . append( i)
else :
my_dic[ 'k1' ] . append( i)
print ( my_dic)
6.计算器
Counter 统计字符串中每个字符出现的次数。
返回的结果可以使用字典的方法。
from collections import Counter
res = 'abcdeabcdabcaba'
res = Counter( res)
print ( res)