私はリスト内包表記と入れ子リスト内包表記を練習しています。私の練習の一環として、私は同等のforループを書いています。このforループは正しいことができません。関数呼び出しで変数ではなく値を代入しようとしているからです。私は受信エラーがある:ループの場合、SyntaxError:関数呼び出しに割り当てることができません
File "<stdin>", line 4
SyntaxError: can't assign to function call
私はこのループのために書かれているコードは次のとおりです。この関数は、根の範囲1における素数完璧な正方形のリストを作成しようとしている
import math
def squared_primes():
list = []
for x in range(1,1000000):
for q in range(2,math.sqrt(x)+1):
if all(x % q != 0):
list.append(x**2)
print(list)
私のループの構文が正確にどこで分かったのか誰かがわかりますか?また、ネストされたリストの理解としてこれを行うことはできますか?私のループ構文を正しく取得できないため、明らかに私のリストの理解力は崩壊しています...
解決策:ユーザー@Evanのおかげで、変数と構文の問題を修正できました。 'all()'ステートメントをthis threadから修正してください。
このコードは正しく1,1000から二乗素数のリストを返します。
def squared_primes():
list1 = []
for x in range(1,1000):
if all(x%q !=0 for q in range(2,int(math.sqrt(x)+1))):
list1.append(x**2)
print(list1)
floatをrange()ビルトインの第2引数として渡すことを意味しますか? – Evan
@エヴァン・ノー、私は整数を渡すことを意味します。私はint(q)を範囲に入れようとしました...しかし、それはまだ動かないでしょう。それはエラーのように見えないので、多分私はそれを残しておくべきでしたが。私は確かにそれをもう一度試みます。 – Hanzy
また、あなたのコードでsquared_primes()関数をインデントしたが、ここに投稿するときに余分な4つのスペースを追加するのを忘れたと仮定します。私は関数呼び出しエラーなしであなたのコードを実行することができますが、インデントを削除すると、間違ってインデントの構文エラーが発生します。型エラーを回避するために、再度テストするためにint()でmath.sqrt(x)+1式を型キャストします。 – Evan