0

これが私のコードで、[2] と [2,4,6] という 2 つの異なる出力が得られました。

list = [1,2,3]
def getdouble(l):
    result = []
    for i in l :
        i = i * 2
        result.append(i)
    return result

print getdouble(list)

def getdouble_v2 (l):
    result = []
    for i in range(len(l)):
        l[i] = l[i] * 2
        result.append(l[i])
    return result

print getdouble_v2(list)
4

3 に答える 3

2

あなたが主張する出力を得る唯一の方法は、ファイルのインデントが壊れている場合です。にスペースとタブが混在していないことを確認しますpython -tt

于 2013-01-12T11:31:21.960 に答える
0

行を除いてインデントに4つのスペースを使用しています

        return result

これはタブでインデントされています。エディターはタブを4つのスペースとして表示するため、これは残念ですが、Pythonはタブを8つのスペースとして扱うため、Pythonではコードは次のようになります。

list = [1,2,3]
def getdouble(l):
    result = []
    for i in l :
        i = i * 2
        result.append(i)
        return result

ご覧のとおり、最初のアイテムがリストに追加された後に戻ってきます

于 2013-01-12T12:11:26.650 に答える
0

どちらの関数もresult、同じ入力リストに対して同じリストを返します。ただし、2 番目の関数は、行の元のリストも変更しますl[i] = l[i] * 2。最初の関数はそうではありません。

したがって、最初の関数の結果は次のようになります。

l = [1,2,3]
result = [2,4,6]

2 番目の関数の結果は次のとおりです。

l = [2,4,6]
result = [2,4,6]
于 2013-01-12T11:33:37.377 に答える