filter()
请尝试用 filter()删除 1~100 的素数
def is_prime(n):
if n <= 1:
return False
for s in range(2,n):
if n % s == 0:
return True
return False
print filter(is_prime,range(1,101))
这个程序需要特别注意返回的是True还是False,特别容易出现相反的结果,功亏一篑就得不偿失了。
另外,最后一个return False的位置也需要注意一下,如果放在与if并列的位置,得出的就是错误的结果。比如判断“9”这个数字,在if循环内,当s=2时,9不能被2整除,就会跳出if,调到与if并列的位置,从而返回false,使9被误认为素数被filter函数过滤掉。得到的就会是只有偶数的结果。