猿问

求大神讲解一下这段代码???

maxNumber = int(input('请输入一个大于 2 的自然数:'))

 lst = list(range(2, maxNumber))

 #最大整数的平方根

 m = int(maxNumber**0.5)

 for index, value in enumerate(lst): 

     #如果当前数字已大于最大整数的平方根,结束判断

     if value > m:

         break 

    #对该位置之后的元素进行过滤

     lst[index+1:] = filter(lambda x: x%value != 0, lst[index+1:]) print(lst)

qq_往昔已逝_cfhILS
浏览 1945回答 1
1回答

pardon110

input(prompt)  该函数会读取标准输入流数据,返回一个字符串,prompt是作为你输入之前的提示文字, 可选。输入完毕,回车表示结束。range(2,maxNum) 在此接受了两个参数,返回一个序列对象。第一个参数是起始数,第二个参数是终止(不包含)上述两个包装函数,int(),list()分别将各自的字符串类型转为整形,序列类型转为列表类型转型的目的是由于不同的数据类型对象拥有各自不同的方法。emumerate(iterable,start=0)类接受两个参数,通常第一个参数是可迭代的序列对象,每迭代一次返回一个元组(该元组含两个元素)。在此处是列表对象(列表是对序列的扩展,另外元组也是),它会枚举带索引(数字索引)的序列对象元素,从0开始,像这样(0,seq[0]),(1,seq[1])....平方根常识,就不说了,参考数学知识 lst[index+1:] = filter(lambda x: x%value != 0, lst[index+1:]) print(lst)关键是filter函数,实际上是python中一个过滤器类。第一个参数是一个参数或None对象,第二个参数是可迭代对象。在此是python中的lambda函数(也就是其它语言中的匿名函数,x为匿名函数的参数 冒号右侧部分是匿名函数返回值表达式值),若函数返回值为true可迭代对象项中元素将被返回。作用主要是过滤。filter主要作用是,逐次调用匿名函数,匿名函数接收可迭代对象中的每一元素作为参数,其返回值为真的元素留下。对于不清楚的概念性东西,比如元组,序列,可迭代,列表,不可变等等建议学习一下python基础,了解一下也就会明白。
随时随地看视频慕课网APP

相关分类

Python
我要回答