一、基础知识
1、字符串操作
S.find(sub [,start [,end]]) 在索引start和end之间查找字符串sub
S.rfind(sub [,start [,end]]) -> int
S.replace(old, new[, count]) old代表需要替换的字符,new代表将要替代的字符,count代表替换的次数(省略则表示全部替换)
S.split([sep [,maxsplit]]) -> list of strings 以sep为分隔符切片,如果maxsplit有指定值,则仅分割maxsplit个字符串;返回列表
S.rsplit([sep [,maxsplit]]) -> list of strings
S.splitlines(keepends=False) -> list of strings
S.lower() -> string 将所有大写字符转换成小写
S.upper() -> string 将所有小写字符转换成大写
S.count(sub[, start[, end]]) -> int 返回字符串sub在start和end之间出现的次数
S.startswith(prefix[, start[, end]]) -> bool 判断字符串是否是以prefix开头,start和end代表从哪个下标开始,哪个下标结束
S.endswith(suffix[, start[, end]]) -> bool 判断字符串是否以suffix结束,如果是返回True,否则返回False
S.join(iterable) -> string 将列表拼接成字符串
2、列表操作
L.append(object) append添加一个对象,可以是任意类型
L.extend(iterable) extend是依次添加元素,一个一个添加,一般添加的是字符串或者列表
L.insert(index, object) insert是在索引位置添加value
L.count(value) -> integer 计数
L.pop([index]) -> item 如果pop()里面不添加索引 默认删除列表中的最后一个
L.remove(value) 删除元素
L.reverse() 倒置
L.sort(cmp=None, key=None, reverse=False) 默认reverse=False,代表升序(从小到大)排序,当为True时,则降序(从大到小)排列
L.index(value, [start, [stop]]) -> integer 返回查找x第一次出现的索引,i是开始查找索引,j是结束查找索引
3、字典操作
字典的key和value一一对应的,字典是可变的,也是无序的,可迭代的
dict() 字典初始化
dict['dsa'] = 4 字典赋值
del 字典名[key] 删除元素
get(key[, default]) 查看元素
字典的3个方法:keys、values、items
4、元组操作
元组是一种不可变序列
用法:元组的元素取出赋值给不同变量;元组遍历,获得元组对象;元组转列表使用
5、集合操作
集合的特点:是一种可迭代的、无序的、不能包含重复元素的数据结构
set() 去重
add() 添加
update() 和列表中的extend相似,一个个添加
集合名.remove(元素值)
集合名.pop()
二、常用知识
1、Lambda表达式
函数名 = lambda 参数:返回值 lambda表示的是匿名函数,不需要用def来声明
注意事项:
1.函数的参数可以有多个,多个参数之间用逗号隔开
2.匿名函数不管多复杂.只能写一行.且逻辑结束后直接返回数据
3.返回值和正常的函数一样,可以是任意数据类型,返回值的时候只能返回一个不能返回多个
2、基础函数
filter(function or None, sequence) -> list, tuple, or string 对可迭代对象进行过滤,参数function是一个函数,参数iterable是可迭代对象。filter()函数调用时iterable会遍历,它的元素被逐一传入funciton函数
map(function, sequence[, sequence, ...]) -> list 对可迭代对象的元素进行变换
reduce(function, sequence[, initial]) -> value reduce()函数是将多个数据按照指定的算法积累叠加起来;参数funciton是聚合操作函数,iterable是可迭代对象,initializer是初始值,可以省略
3、基础模块
math
round(a [,b])
random
datetime
date类
日期时间格式化
json模块
open函数
1.file参数
file参数是要打开的文件,可以是字符串或整数。如果file是字符串表示文件名,文件名可以是相对当前目录的路径,也可以是绝对路径;如果file是整数表示文件描述符,文件描述符指向一个已经打开的文件
2.mode参数
设置打开模式,二进制文件设置rb,wb,xb,ab,如果是文本文件,则设置r,w,x,a
文本文件读写
size=-1时没有限制,读取全部内容hint是限制读取的行数,hint=-1时没有限制二进制文件读写
os模块
Python对文件的操作是通过文件对象实现的,如删除文件、修改文件名,创建目录,删除目录和遍历目录,可以通过Python的os模块实现
src是源文件,dst是目标文件,它们都可以是相对路径或者绝对路径os.path模块
绝对路径UNIX的时间戳,如果文件不存在或无法访问,则引发OSError字节为单位,如果文件不存在或无法访问,则引发OSErrorre模块

4、深拷贝和浅拷贝
不管对于浅拷贝、还是深拷贝,针对不可变对象str、int、tuple(有点特殊)、boolean,它的内存地址是不变的,拷贝的仅仅是值
浅拷贝只拷贝可变对象的第一层,如果可变对象中还有可变的对象,那么第二层拷贝不到,拷贝不到就是说,第二层的内存地址是共用的,都是指向同一片内存地址
深拷贝对于可变的对象,全部拷贝下来,全部都开辟一片新的内存地址
5、垃圾回收
参阅 pythonav资源分享
6、多进程和多线程
7、闭包
闭包就是内层函数, 对外层函数(非全局)的变量的引用. 叫闭包

作用:python规定. 如果你在内部函数中访问了外层函数中的变量. 那么这个变量将不会消亡. 将会常驻在内存中. 也就是说. 使用闭包, 可以保证外层函数中的变量在内存中常驻. 好处就是就是让一个变量能够常驻内存,供后面的程序使用
8、迭代器
Iterable: 可迭代对象. 内部包含__iter__()函数
Iterator: 迭代器. 内部包含__iter__() 同时包含__next__().
迭代器的特点:
1. 节省内存.
2. 惰性机制
3. 不能反复, 只能向下执行.
我们可以把要迭代的内容当成子弹. 然后呢. 获取到迭代器__iter__(), 就把子弹都装在弹夹中. 然后发射就是__next__()把每一个子弹(元素)打出来. 也就是说, for循环的时候.一开始的 时候是__iter__()来获取迭代器. 后面每次获取元素都是通过next()来完成的. 当程序遇到 StopIteration将结束循环.
9、生成器
在python中有以下几种方式来获取生成器
1.通过生成器函数
2.通过各种推到式来实现生成器
将函数中的return换成yield就是生成器:yield和return的效果是一样的,但是还是有点区别
yield是分段来执行一个函数,yield可以出现多次
return是直接停止这个函数,return可以出现多次但是只会执行到第一个就结束了
10、推导式
列表推导式:[结果 for 变量 in 可迭代对象 if 条件]
生成器推导式:(结果 for 变量 in 可迭代对象 if 条件)
1.列表推导式比较耗内存,一次性加载.生成器表达式几乎不占用内存.使用的时候才分配和使用内存
2.得到的值不一样,列表推导式得到的是一个列表.生成器表达式获取的是一个生成器
字典推导式:dic = {lst1[i]:lst2[i] for i in range(len(lst1))}
集合推导式:集合推导式可以帮我们直接生成一个集合,集合的特点;无序,不重复 所以集合推导式自带去重功能
11、装饰器
@装饰器函数 == 重新定义被装饰函数=装饰器函数(被装饰函数)
