python清空列表 Python 列表的清空方式

2021-10-11 03:24:03 字數 1999 閱讀 7849

情況列表的操作:

del list[:]

list=

list[:]=

def func(l):

print l

#l[:]=

#del l[:]

l =

print l

l=func(l)

print l

輸出結果:

[1][1]

其實函式的本意是將引數l指向的記憶體清空,用l=,並不能清空l指向的記憶體

def func(l):

print l

l[:]=

#del l[:]

#l =

print l

l=func(l)

print l

輸出結果:

[1]l[:]=:把l對應的記憶體清空

def func(l):

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):

print l

print id(l)

#l[:]=

#del l[:]

l =

print id(l)

print l

l=func(l)

print l

輸出結果:

很明顯:通過賦值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)

print list

輸出結果:

[[9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9]]

跟我們想要的結果不一致

我們整個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)

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]]

解決辦法,每次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)

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]]

python 清空列表的方法

1。大資料量的list,要進行區域性元素刪除,盡量避免用del隨機刪除,非常影響效能,如果刪除量很大,不如直接新建list,然後用下面的方法釋放清空舊list。2。對於一般性資料量超大的list,快速清空釋放記憶體,可直接用 a 來釋放。其中a為list。3。對於作為函式引數的list,用上面的方法...

python中如何清空陣列(列表)元素

python本身並沒有陣列型別,但是他的numpy庫中有陣列型別。通常情況下,python中的陣列指的是列表。第一種 示例 list 5 6,7 print list清空前 list 重新初始化列表 list print list清空後 list 第二種 使用clear 方法 clear 方法是用於...

python中如何清空陣列(列表)元素

python本身並沒有陣列型別,但是他的numpy庫中有陣列型別。通常情況下,python中的陣列指的是列表。第一種 示例 list 5 6,7 print list清空前 list 重新初始化列表 list print list清空後 list 第二種 使用clear 方法 clear 方法是用於...