文章不旨在概念的介绍和深挖,或者酷炫的第三方库介绍。更多是站在实用性角度简明快速罗列自认为颇为有用的知识点或者技巧。为提高代码的效率或可读性,便利性等添砖加瓦。经验之谈,欢迎交流和拍砖。
字符串
字符拼接,join。
这里需要强调下,任何字符相关的可迭代对象都可以使用join。除了set,tuple外,类句柄对象同样可以使用join。
关键字格式化
除了大家常用的%s进行格式化外,其实还可以按照关键字格式化,对于比较多变量时的情况,有利于提高代码的可读性。
当然format可以类似地
行分割
字符分隔
split(rsplit)其实时有第二个参数的,表示按顺序分隔几次,类似‘指定数目的非贪婪分隔’
内容重复的字符串
多行缩进处理
标准库的textwrap.dedent可以删除源文本中各行行首的共同缩进部分
标准库textwrap还有其他一些方法处理文本格式,例如fill设定行宽度和首行缩减,indent添加行前缀等等。
字典
setdefault
给字典设置(增加)新的键,存在就不设置(获取当前key对应的值),不存在就设置并返回当前key对应的值
update,更新字典
fromkeys(seq[,value])
创建一个新字典,序列seq的元素为键,value为字典所有键对应的初始值(不指定为None)。
类似的功能其实也可以通过defaultdict来实现,后面会举例。
标准库collections的defaultdict和OrderedDict
defaultdict类接受一个类型作为参数,当所访问的键不存在的时候,可以实例化一个指定类型空值作为默认值
统计词频
defaultdict类还使用任何不带参的函数,该函数的返回值作为默认值,这样可以实现多层key默认值的指定。
所以defaultdict可以覆盖setdefault的使用场景,人倾向使用defaultdict,更加方便简洁
模仿fromkeys
OrderedDict
python的字典是无序的,OrderedDict可以保留key的顺序信息
OrderedDict的Key会按照插入的顺序排列
json化后可以保留顺序
列表
生成式
生成式中的判断
生成式多层嵌套
但是多层生成式不推荐过度使用,可能会导致可读性更差。列表的索引有不少灵活的用法:
元素重复的序列
*运算符可生成元素重复的序列
在for循环中一同拿到索引和元素
其实enumerate函数的可使用范围也包括所有的可迭代对象
例如文件句柄
在列表中查找
除了使用index()方法返回查找元素的索引外。对于复杂点的元素可以使用生成器及其next方法
Set
集合生成式
实际上{1,2,3}相当于set([1,2,3])
set支持leninjoin
删除元素:remove和discard
二者的区别在于,如果被指定删除的不存在时remove会抛出KeyError异常,而discard则不会
对集合添加多项
集合运算
推荐使用运算符而不是set方法函数,运算符看起来更简洁,有更好的可读性
如果读完此文对你有帮助,请点个赞或者转发让更多人知道哦~