Pythonでリストを消去するときに、これらの2つの行より複雑な何かをする理由はありますか?リストをクリアするさまざまな方法
old_list = []
old_list = list()
私が尋ねる理由は、私はいくつかの実行中のコードでこれを見たということです。
場所にリストをクリアdel old_list[ 0:len(old_list) ]
Pythonでリストを消去するときに、これらの2つの行より複雑な何かをする理由はありますか?リストをクリアするさまざまな方法
old_list = []
old_list = list()
私が尋ねる理由は、私はいくつかの実行中のコードでこれを見たということです。
場所にリストをクリアdel old_list[ 0:len(old_list) ]
は同じリストの他のすべての参照に影響します。
例えば、この方法は、他の文献には影響しません:
>>> a = [1, 2, 3]
>>> b = a
>>> a = []
>>> print(a)
[]
>>> print(b)
[1, 2, 3]
をしかし、この1の処理が行われます。
>>> a = [1, 2, 3]
>>> b = a
>>> del a[:] # equivalent to del a[0:len(a)]
>>> print(a)
[]
>>> print(b)
[]
>>> a is b
True
あなたも行うことができます:
>>> a[:] = []
それが表示されます。デルはあなたに記憶を戻しますが、新しいリストを割り当てると古いものがgc runs.matterが実行されたときにのみ削除されます。
これは大きなリストには役立ちますが、小さなリストの場合は無視してください。
:Algoriasとしては関係ありません。
del old_list[ 0:len(old_list) ]
は、あなたがリストをクリアする可能性のある2例あり
del old_list[:]
と同等であることを
注:
old_list
さらにあなたのコードで。あなただけassigmentに行く:
old_list = [] # or whatever you want it to be equal to
ケース2ではdel
文はで名前をリストオブジェクトにold list
ポイントを参照カウントを減少させるであろう。リストオブジェクトの名前がold_list
atである場合、参照カウントは0になり、オブジェクトはガベージコレクションのために解放されます。
del old_list
非常に簡単な方法でpythonリストを削除できます。 del list_name [:]を使用してください。例えば
:
>>> a = [1, 2, 3]`
>>> b = a
>>> del a[:]
>>> print a, b
[] []
del list[:]
は、リストをクリアしている場合、そのリストの変数の値
del list
はメモリ
から変数自体を削除します削除します明らかにリストはもう必要ありません。その場合は、単純なdelメソッドでリスト全体を削除することができます。
a = [1, 3, 5, 6]
del a # This will entirely delete a(the list).
ただし、もう一度必要な場合は、再初期化することができます。それとも、単に
del a[:]
によって参照空のリストとして空のリストを作成することで正常に動作し、別のソリューションをその要素をクリアします。
empt_list = []
たとえば、a_list = [1,2,3]
というようなリストがあります。以下を行うだけで、それをクリアするには:
a_list = list(empt_list)
をこれはちょうどempt_list
ようa_list
空のリストを作成します。 Pythonでインプレースリストをクリアする
3.3+また、(例えばdict
、set
又はdeque
のような)他の可変コンテナのインタフェースと一致する、list.clear()
を使用することができます。
old_list.clear() # removes all items from old_list (same as del old_list[:])
なぜこれをやっていますか?ガベージコレクションが動作します。単純に古いリストの値を無視し、Pythonで自動的にそれをクリーンアップしてみましょう。 –
@ S.Lott:ポスターはコードを書いていないので、元の作家がなぜそうしたのかと尋ねています。 –
質問には関係ありませんが、スライスを指定するときはlenを使用しないでください。 'a [:x]'はxから始まることを意味し、 'a [x:]'は終了することを意味します。 'a [0:len(a)]'は 'a [:]'と書くことができます。最後から数えるためにネガを使うこともできます( 'a [-1]'が最後の要素です)。 – idbrii