python3 filter用法(举例求0~n之间的素数)

时间:2023-03-08 22:01:30

在用python3求0~n之间的素数时,关于filter用法的有点模糊,于是上网查了一下filter用法。

求0~n之间素数的脚本prime.py:

 def f(x):
plist = [0,0] + list(range(2,x+1))
for i in range(2,x):
if plist[i]:
plist[i+i::i] = [0]*len(plist[i+i::i])
return filter(None,plist)
print(list(f(1000)))

关于filter不是太明白,于是上网查了一下,很多人说当filter(None,list)时,返回的就是iterable本身,但是在本例中明显不是返回list本身的;

于是去查了下filter的模块介绍:

 >>>help(filter)
class filter(object)
| filter(function or None, iterable) --> filter object
|
| Return an iterator yielding those items of iterable for which function(item)
| is true. If function is None, return the items that are true.
|
| Methods defined here:

红色字体明确说明:当function时None时,返回的是Ture的item

举下列说明:

>>>list = [1,2,0,4,0,7]
>>>list(filter(None,list))
[1,2,4,7]