Python中常用的模块和高级语法整理总结

刚学习Python,总结Python中常用的模块和一些高级语法,方便以后查询使用

常用模块

logging模块
用于日志记录,deep learning 中经常用到
https://www.cnblogs.com/Nicholas0707/p/9021672.html

高级函数

filter(function, iterable)
用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表,做法是依次将序列的值传入function中,如果返回Flase则过滤

  • function一定要有返回值,None默认值为None(False)

map(function, iterable, …)
将Iterable中的每个元素传入function中得到的值组成一个新的seq

  • map()函数不改变原有的 list,而是返回一个新的 list,利用map()函数,可以把一个 list 转换为另一个 list,只需要传入转换函数。
  • python3中,返回是一个迭代器,python2中返回的是list
  • function一定要有返回值,通常用lambda定义,如果function不返回任何值,则map的结果是None组成的seq

operator module中的itemgetter,attrgetter函数
itemgetter用于获取对象的指定维的数据,参数为一些序号,但是itemgetter函数获取的不是值,而是定义了一个函数,通过该函数作用到对象上才能获取值,attrgetter用于获取对象的某个属性值,通常用在类中,两者可以和map、sorted等函数结合使用。
具体用法如:

b=operator.itemgetter(1)      #定义函数b,获取对象的第1个域的值   
x=b(a)     #获取a的第一个域的值

reduce(function, sequence, initial)
function :有两个参数的函数, 必需参数
sequence :tuple ,list ,dictionary, string等可迭代物,必需参数
initial :初始值, 可选参数
运行过程:首先把seq前两个元素传给function,function加工后,把得到的结果和seq第三个元素作为两个参数传给函数参数, 函数加工后得到的结果又和第四个元素作为两个参数传给函数参数,依次类推。 如果传入了 initial 值, 那么首先传的就不是 seq 的第一个和第二个元素,而是 initial值和 seq第一个元素。经过这样的累计计算之后合并序列到一个单一返回值,initial的值很重要

sorted(iterable, key, reverse=True)
key指定一个接收一个参数的函数,这个函数用于从每个元素中提取一个用于比较的关键字。默认值为None

  • reverse是一个布尔值。如果设置为True,列表元素将被倒序排列,默认为FALSE
  • 可以使用list的list.sort()方法进行排序。这个方法会修改原始的list(返回值为None),list.sort()方法效率更高,但是只能用在list上
  • key可以配合使用operator中提供的itemgetter(可以指定多级排序)和attrgetter(对对象进行排序)

lambda函数
lambda argument_list: expression

  • lambda输入是传入到参数列表argument_list的值,输出是根据表达式expression计算得到的值
    通常用到map、reduce、filter、sorted等函数式编程中

zip(iterable, …)
该函数返回一个以元组为元素的列表,其中第 i 个元组包含每个参数序列的第 i 个元素。只有一个参数时,它返回一个1元组的列表,zip(*)作用与之相反

  • 长度处理:返回的列表长度被截断为最短的参数序列的长度。

持续更新中……

你可能感兴趣的:(Python,python,lambda,filter,zip,列表)