Python Cookbook List(必须理解的python概念)

数据结构和算法

  • 解压序列赋值多变量
    • 可以用在所有可迭代对象上面
    • 使用星号表达式来忽略不关心的元素,星号表达式结果仍是可迭代元素
    • 可变长元组,字符串分割时很有用
  • 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来格式化长字符串的输出
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值