collections
deque 双向队列
from collections import deque
q = deque([1, 3, 4, 'a'])
print(q)
q.append('sjj') #加在队列右边
print(q)
q.appendleft('lx') # 加在队列左边
print(q)
print(q.pop()) # 从队列右边抛出
print(q.popleft()) # 从队列左边抛出
输出:
deque([1, 3, 4, 'a'])
deque([1, 3, 4, 'a', 'sjj'])
deque(['lx', 1, 3, 4, 'a', 'sjj'])
sjj
lx
namedtuple 可命名的元祖
from collections import namedtuple
P = namedtuple('Point',['x', 'y']) # 初始化一个类
p = P(1,2) # 初始化一个实例
print(p.x, p.y)
输出结果:
1 2
defaultdict
有如下值集合 [11,22,33,44,55,66,77,88,99,90…],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
即: {‘k1’: 大于66 , ‘k2’: 小于66}
from collections import defaultdict
values = [11, 22, 33,44,55,66,77,88,99,90]
my_dict = defaultdict(list) # 参数必须是可调用的
for value in values:
if value>66:
my_dict['k1'].append(value)
else:
my_dict['k2'].append(value)
defaultdict字典解决方法
OrderedDict
会按照输入的顺序排序
from collections import OrderedDict
dic = OrderedDict([('2', 3), ('3','4'), ('r', 5)])
print(dic.keys())
输出:
odict_keys(['2', '3', 'r'])
random模块
random.randint(x, X) 范围x-X内的随机一个整数,包含X
random.randrange(x, X)范围在x -X的随机一个整数,不包含X
random.choice(seq) 传入一个序列得到随机的一个数
random.sample(seq, 个数) 传入一个序列 取其中的两个数,不重复。
randrom.shuffle(list) 没有返回值,将传入方法中的列表次序打乱
l = []
for i in range(6):
dig = str(random.randint(0, 9))
alpha = random.choice(chr(random.randrange(97,122)))
alpha_upper = random.choice(chr(random.randrange(65,90)))
r = random.choice([dig, alpha_upper, alpha])
l.append(r)
print(''.join(l))
输出:
fk9LSG