リストの各要素に2を掛けると仮定しますが、なんらかの理由でそれは[6,5,7]
を返し続けます。何らかの理由で最初の要素を掛けるだけですが、すべての要素を掛けてリストを返すようにします。リスト内の要素を掛ける
n = [3, 5, 7]
def double_list(x):
for i in range(0,len(x)):
x[i] = x[i] * 2
return x
print(double_list(n))
リストの各要素に2を掛けると仮定しますが、なんらかの理由でそれは[6,5,7]
を返し続けます。何らかの理由で最初の要素を掛けるだけですが、すべての要素を掛けてリストを返すようにします。リスト内の要素を掛ける
n = [3, 5, 7]
def double_list(x):
for i in range(0,len(x)):
x[i] = x[i] * 2
return x
print(double_list(n))
問題は、最初の反復後にxを返すことです。
ループが終了した後にxを返すと、要求された結果が得られます。
n = [3, 5, 7]
def double_list(x):
for i in range(0,len(x)):
x[i] = x[i] * 2
return x
print (double_list(n))
戻りstatemtentの詳細については、あなたがループ内から返さhere
読むことができます。最初の要素が更新されるとすぐに、他の要素を更新せずに戻ります。 forループの外側に戻る必要があります。
def double_list(x):
for i in range(len(x)):
x[i]*=2
return x
n=[24,20,48]
double_list(n)
これは問題なく機能します。試してみてください 元のリストnが変更されています。
'return'は関数を停止します。関数内で( 'return'の有無にかかわらず)' print'文でデバッグすると、 – Mel
が表示されます@Mel [6,5,7]、[6,10,7]、[6,10,14 ]しかし、私はちょうど最後の結果で新しいリストをしたい。次々にそうではない...これは私を混乱させている笑 – Anon