0

リスト L をパラメーターとして取り、完全な正方形である L のすべての要素からなるリストを返す関数を作成しています。

def isPerfectSquare(n):

    return n==int(math.sqrt(n))**2


def perfectSquares2(L):

    import math
    return(list(filter(isPerfectSquare,(L))))

フィルター機能が間違っていると思いますが、修正方法がわかりません...

4

3 に答える 3

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)]
于 2013-07-07T03:52:25.703 に答える
0

これは使用するのに適した場所lambdaです。また、list()Python 2.x または余分な括弧を使用する必要はありません。

import math
def perfectSquares2(L):
    return filter(lambda n: n==int(math.sqrt(n))**2, L)
于 2013-07-07T03:59:46.307 に答える