python3 filter用法(舉例求0~n之間的素數)


在用python3求0~n之間的素數時,關於filter用法的有點模糊,於是上網查了一下filter用法。

求0~n之間素數的腳本prime.py:

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

關於filter不是太明白,於是上網查了一下,很多人說當filter(None,list)時,返回的就是iterable本身,但是在本例中明顯不是返回list本身的;

於是去查了下filter的模塊介紹:

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

紅色字體明確說明:當function時None時,返回的是Ture的item

舉下列說明:

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM