×

filter python

filter python(python filter过滤器疑问)

admin admin 发表于2023-11-12 08:58:35 浏览32 评论0

抢沙发发表评论

本文目录

python filter过滤器疑问

过滤器第二个参数可以是生成器也可以是列表,只要是iterable就可以,生成器也是一个iterable。next()得到的是iterable的一个结果值。过滤器返回的是一个map,map本身也是一个iterable,可以使用next()或者for去迭代它。filter()在迭代的时候逐个返回值,与生成器类似,都是在每次调取值时才算出一个来。

python filter对象怎么遍历

纠正一下你的这句话其实才是真正的filter的入参,而x指的是filter的另一个入参it。这里的it是一个生成器对象,而filter每次会得到一个由它生成的值。所以x指的不是it,只是it产生的一个值。至于怎么实现将it中的数据遍历下去,这个很好解释。我们知道filter接受两个参数function和iterable。而filter的功能就等价于(item for item in iterable if function(item)),它就是这么遍历完的。。。it里面到底是啥? 正如你知道的,它就是一个生成器对象。每当一次调用结束后它就会挂起,直到下一次被激活。while True:n = next(it)yield n it = filter(_not_divisible(n), it)#怎么就实现了循环遍历 it了?它的实质就是把得到的每个素数从生成器中剔除。

在python中,使用filter语句实现

我感觉这个场景不应该用 filter 来实现

因为 filter 做过滤的依据是序列中的元素内容

而这个场景的过滤依据的是元素出现的次序

如果一定要用 filter 也不是不可以,只是非常的别扭……

def func(lst):    while len(lst) 》 1:        lst = zip(*filter((lambda i:i%2),enumerate(lst)))    return lst if lst else None    print func()# 》》 7

python filter函数

  • 不会死循环,生成器是个虚拟抽象的概念,你可以认为_odd_iter() primes() 里面运行的时候

  • python解释器并不生成实际的List,也就不会耗费内存和时间

  • 真正分配给List内存只在以下过程, primes()这个生成器是逐步分配内存的!!

for n in primes():    if n《1000:        print(n)    else:        break
  • 另外提醒你下,你的程序只能在Python 3.x版本下正确运行:-)因为你用的是 filter返回生成器对象的用法!!如果你要你的程序在Python 2.x正确运行,需改成如下形式。

  • 根据你最新的追问,“为什么it=filter(lambda x : x%n》0 ,it)不行??“直接在filter里用Lambda表达式是完全可以的,你的原因是你的Lambda表达式漏输入了一个n,请看如下形式.

# Python 2.x下需导入itertools库的ifilter才能和python 3.x的filter等效import itertoolsdef _odd_iter():    n=1    while True:        n=n+2        yield ndef _not_divisible(n):    return lambda x:x%n》0def primes():    yield 2    it=_odd_iter()    while True:        n=next(it)        yield n        #it=itertools.ifilter(_not_divisible(n),it)        it = itertools.ifilter(lambda x, n=n: x%n 》 0, it)for n in primes():    if n《1000:        print(n)    else:        break

python中filter和map的区别

li = 

ret = filter(lambda a:a》33,li)

print(list(ret))

filter是过滤集合中的部分结果

ret2 = map(lambda a:a+100,li)

print(list(ret2))

map是映射每一个元素

python中的filter()函数怎么用特别是一个函数有多个输入参数时

map是把函数调用的结果放在列表里面返回,它也可以接受多个 iterable,在第n次调用function时,将使用iterable1