num =int(input('输入一个大于2的自然数:'))
lst =list(range(2, num))# 最大整数的平方根
m = num**0.5# index是列表的下标for index, value inenumerate(lst):# 大于m说明value不会成为之后元素的因数(列表已经通过之前的因数筛选过了)if value > m:break# 使用切片对该位置之后的元素进行过滤
lst[index+1:]=filter(lambda x: x % value !=0, lst[index+1:])print(lst)
remove方法
num =int(input('输入一个大于2的自然数:'))
lst =list(range(2, num))
m = num**0.5for index, value inenumerate(lst):if value > m:breakfor value1 in lst[:index:-1]:if value1 % value ==0:
lst.remove(value1)print(lst)
(2)使用列表推导式和random 生成一个包含50个介于1~100的随机整数的列表,然后编写函数isPrime用来测试整数 n 是否为素数,接下来使用内置函数filter把isPrime作用到包含若干随机整数的列表 lst 上
from random import randint
defisPrime(n):if n in(2,3):returnTrueif n %2==0:returnFalsefor i inrange(3,int(n**0.5)+1,2):if n % i ==0:returnFalsereturnTrue
lst =[randint(1,100)for _ inrange(50)]print(lst)print(list(filter(lambda n: isPrime(n)isFalse, lst)))