2017-06-20 13 views
-1

リストの各要素に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)) 
+1

'return'は関数を停止します。関数内で( 'return'の有無にかかわらず)' print'文でデバッグすると、 – Mel

+0

が表示されます@Mel [6,5,7]、[6,10,7]、[6,10,14 ]しかし、私はちょうど最後の結果で新しいリストをしたい。次々にそうではない...これは私を混乱させている笑 – Anon

答えて

1

問題は、最初の反復後に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

0

読むことができます。最初の要素が更新されるとすぐに、他の要素を更新せずに戻ります。 forループの外側に戻る必要があります。

def double_list(x): 
    for i in range(len(x)): 
     x[i]*=2 
    return x 

n=[24,20,48] 
double_list(n) 

これは問題なく機能します。試してみてください 元のリストnが変更されています。

関連する問題