python清除列表内容_Python 列表的清空方式
情況列表的操作:
del list[:]
list=[]
list[:]=[]
def func(L):
L.append(1)
print L
#L[:]=[]
#del L[:]
L = []
print L
L=[]
func(L)
print L
輸出結(jié)果:
[1]
[]
[1]
分析:L是可變數(shù)據(jù)類(lèi)型,L作為參數(shù),函數(shù)內(nèi)對(duì)L的改變,是可以反映到函數(shù)外的L中的,執(zhí)行L.append(1),是在操作,函數(shù)外L所占據(jù)的那塊內(nèi)存,然后執(zhí)行L =[],(函數(shù)內(nèi)的L),想當(dāng)于L指向了另外一個(gè)空間。所以,func(L),print L,輸出[1]。
其實(shí)函數(shù)的本意是將參數(shù)L指向的內(nèi)存清空,用L=[],并不能清空L指向的內(nèi)存
def func(L):
L.append(1)
print L
L[:]=[]
#del L[:]
#L = []
print L
L=[]
func(L)
print L
輸出結(jié)果:
[1]
[]
[]
L[:]=[]:把L對(duì)應(yīng)的內(nèi)存清空
def func(L):
L.append(1)
print L
#L[:]=[]
del L[:]
#L = []
print L
L=[]
func(L)
print L
分析:
del L[:] 的效果跟L[:]=[]的效果是一樣的。
python 賦值,往往是通過(guò)指針完成的,a=b,只是讓a指向了b,并未把b的內(nèi)容拷貝到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
輸出結(jié)果:
31460240
31460168
很明顯:通過(guò)賦值L=[]后,L指向的內(nèi)存完全不一致了。
類(lèi)似于c++的引用賦值。
Python 賦值都是引用賦值,相當(dāng)于使用指針來(lái)實(shí)現(xiàn)的另一個(gè)例證
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
輸出結(jié)果:
[[9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9]]
跟我們想要的結(jié)果不一致
list.append(next),僅僅是把next的地址放到list 里面
我們整個(gè)for 循環(huán)就使用了一個(gè)next,只是每次for循環(huán),都在初始的next上進(jìn)行操作,本次的操作會(huì)覆蓋上次的結(jié)果
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])
輸出結(jié)果:
[[9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9]]
36166472
36166472
解決辦法,每次for 循環(huán)都重新分配空間
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])
輸出結(jié)果:
[[0, 0], [1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7], [8, 8], [9, 9]]
15060360
15059712
以上這篇Python 列表的清空方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
總結(jié)
以上是生活随笔為你收集整理的python清除列表内容_Python 列表的清空方式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 局域网lan设置_4G工业路由器的WAN
- 下一篇: python网站攻击脚本_Python