91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python 列表的清空方式

發布時間:2020-09-17 23:09:27 來源:腳本之家 閱讀:148 作者:BYR_jiandong 欄目:開發技術

情況列表的操作:

del list[:]

list=[]

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.append(1),是在操作,函數外L所占據的那塊內存,然后執行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], [9, 9], [9, 9], [9, 9]]

跟我們想要的結果不一致

list.append(next),僅僅是把next的地址放到list 里面

我們整個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], [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]]

15060360

15059712

以上這篇Python 列表的清空方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

博野县| 重庆市| 寿阳县| 修武县| 东明县| 康保县| 安多县| 怀宁县| 夹江县| 伊宁县| 凤阳县| 常德市| 托里县| 锦州市| 开封县| 洞口县| 武威市| 深泽县| 赤峰市| 武宁县| 博兴县| 龙游县| 青阳县| 柳河县| 讷河市| 中超| 岑巩县| 武穴市| 东乡县| 江阴市| 通化县| 峨眉山市| 苏尼特右旗| 栖霞市| 保德县| 工布江达县| 正镶白旗| 苗栗县| 永善县| 广丰县| 嘉义市|