- %运算符
- %元素安抚用来格式化字符串。在字符串内部,%s表示用字符串替换, %d表示用整数替换, 有几个%?占位符,后面就跟几个变量或者值,顺序要一一对应。如果只有一个占位符,括号可以省略
- %d 整数
- %f 浮点数
- %s 字符串
- %x 十六进制整数
- 其中,整数可以指定是否补0;浮点数可以指定位数
- %% 转义%
- list
- list = []
- [-1] 表示list中倒数第一个 ,也就是最后一个
len(list) -1
- list 中元素类型可以不同
- tuple
- tuple = ()
- tuple 初始化不可以修改, 定义的时候元素就必须确定, 没有insert, append, pop等方法
- 保证了代码安全
- 条件判断
- 缩进规则进行执行
- 不要忘记*:*
- 循环
for in
while
- 字典
dic
key value
对- dic 内部存放的顺序和key放入的顺序是没有关系的
- 占用内存比较多,内存浪费比较多
- 查找和插入元素的速度比较快,不会随着key的增加而增加
- dic 是一种用空间换取时间的一种策略
- dic 的key必须是不可变对象
- 集合
- set
- key 的集合,但不存储value ; set 中没有重复的key; set即无序和无重复元素的集合;set可以做数学意义上的交集、并集等操作
- 创建set 输入为list
- 不可变对象
- 字符串, tuple
- 调用不可变对象自身的任意方法,并不会改变对象自身的内容;相反,这些方法会创建新的方法并返回,这样就保证了对象本身是永远不可变的
- 函数
- python 参考文档 参考文档
- 空函数
pass
- 参数
- 必选参数
- 默认参数
- 可变参数
- 关键字参数
- 参数定义的顺序是:必选参数,默认参数,可变参数,关键字参数
- 定义可变参数与定义list or tuple 时,仅仅是在参数前面加上一个
*
。在函数内部,参数接收到的是一个tuple。 调用可变参数函数时, 可以传入任意个数的参数,包括0个参数 - 可以在list 或者tuple前面加上* 作为可变参数传进去
- 关键字参数
- 关键字参数允许传入0个或者任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict; 起到了一个扩展函数的功能;
- 参数组合
- *arg 可以看做容纳多个变量的list
- **arg 可以看做容纳多个key value的dic
- 递归函数
- 每进入一次函数调用,栈就会增加栈帧,每当函数返回,栈就会减一层栈帧;故递归的次数增多,会导致栈溢出
- 解决栈溢出的方法包括尾递归优化
- 尾递归
- 在函数返回的时候,调用自身本身, 并且return 语句中不能包含表达式。这样,编译器就会做尾递归优化,使递归本身无论调用多少次,都只会占用一个栈帧,不会出现栈溢出的情况;
- 阶乘尾递归优化
def fact(n):
return fact_iter(n, 1)
def fact_iter(num, product):
if num == 1:
return product
return fact_iter(num - 1, num * product)
- 列表生成式
- 结构 [生成的元素 for 循环]
- 12
*TODO
哈希表算法