我正在编写一个函数,它将列表L作为参数,并返回一个由L中所有元素组成的列表,它们是完美的正方形。
def isPerfectSquare(n):
return n==int(math.sqrt(n))**2
def perfectSquares2(L):
import math
return(list(filter(isPerfectSquare,(L))))
我认为我的过滤功能有误,但我不确定如何解决它...
答案 0 :(得分:4)
您必须在import math
中isPerfectSquare
,否则只会在perfetSquares2
函数的本地范围内导入。
但是,PEP 8建议您将模块导入放在脚本的顶部:
import math
def isPerfectSquare(n):
return n==int(math.sqrt(n))**2
def perfectSquares2(L):
return(list(filter(isPerfectSquare,(L))))
顺便说一句,我认为列表理解可能会更快:
def perfectSquares2(L):
return [i for i in L if isPerfectSquare(i)]
答案 1 :(得分:0)
这是使用lambda
的好地方。此外,如果Python 2.x或额外的parens,则无需使用list()
。
import math
def perfectSquares2(L):
return filter(lambda n: n==int(math.sqrt(n))**2, L)
答案 2 :(得分:0)
x=int(input())
if x>0:
for i in range(x):
p=i**2
print(p)