python代码高效经验

来源:互联网 发布:java软件测试 编辑:程序博客网 时间:2024/06/11 18:19
  • map(function(),iterable):任何一个可迭代(iterable)对象(例如list,tuple等)的每一个元素执行一次function().返回一个的list,非常方便。
  • filter(function(),iterable):同map类似,用来得到符合function()的元素组成的新list
  • reduce(function(),iterable) :reduce可以实现阶乘的功能。每次从序列取两个元素,输入function()得到的值在和序列中下一个元素作为function()输入,如此迭代,python3版本reduce()需要用from functools import reduce 导入
#求5的阶乘>>> from functools import reduce>>> reduce(lambda x,y:x*y,range(1,6))120
  • lambda 不多说太常用了
  • a,b=b,a 比java转化方便太多了
  • any(),all()检验可迭代对象(list,tuple等)有没有空,0或者false元素
  • {i:i^2 for i in range() if i%2==0} ,idx2word={v:k for k,v in word2idx.items()}这种python写法可读性更强
  • ipython技巧:
    1.在变量的前面或后面加上问号(?)就可以将有关该对象的一些通用信息显示出来。
    2.%magic——用来显示所有魔术命令的详细文档。%time和%timeit——用来测试代码执行时间。
  • 用in/not in 判断某个元素是否在list中,很方便
  • collections.defaultdict() 函数可以当健不存在时实例化一个值作为默认值,但这种形式的默认值只有在通过dict[key]或者dict.getitem(key)访问才行用in判断会失去效果。
  • yield用于大量文件读取,如果直接对文件对象调用 read() 方法,会导致不可预测的内存占用。好的方法是利用固定长度的缓冲区来不断读取文件内容。通过 yield,我们不再需要编写读文件的迭代类,就可以轻松实现文件读取。
原创粉丝点击