1

Lista1 は変更されるのに Lista2 は変更されないのはなぜですか? リストを直接変更するメソッドはどれですか?

def altera(L1, L2):
    for elemento in L2:
        L1.append(elemento)
    L2 = L2 + [4]
    L1[1]= 10
    del L2[0]
    return L2[:]

Lista1 = [1, 2, 3]
Lista2 = [1, 2, 3]

Lista3 = altera(Lista1, Lista2)

print(Lista1)
print(Lista2)
print(Lista3)
4

2 に答える 2

1
L2 = L2 + [4]

L2のアドレスを再割り当てするため、渡されたものとは異なるリストになります....少なくとも簡単な説明です

id(L2)これは、割り当ての前後に印刷することで確認できます

に変更した場合

L2.append(4)

それなら確かに変わるだろうLista2

于 2015-01-06T18:16:17.380 に答える
1

L2 = L2 + [4]このステートメントは新しい変数を作成します。

このステートメントをL2.extend([4])またはL2 += [4]に変更すると、次の値が変更さL2れます。[2, 3, 4]

課題前後idの印刷。L2

>>> L2 = [1,2,3]
>>> id(L2)
3072769420L    # ID of L2 
>>> L2 += [4]
>>> id(L2)
3072769420L    # Same ID of L2
>>> L2
[1, 2, 3, 4]
>>> L2 = L2+[5]
>>> id(L2)
142773548      # New variable which name  is L2
于 2015-01-06T18:19:58.950 に答える