filter运行出现 <filter object at 0x000001B68F052828> 判断素数
刚接触filter时 运行总是出现<filter object at 0x000001B68F052828> 得不到想要的数据
后来发现是因为filter的结果是一个数组 需要 list 帮助
后来将print(f) 改为 print(list(f)) 成功~
代码:def fil(n):
return n%2==1
f=filter(fil,range(100))
print(list(f))
结果:
将100以内的奇数算出来了
练习:将100以内的素数求出
分析:什么是素数。即 质数 只能被本身和1整除的数
代码:
方法一:
import math
def prime(n):
flag=0
for i in range(2,int(math.sqrt(n)+1)):
if n%i==0: #判断是不是素数 不是素数就将1赋给flag
flag=1
break
if flag != 1: #若要判断素数 只需将flag!=1 同样的flag==1 则是非素数的值
return n
f=filter(prime,range(100))
print(list(f))
方法二:
num=[]; #定义一个空数组 用来存放数字
n=1
for n in range(1,100):
i=2
for i in range(2,n):
if n%i==0: #判断是否为素数 若是则break
break
else:
num.append(n)
print(num)