リスト L をパラメーターとして取り、完全な正方形である L のすべての要素からなるリストを返す関数を作成しています。
def isPerfectSquare(n):
return n==int(math.sqrt(n))**2
def perfectSquares2(L):
import math
return(list(filter(isPerfectSquare,(L))))
フィルター機能が間違っていると思いますが、修正方法がわかりません...
リスト L をパラメーターとして取り、完全な正方形である L のすべての要素からなるリストを返す関数を作成しています。
def isPerfectSquare(n):
return n==int(math.sqrt(n))**2
def perfectSquares2(L):
import math
return(list(filter(isPerfectSquare,(L))))
フィルター機能が間違っていると思いますが、修正方法がわかりません...
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)]
これは使用するのに適した場所lambda
です。また、list()
Python 2.x または余分な括弧を使用する必要はありません。
import math
def perfectSquares2(L):
return filter(lambda n: n==int(math.sqrt(n))**2, L)