数据结构和算法
- 解压序列赋值多变量
- 可以用在所有可迭代对象上面
- 使用星号表达式来忽略不关心的元素,星号表达式结果仍是可迭代元素
- 可变长元组,字符串分割时很有用
- deque的使用
- 保留maxlen个元素
- 使用heapq对集合进行查找
- 查找最大,最小N个元素
- heapq.heappop() 弹出最小元素
- multidict 的使用
- 一个键可以对应多个值
- 使用defaultdict来简化对于字典的初始化
- OrderedDict 的使用
- 根据插入顺序来维护字典内元素顺序
- 对字典求最大值,最小值和排序
- 可以利用zip函数
- 可以利用sorted函数,先排序,再求最大,最小值
- 序列的去重操作
- 要保持顺序
- python中hashable的数据结构
- 避免硬编码切片
- 使用slice对象来完成,并且slice对象可以向序列长度适应
- 统计序列中元素出现次数,使用collection.Counter类
- 在counter类上,可以进行很多数学操作
- 对字典序列进行排序
- 通过使用itemgetter来获取序列中字典的相应元素
- 字典作为一种数据结构可以在很多需要类的场景下使用
- 同样也适用于max和min函数
- 对自定义类对象进行排序
- 使用operator模块中attrgetter函数返回一个callable对象,并传递给sorted函数
- 对序列或字典进行分组
- itertools.groupby()参数很像是sorted函数
- 使用filter函数来对序列进行过滤
- 根据boolean条件选择序列中数据
- 使用itertools.compress来实现条件序列和对象序列的合并
- 列表推导和字典推导
- if-else 可以和列表推导一起用,不可以和字典推导一起用
- 使用collections.namedtuple()来映射序列中元素的名字
- 使表意更加清楚
- 同时避免因为在序列中添加新元素而使下标失效,使得序列的创建和使用分离,避免因为序列创建改变而引起的使用改变。
- 利用生成器来转换并在容器上进行计算
- 尽量使用生成器而不是创建临时容器
- 合并字典
- update()方法
- 使用collections中ChainMap来对两个字典进行合并,并且所有在chainmap上的操作都会反映到原始字典中
字符串和文本
- 使用多种分隔符来分割字符串
- 使用re.split(r’’, line)来对分隔符内容进行正则表达式匹配
- 例如r’[;,\s]’,来以分号,逗号,空格来分割
- 利用捕获分组来捕捉分隔符(可以用于以后构建新的字符串)
- 使用正则表达式对文本进行搜索和匹配
- re.match(); re.search(); re.findall()
- 替换字符串
- str.replace()
- re.sub() , re.subn() , 可以以固定字符串替换也可以用模式来替换
- 通过给re模块赋予不同的flag可以实现不同的模式
- 如忽略大小写的re.IGNORECASE
- 正则表达式的贪婪模式和非贪婪模式
- re.DOTALL让点适配所有
- Unicode文本的标准化处理
- 删除字符串中的字符
- 读取文件时候使用生成器方式
- str.translate()方法来对字符串中字符进行映射
- 字符串对齐(格式化)
- 可以使用自带的ljust| rjust
- 也可以使用format函数
- 拼接字符串
- 在字符串格式化中,引入变量
- 通过sys._getframe来调取callback栈中的对象
- 使用textwrap来格式化长字符串的输出