a = [1,2,3,4,5]
b = a[1]
print id(a[1],b) # out put shows same id.hence both represent same object.
del a[1] # deleting a[1],both a[1],b have same id,hence both are aliases
print a # output: [1,3,4,5]
print b # output: 2
b、a [1]は両方とも同じIDを持っていますが、一方を削除してももう一方には影響しません。Pythonリファレンスには次のように記載されてい'del' on a subscription deletes the actual object,not the name object binding
ます。出力:[1,3,4,5]はこのステートメントを証明します。しかし、両方が同じIDa[0]
を持っている場合、「b」が影響を受けないままになる可能性はあります。b
編集:その部分'del' on a subscription deletes the actual object,not the name object binding
は真実ではありません。逆は真実です。'del'は、実際には名前、オブジェクトバインディングを削除します。サブスクリプションの' del'の場合(例:del a [1])、リストオブジェクトからオブジェクト2を削除し、代わりに現在のa[1]
バインディングを削除し2
てa[1]
バインドし3
ます。後続のインデックスはパターンに従います。