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リストのクリア方法は、小編集が皆さんに提供した内容の全てです。参考にしていただければと思います。よろしくお願いします。