Pythonリストのクリア方法
状況リストの操作:
del list[:]
リスト=[]
リスト[:]=[]
[1]
[]
[1]
解析:Lは可変データタイプで、Lはパラメータとして、関数内のLに対する変化は関数外のLに反映されます。L.apped(1)を実行します。操作で、関数外Lが占有するブロックメモリを実行して、L=[](関数内のL)を実行します。したがって、func(L)、print Lは、[1]を出力します。
関数の本来の意味は、パラメータLが指すメモリをクリアし、L=[]を使って、Lが指すメモリをクリアすることができません。
del L[:]の効果はL[:]=[]の効果と同じです。
pythonは値を割り当てて、よく指針を通じて(通って)完成したので、a=b、aだけをbを指して、bの内容をaまでコピーしていません。
31460240
31460168
L=[]を付与することにより、Lが指すメモリが完全に一致しなくなりました。
c+++と同様の参照割当値です。
Pythonの割当値はすべて参照値であり、ポインタを使用して実現される別の例に相当する。
[[9,9],[9,9],[9,9],[9,9],[9,9],[9,9],[9,9]
私たちが欲しい結果とは違っています。
list.apped(next)は、nextのアドレスをリストに入れるだけです。
私たちは全体のfor循環でnextを使いました。for循環のたびに、最初のnextで操作します。今回の操作は前回の結果をカバーします。
[[9,9],[9,9],[9,9],[9,9],[9,9],[9,9],[9,9]
36166472
36166472
解決方法は毎回forサイクルごとに空間を再分配します。
[0,0],[1,1],[2,2],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9]]
1560360
1559712
以上のPythonリストのクリア方法は、小編集が皆さんに提供した内容の全てです。参考にしていただければと思います。よろしくお願いします。
del list[:]
リスト=[]
リスト[:]=[]
def func(L):
L.append(1)
print L
#L[:]=[]
#del L[:]
L = []
print L
L=[]
func(L)
print L
出力結果:[1]
[]
[1]
解析:Lは可変データタイプで、Lはパラメータとして、関数内のLに対する変化は関数外のLに反映されます。L.apped(1)を実行します。操作で、関数外Lが占有するブロックメモリを実行して、L=[](関数内のL)を実行します。したがって、func(L)、print Lは、[1]を出力します。
関数の本来の意味は、パラメータLが指すメモリをクリアし、L=[]を使って、Lが指すメモリをクリアすることができません。
def func(L):
L.append(1)
print L
L[:]=[]
#del L[:]
#L = []
print L
L=[]
func(L)
print L
出力結果:
[1]
[]
[]
L[:]=[]:Lに対応するメモリをクリアします。
def func(L):
L.append(1)
print L
#L[:]=[]
del L[:]
#L = []
print L
L=[]
func(L)
print L
分析:del L[:]の効果はL[:]=[]の効果と同じです。
pythonは値を割り当てて、よく指針を通じて(通って)完成したので、a=b、aだけをbを指して、bの内容をaまでコピーしていません。
def func(L):
L.append(1)
print L
print id(L)
#L[:]=[]
#del L[:]
L = []
print id(L)
print L
L=[]
func(L)
print L
出力結果:31460240
31460168
L=[]を付与することにより、Lが指すメモリが完全に一致しなくなりました。
c+++と同様の参照割当値です。
Pythonの割当値はすべて参照値であり、ポインタを使用して実現される別の例に相当する。
list =[]
next = [None,None]
for i in range(10):
next[0] = i
#print id(i)
#print id(next[0])
next[1] = i
#print id(next)
list.append(next)
print list
出力結果:[[9,9],[9,9],[9,9],[9,9],[9,9],[9,9],[9,9]
私たちが欲しい結果とは違っています。
list.apped(next)は、nextのアドレスをリストに入れるだけです。
私たちは全体のfor循環でnextを使いました。for循環のたびに、最初のnextで操作します。今回の操作は前回の結果をカバーします。
list =[]
next = [None,None]
for i in range(10):
next[0] = i
#print id(i)
#print id(next[0])
next[1] = i
#print id(next)
list.append(next)
print list
print id(list[0])
print id(list[1])
出力結果:[[9,9],[9,9],[9,9],[9,9],[9,9],[9,9],[9,9]
36166472
36166472
解決方法は毎回forサイクルごとに空間を再分配します。
list =[]
for i in range(10):
next = [None,None]
next[0] = i
#print id(i)
#print id(next[0])
next[1] = i
#print id(next)
list.append(next)
print list
print id(list[0])
print id(list[1])
出力結果:[0,0],[1,1],[2,2],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9]]
1560360
1559712
以上のPythonリストのクリア方法は、小編集が皆さんに提供した内容の全てです。参考にしていただければと思います。よろしくお願いします。