Python过滤器过滤功能介绍
在本文中,我们将通过两个程序演示在Python中使用过滤器函数的技巧。第一个程序用列表演示,第二个程序根据实际项目中常用的场景用元组演示。Filter有两个参数,第一个参数是函数名,第二个参数是序列,比如列表或者元组。过滤器将迭代参数2中的每个元素来调用参数1中指定的函数,最后重新组装返回值为真的所有元素。如果传入的参数是字符串或元组,它也将返回字符串或元组,否则它将始终返回列表。
我们看一个例子,假设公司要统计所有姓‘张’的同事,那么通过过滤就可以得到姓‘张’的同事列表。程序如下:
在这个程序中,我们定义了一个is_name函数,用来判断员工的名字是否是张,并通过string.find函数找出姓名字符串中是否包含张。由于名字中有时会出现张这个词,我们只是想知道姓中是否包含张,所以在使用find时,我们只从第一个字节开始,只查找。(这是因为我们的程序使用的是utf-8编码,而在utf-8中,一个汉字占用三个字节,这不是本文的重点,所以就不多占篇幅了。).如果我们找到这样的员工,is_name函数将返回True。
过滤函数的执行过程是将List_name作为整个公司的员工列表,依次发送给is_name进行判断,然后将is_name为True的所有元素重组为一个列表返回给list_result,最后在控制台上打印出来。
通过执行结果,我们可以看到,只有三名姓张的员工被退回并重组为新名单。
如果传入过滤器的参数是一个元组,过滤器的返回值也将是一个元组。让我们根据实际工作中的一个常见场景来演示传入元组的用法。假设我们有一组数据(tuple_sample1),现在我们只想知道其中有哪些日期数据供后续操作使用,所以我们使用filter对其进行处理。程序如下:
通过这个程序,我们将获得所有的数据。其中isinstance用于判断当前变量是否为datetime类。如果isinstance返回True,则表示它是日期类型,因此is_datetime函数返回True。最后,通过执行结果,我们可以看到只有两个日期数据被返回并重新组合成一个元组。
过滤器的使用相对简单。如果你对它的操作过程有一些理解上的困难,可以先学习地图功能的用法。这样,由浅入深的学习会更容易理解。另外,在Python2和Python3中过滤功能有一些调整,所以大家一定要看好自己的环境。
我使用的环境:windows 7 python 2.7.17 pycharm社区版2016.1.5
如果大家觉得我的文章还可以,真心希望能帮我关注一下。粉丝数量对我来说真的很重要,可以算是对我努力的一种支持。谢谢你。