pythonfilterby
通过Flask-SQLAlchemy提供的一个query属性,当你通过model类的query属性,你可以得到一个数据库表的查询结果集。
i.User.query.filter_by(username='peter').first(),通过filter_by方法里的条件表达式来对query所得到的结果集进行过滤,得到你想要得到的结果。
example:
Retrieve a user by username通过username属性为’peter‘过滤结果集:
>>> peter = User.query.filter_by(username='peter').first()
>>> peter.id
1
>>> peter.email
u'[email protected]'
当不存在结果集时返回none:
>>> missing = User.query.filter_by(username='missing').first()
>>> missing is None
True
⑵ 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函数怎么用
python filter内建函数
filter函数是python内建函数,可以操作任何可迭代类型,如list,tuple,string.
filter需要带上一个函数function和一个可迭代序列作为参数。filter()将调用该function作用于每一个可迭代序列的元素,并返回一个由该function验证后返回值为true的元素组成新的可迭代序列,新序列的类型保持与filter参数序列的类型一致
2.filter与数字
下面用这个例子来说明:
#建个数字列表
numbers=[1,5,9,8,4,6,3,7]
#定义一个过滤标准,取小于5的数
deflessThanFive(element):
returnelement<5
printfilter(lessThanFive,numbers)
输出结果是列表:[1,4,3]
解说:此处的过滤函数lessThanFive必需带入一个参数(filter()会调用lessThanFive,参数是列表nembers中的每一个元素,一次一个)。filter()返回所有值都是小于5的列表
3.filter与字符串
下面用如下例子说明:
#定义元组类型
names=('Jack','Jill,'Steve','')
#筛选出名字
new_names=filter(None,names)
printnew_names
输出结果是元组:
('Jack','Jill,'Steve')
在元组names最后一个名字是空字符串,而filter的第一个参数是None,这说明需要使用identity函数(该函数是简单的返回该元素的)
因为python对空字符串,0和None作为False,所以上面的filter的语句就是移除空元素。
4.filter和函数
目的:找出以J开头的名字
defstartsWithJ(element):
ifelement:
returnelement[0]=='J'
returnFalse
j_names=filter(startsWithJ,names)
printj_names
输出结果是元组:('Jack','Jill')
注意到了吗,上面的2个结果都是tuple而不是list,再一次说明fliter的返回值类型与参数序列的类型保持一致
⑷ python中的filter()函数怎么用特别是一个函数有多个输入参数时。
map是把函数调用的结果放在列表里面返回,它也可以接受多个 iterable,在第n次调用function时,将使用iterable1[n], iterable2[n], ...作为参数。
filter(function, iterable)
这个函数的功能是过滤出iterable中所有以元素自身作为参数调用function时返回True或bool(返回值)为True的元素并以列表返回.
def f_large_than_5(x):
return x > 5
filter(f_large_than_5, range(10))
>>[6,7,8,9]
⑸ 如何用python写这个代码
如有问题,请私聊我,谢谢。
⑹ python中filter和map的区别
li=[11,22,33,44,55,66]
ret=filter(lambdaa:a>33,li)
print(list(ret))
filter是过滤集合中的部分结果
ret2=map(lambdaa:a+100,li)
print(list(ret2))
map是映射每一个元素
⑺ python filter函数
不会死循环,生成器是个虚拟抽象的概念,你可以认为_odd_iter()primes() 里面运行的时候
python解释器并不生成实际的List,也就不会耗费内存和时间
真正分配给List内存只在以下过程, primes()这个生成器是逐步分配内存的!!
forninprimes():
ifn<1000:
print(n)
else:
break
另外提醒你下,你的程序只能在Python 3.x版本下正确运行:-)因为你用的是 filter返回生成器对象的用法!!如果你要你的程序在Python 2.x正确运行,需改成如下形式。
根据你最新的追问,“为什么it=filter(lambda x : x%n>0 ,it)不行??“直接在filter里用Lambda表达式是完全可以的,你的原因是你的Lambda表达式漏输入了一个n,请看如下形式.
#Python2.x下需导入itertools库的ifilter才能和python3.x的filter等效
importitertools
def_odd_iter():
n=1
whileTrue:
n=n+2
yieldn
def_not_divisible(n):
returnlambdax:x%n>0
defprimes():
yield2
it=_odd_iter()
whileTrue:
n=next(it)
yieldn
#it=itertools.ifilter(_not_divisible(n),it)
it=itertools.ifilter(lambdax,n=n:x%n>0,it)
forninprimes():
ifn<1000:
print(n)
else:
break
⑻ Python 中关于filter函数问题求教
看文字的话会很乱,和图一起看会好一点
首先,it是个生成器(_odd_iter),并使n=3,随后,it作为一个生成器存在于filter对象中(迭代器),并使it为一个filter对象,经过循环,到达next语句,先计算it _odd_iter(生成器),生成了新的数之后,开始计算filter。第一次循环的时候第18行的代码相当于 it = filter(_not_divisible(3), it ),等号右面的it还在等待next调用生成值,生成值之后,就将它代入为lambda的x中……第二次循环的时候第18行代码变成 it = filter(_not_divisible(5), filter(_not_divisible(3), it ) ),同样等号右面的it仍然在等待next调用生成新的值
我刚看这个教程,不知道对不对。。。
对了我看见有一个人问把代码第18行改成 it = filter(lambda x: x % n > 0, it)
会失去过滤功能,我觉得,lambda是一个临时函数,所以觉得像filter(div(5), filter(div(3), it))这种存在多个lambda临时函数的话是很奇怪的,
在调试时,发现filter只检测了一个n(最近被赋值的),相当于7%5,9%7这样,因此失去过滤素数功能。模拟一下,在将要输出5的时候,it = filter()的那行代码变为:
it = filter(lambda x : x % n >0 , filter (lambda x : x % n > 0 , it ) ),it将值赋给x,但是,我觉得n被赋值时,会刷新其他lambda中的n,造成类似于 it =filter(lambda x : x % 5 >0 , filter (lambda x : x % 5 > 0 , it ) )的情况
⑼ python,这个语法哪里错了呢
chmod +x是linux命令,不能在Python中直接使用,更不能在Windows下使用。
⑽ 在python中,使用filter语句实现
我感觉这个场景不应该用 filter 来实现
因为 filter 做过滤的依据是序列中的元素内容
而这个场景的过滤依据的是元素出现的次序
如果一定要用 filter 也不是不可以,只是非常的别扭……
deffunc(lst):
whilelen(lst)>1:
lst=zip(*filter((lambdai:i[0]%2),enumerate(lst)))[1]
returnlst[0]iflstelseNone
printfunc([0,1,2,3,4,5,6,7,8,9])
#>>7