众所周知,python功能强大,语法灵活,这些得益于其丰富而强大的库。除了众多第三方库和方法函数,python自带的很多函数也非常有趣,用起来称得上优雅。
今天主要是分享5个python内置的小函数,都是个人觉得强大而精致的几个函数。不是高深的知识,纯粹因为觉得好用而分享。
<强> 01一用而过:λ强>很多语言都有匿名函数,python的匿名函数写作λ,当需要实现一定功能而又不想“大张旗鼓”的def一个函数时,λ就是最优的选择。
其语法格式一般是这样的:
<>以前lambda x: x * * 2, #,(x)在也可以将它赋值给一个变量,由于python中一切皆对象,所以后续程序中就可以用该变量调用这个匿名函数。
时间=<>以前f lambda x: x * * 2, f (2), #,4当然,这里其实没必要应用λ来实现,因为既然要显式调用,还不如干脆直接写个明确的函数罢了.lambda函数更广泛的应用场景在于该匿名函数作为另一个函数的参数传递时,应用就比较合适了,例如,将λ作为排序()函数的关键参数,就可以实现特定功能的排序。
=<>以前dyct {& # 39;一个# 39;:2,& # 39;b # 39;: 1, & # 39; c # 39;: 5}, 排序(dyct.items (),, key =, lambda x: x [1]), #,((& # 39;b # 39;,, 1),,(& # 39;一个# 39;,,2),,(& # 39;c # 39;,, 5)] <强> 02智能解压:邮政强>zip函数人如其名,是打包或者解包的函数,接受2个以上可迭代变量、输出对应位置组成元组后的迭代类型,例如:
时间=<>以前a [& # 39;一个# 39;,,& # 39;b # 39;,, & # 39; c # 39;], b =, (4, 5, 6), zip (a, b), #,, 列表(zip (a, b)), #,((& # 39;一个# 39;,,4),,(& # 39;b # 39;,, 5),, (& # 39; c # 39;,, 6)), 元组(zip (a, b)), #,((& # 39;一个# 39;,,4),,(& # 39;b # 39;,, 5),, (& # 39; c # 39;,, 6))也可以接受多于2个输入可迭代变量,而且如果各迭代变量长度不一致也不会报错,只是此时返回迭代变量取决于输入总长度最短的一个例。如:
时间=<>以前a [& # 39;一个# 39;,,& # 39;b # 39;,, & # 39; c # 39;,, & # 39; d # 39;,, & # 39; e # 39;], b =, (4, 5, 6, 7), c =,(真的,,假的,,真的), 列表(zip (a, b, c)), #,((& # 39;一个# 39;,,4,,真的),,(& # 39;b # 39;,, 5日,假),,(& # 39;c # 39;,,,,真的))与邮政打包相对应的用法是解包,即对一个打包形式的元素进行依次解包,并返回多个新的列表。例如:
<>以前aZip =,((& # 39;一个# 39;,,4,,真的),,(& # 39;b # 39;,, 5日,假),,(& # 39;c # 39;,,,,真的)), a, b,, c =, zip (* aZip), :#,(& # 39;一个# 39;,,& # 39;b # 39;,, & # 39; c # 39;), #,b: (4, 5, 6), #,c:(真的,,假的,,真的) <强> 03一一映射:map 强>映射函数也正如其取名一样,是一个将接受的迭代变量依次经过某种映射,并输出映射后的迭代变量。例如,如果对列表中的某个变量依次完成求值,并返回一个新的列的表,则可以应用地图:
时间=<>以前a [1,, 2,, 3,, 4], 地图(str,,), #列表(地图(str,,), #,[& # 39;1 & # 39;,,& # 39;2 & # 39;,,& # 39;3 & # 39;,,& # 39;4 & # 39;]这是映射函数的一个典型用法:接受2个参数,第一个参数(上例中是str()函数)是一个要作用的函数,第二个参数是可迭代变量。
当第一个函数的参数是是一个多变量函数时,地图也可以接受更多的参数例。如:
时间=<>以前a [1,, 2,, 3,, 4], 时间=b [2,, 2,, 3,, 3], 列表(地图(lambda , x,, y: x * * y,, a, b)), #,(1,4,27岁,64]与邮政函数中类似,当地图里的函数参数长度不匹配时并不会报错,只是输出结果将由最短的决定:
时间=<>以前a [1,, 2,, 3,, 4], b =, (2, 2), 列表(地图(lambda , x,, y: x * * y,, a, b)), #,(1,4) <强> 04一夫当关:过滤器强>与映射函数类似,过滤器函数也接受一个函数及其变量作为参数,只是要求这个函数的返回结果是bool型,并用这个bool的结果决定输出的取舍问题,例如需要对一个输入列表过滤,要求保留3的倍数: