Python第二课:删除 del, remove(), clear()

del是Python语句,而不是列表方法。因此无法通过list.来调用。使用del可以删除一个元素,当元素删除之后,位于它后面的元素会自动移动填补空出来的位置。

list.remove(),list.clear(),与list.pop( )均为列表方法。

 

del使用场景:使用del删除指定位置元素

remove使用场景:使用remove()删除指定值,如果不确定或不关心元素在列表中的位置,可以使用remove()根据指定的值来删除元素。

pop使用场景:使用pop()获取并删除指定位置元素。使用pop()同样可以获取列表中指定位置的元素,但在获取完成之后,该元素会自动被删除。如果为pop(off)指定了偏移量,它会返回偏移量对应位置的元素。如果不指定,则默认使用-1(即默认删除末位元素)。因此pop(0)将返回头元素,而pop()或pop(-1)则会返回列表的尾元素。

a = ['a','b','c']
b = ['d','e','f']
# pop的命令,其有返回值,可赋值带出
c = a.pop() #默认删除-1位置元素'c',并将删除元素返回值赋值
d = b.pop(0) #删除0位元素'd',并将删除元素返回值赋值
print(a,b,c,d)
-----------------------------------------------------------------------------
['a', 'b'] ['e', 'f'] c d

 

 

1,list.remove(t),删除列表中值为t的第一个元素。若没有这个元素,则返回错误值。 

2,del方法中可删除的数据类型只有两类:

      A. 删除变量,而无法删除变量对应数据。

L = [1,2,3,4,5,6,7,8]
del L[0]
print(L)
-------------------------------------------------
[2, 3, 4, 5, 6, 7, 8]



'''
由上例可见,不可删除数组L中的第一个变量对应数值1,但可删除数组中下标为0的变量。
'''

 

      B. 直接删除整个数组的对应变量。

L = [1,2,3,4,5,6,7]
del L
print (L)
--------------------------------------------------
NameError: name 'L' is not defined

'''
此时报错,是由于L变量对应的数组已经被删除,L 失去了定义。标明del()方法直接删除数组变量
'''

记住,del删除的是变量,而非数据对象。由此,揭露Python的一大特性,由于python均为调用,且由于其特殊的回收机制,所以,del作用在变量上,而非数据上,其关联变量变量引用组中,当其中变量有变化时,不会影响链式结构后续变量定义,详见下例:

x = 11 #对象11被变量x引用,对象11的引用计数器为1
a = x  #对象11被变量a引用,对象11的引用计数器加1
b = a  #对象11被变量b引用,对象11的引用计数器加1
print(x) #此时变量x的引用输出下,看下结果
print(a) #此时变量a的引用输出下,看下结果
print(b)#此时变量b的引用输出下,看下结果
del x #删除变量x,解除x对1的引用
del a #删除变量a,解除a对1的引用
print(b) #最终变量b仍然引用1
--------------------------------------------------
11 #print(x)的结果
11 #print(x)的结果
11 #print(b)的结果
11 #删除变量x,a后,变量b的引用保持为1

注意:del数据很清楚强调,是删除变量而非数据对象,所以三种请款个,当del删除方法面对列表数据类型(Python中的中括号[]代表list列表数据类型,列表是一种可变序列)的变量x=['AA','BB','CC']时,无法删除'AA',但可以删除其下表对应为0的变量x[0];但当del面对字典数据类型(Python中的花括号{}代表dict字典数据类型,字典是Python中唯一内建的映射类型。字典中的值没有特殊的顺序,但都是存储在一个特定的键(key)下。键可以是数字、字符串甚至是元祖。):可以直接删除AA,因为此时AA即为变量名。

 

3. list.clear(),删除列表中所有对象

d={}
d['name'] = 'joy'
d['age'] = 23
print(d)
dc=d.clear()
print(d)
print(dc)
--------------------------------------------------------
{'name': 'joy', 'age': 23} #clear()方法作用于d前的输出
{} #clear()方法作用于d后的输出,此时d已经被clear清空了所有数据,此时d变量为空集
None #clear()清空d后将空集作为数值,赋予dc,此时的dc为空集代表变量,即为None

 

你可能感兴趣的:(Python)