本文邀请pany来回答,以下是他基于工作经验罗列出来的关于python的一些实用知识点和小技巧,希望对你有所帮助~
文章不旨在概念的介绍和深挖,或者酷炫的第三方库介绍。更多是站在实用性角度简明快速罗列自认为颇为有用的知识点或者技巧。为提高代码的效率或可读性,便利性等添砖加瓦。经验之谈,欢迎交流和拍砖。字符串字符拼接,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支持 len in join
删除元素: remove 和 discard
二者的区别在于,如果被指定删除的不存在时 remove 会抛出KeyError异常,而discard则不会
对集合添加多项
集合运算
推荐使用运算符而不是set方法函数,运算符看起来更简洁,有更好的可读性
如果读完此文对你有帮助,请点个赞或者转发让更多人知道哦~