在用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]
