189 8069 5689

filter使用python3代码进行迭代元素的方法

小编给大家分享一下filter使用python3代码进行迭代元素的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

成都创新互联是一家集网站建设,吉林企业网站建设,吉林品牌网站建设,网站定制,吉林网站建设报价,网络营销,网络优化,吉林网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

filter用于过滤筛选可迭代对象中的元素,如果符合条件则返回对应的元素序列(类型为filter),filter接受两个参数,一个是函数用于筛选元素,返回值为True或Flase,另一个是可迭代对象。

filter用法

evens = filter(is_odd, range(-5, 10))
print(list(evens))

示例结果:

[2, 4, 6, 8]

filter函数的返回值是一个可迭代对象,这一点很关键,这也是为什么我说filter函数是高级语法的原因。

为什么不返回列表?,如果返回的是列表,那么在filter函数执行过程中,就必须对列表里的每一个数据进行对2取模运算,这样很浪费空间,因此filter在实现时采用了迭代器技术,将计算延迟到对filter函数返回结果进行遍历时才进行。

怎么验证上面的说法呢,对代码稍加修改

from collections import Iterable
 
def func(x):
    print("接收参数" + str(x))
    return x%2 == 0
 
lst = [1, 2, 5, 6, 7]
res = filter(func, lst)
# res 是一个可迭代对象
print(isinstance(res, Iterable), type(res))
 
for item in res:
print(item)

 

现在,我不使用lambda表达式对数据进行判断,而是使用自由度更高的函数,在函数func中,我输出接收到的参数,如果对lst数据中的过滤发生执行filter函数期间,那么,在输出res类型之前,就会执行函数func中的print语句,现在来看程序实际的执行结果

True 
接收参数1
接收参数2
2
接收参数5
接收参数6
6
接收参数7

程序输出结果表明,在执行filter函数时,并没有调用func函数对lst中的数据进行过滤,而是在对res进行遍历时才调用func函数进行过滤。

以上是“filter使用python3代码进行迭代元素的方法”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


本文标题:filter使用python3代码进行迭代元素的方法
本文来源:http://cdxtjz.cn/article/geioeo.html

其他资讯