标签:return 系统 append 就是 ram 前端 修改 get name
sys模块是指与python解释器沟通的模块
os模块是与操作系统交互的模块
python的工作路径相关的操作
os.getcwd 获取当前的动作目录 get current working dir
os.chdir 更改工作路径 change dir
用递归的方法计算5的阶乘
递归的原理 先递 后归
def fn(n):
if n == 1:return 1
else:
return fn(n-1)*n
print(fn(5))
return 1*2*3*4*5
def fn(5):
if 5 == 1:return 1
else:
return fn(4)*5
def fn(4):
if 4 == 1:return 1
else:
return fn(3)*4
def fn(3):
if 3 == 1:return 1
else:
return fn(2)*3
def fn(2):
if 2 == 1:return 1
else:
return fn(1)*2
def fn(1):
if 1 == 1:return 1
else:
return fn(n-1)*n
有序字典
orderedDict
from collections import OrderedDict
dd = OrderedDict([(‘a‘,1),(‘k1‘,‘v1‘),(‘k2‘,‘abc‘)])
print(dd)
for k in dd:
print(k,dd[k])
dd[‘k3‘] = ‘alex‘
print(dd)
OrderedDict([(‘a‘, 1), (‘k1‘, ‘v1‘), (‘k2‘, ‘abc‘)])
a 1
k1 v1
k2 abc
OrderedDict([(‘a‘, 1), (‘k1‘, ‘v1‘), (‘k2‘, ‘abc‘), (‘k3‘, ‘alex‘)])
li = [11,22,33,44,55,66,77,88,99]
my_dict = {}
for value in li:
if value > 66:
if ‘k1‘ in my_dict:
my_dict[‘k1‘].append(value)
else:
my_dict[‘k1‘] = [value]
if value > 66:
if ‘k2‘ in my_dict:
my_dict[‘k2‘].append(value)
else:
my_dict[‘k2‘] = [value]
print(my_dict)
{‘k1‘: [77, 88, 99], ‘k2‘: [77, 88, 99]}
a = list()
print(a)
[]
a = dict()
print(a)
{}
默认字典
from collections import defaultdict
d = defaultdict(list)#传入的参数是list list()就会得到一个空列表
print(d)
d[‘a‘]
print(d)
defaultdict(<class ‘list‘>, {})
defaultdict(<class ‘list‘>, {‘a‘: []})
from collections import defaultdict
d = defaultdict(list)#传入的参数是list list()就会得到一个空列表
d[‘a‘]
d[‘alex‘].append(123)
print(d)
defaultdict(<class ‘list‘>, {‘a‘: [], ‘alex‘: [123]})
from collections import defaultdict
li = [11,22,33,44,55,66,77,88,99]
dd = defaultdict(list)
for i in li:
if i > 66:
dd[‘k1‘].append(i)
else:
dd[‘k2‘].append(i)
print(dd)
defaultdict(<class ‘list‘>, {‘k2‘: [11, 22, 33, 44, 55, 66], ‘k1‘: [77, 88, 99]})
要使得默认字典的值是 字符串那怎么办
from collections import defaultdict func = lambda :‘abc‘ dd = defaultdict(func) dd[1] dd[2] dd[3] dd[4] print(dd)
defaultdict(<function <lambda> at 0x0000002198502EA0>,
{1: ‘abc‘, 2: ‘abc‘, 3: ‘abc‘, 4: ‘abc‘})
from collections import defaultdict func = lambda :‘abc‘ dd = defaultdict(func) dd[1] = 45 dd[2] = ‘alex‘ dd[3] dd[4] print(dd) C:\ProgramData\Anaconda3\python.exe C:/骑士计划1期/day25/笔记代码.py
defaultdict(<function <lambda> at 0x0000005A0BD32EA0>,
{1: 45, 2: ‘alex‘, 3: ‘abc‘, 4: ‘abc‘})
命名元组
from collections import namedtuple birth = namedtuple(‘birthday‘,[‘year‘,‘month‘,‘day‘]) 对象名 类命名 类的静态属性 b1 = birth(‘2018‘,‘9‘,‘5‘) print(b1) print(b1.day) print(b1.year) print(b1.month)
birthday(year=‘2018‘, month=‘9‘, day=‘5‘) 5 2018 9
可命名元组非常类似一个只有属性没有方法的类
[‘year‘,‘month‘,‘day‘]对象的属性名
birthday 是类的名字
这个类最大的特点就是一旦实例化 就不能修改属性
queue队列
用法
put 从后端插入
get 从起前端取走
import queue #普通队列
q = queue.Queue()#队列
q.put(1)
q.put(2)
q.put(3)
q.put(‘abc‘)
q.put({‘a‘:1})
print(q.get())
print(q.get())
print(q.get())
print(q.get())
print(q.get())
1
2
3
abc
{‘a‘: 1}
双端队列deque[dek]
double-ended queue
用法:
右边插入 append
左边插入 appendleft
右边取走 pop
左边取走 popleft
from collections import deque
dq = deque()
dq.append(‘abc‘)
dq.append(123)
dq.append([11,2,3,5,])
dq.appendleft({1:‘anc‘})
dq.appendleft(‘ceds‘)
print(dq)
deque([‘ceds‘, {1: ‘anc‘}, ‘abc‘, 123, [11, 2, 3, 5]])
from collections import deque
dq = deque()
dq.append(‘abc‘)
dq.append(123)
dq.append([11,2,3,5,])
dq.appendleft({1:‘anc‘})
dq.appendleft(‘ceds‘)
print(dq)
print(dq.pop())
print(dq.popleft())
deque([‘ceds‘, {1: ‘anc‘}, ‘abc‘, 123, [11, 2, 3, 5]])
[11, 2, 3, 5]
ceds
deque([‘ceds‘, {1: ‘anc‘}, ‘abc‘, 123, [11, 2, 3, 5]])
deque([‘ceds‘, {1: ‘anc‘}, ‘alex‘, ‘abc‘, 123, [11, 2, 3, 5]])
from collections import deque
dq = deque()
dq.append(‘abc‘)
dq.append(123)
dq.append([11,2,3,5,])
dq.appendleft({1:‘anc‘})
dq.appendleft(‘ceds‘)
print(dq)
dq.insert(2,‘alex‘)
print(dq)
队列 以及双向队列的插入效率很高
第24篇 collections模块 双端队列 命名元组 有序字典 默认字典
标签:return 系统 append 就是 ram 前端 修改 get name
原文地址:https://www.cnblogs.com/cavalier-chen/p/9595280.html