Python基礎——append、count、extend、index、insert、pop、remove、reverse、sort、clear、copy
在Python中對於列表(list)的操作有很多的方法,它們是與物件密切相關的一些函式,物件的形式可以是:列表,數字,字串,或其他型別。現對一些常用方法進行總結:
方法的呼叫格式: 物件.方法(引數)
1. append
功能:在列表的末尾新增新的物件。
呼叫格式:list.sppend(obj)
示例:
#-----------------------------------------------------
>>> tring = [1,2,3,4]
>>> tring.append('test')
>>>tring
[1,2,3,4,'test']
#-----------------------------------------------------
2. count
功能:用於統計某個元素在列表中出現的次數。
呼叫格式:list.count(obj)
示例:
#----------------------------------------------------
>>> field = list('hello,world')
>>> field
['h', 'e', 'l', 'l', 'o', ',', 'w', 'o', 'r', 'l', 'd']
>>> print(field.count('l')
3
>>> mix = [[1,3],1,3,5,7,[1,3],9]
>>> print(mix.count([1,3])
2
#----------------------------------------------------
3. extend
功能:用於在列表的末尾一次性新增另一個序列中的多個值(序列擴充套件)。
呼叫格式:list.extend(obj)
示例:
#---------------------------------------------------
>>> a = ['hello','world']
>>> b = ['python','is','funny']
>>> a.extend(b)
>>> a
['hello','world','python','is','funny']
#-----------------------------------------------------
除了extend方法外,我們還可以採用序列相加、切片賦值等方法進行列表擴充套件,如:
#-----------------------------------------------------
>>> a = ['hello','world']
>>> b = ['python','is','funny']
>>> a + b
['hello','world','python','is','funny']
>>> a
['hello','world']
#------------------------------------------------------
>>> a = ['hello','world']
>>> b = ['python','is','funny']
>>> a[len(a) : ] = b
>>> a
['hello','world','python','is','funny']
#------------------------------------------------------
仔細觀察發現,上面3種方法中extend與切片賦值功能相同,但與序列相加存在一些區別:
extend()方法修改了被擴充套件的序列,如列表a,擴充套件前後a的內容發生了變化;而序列相加只是返回了一個全新列表,不會修改原始列表的變數,如列表a,原始列表沒有發生任何變化。
4. index
功能:用於從列表中找出某一個值第一個匹配項的索引位置。
呼叫格式:list.index(obj)
示例:
#------------------------------------------------------
>>> field =['hello','world','python','is','funny','hello']
>>> print(field.index('hello'))
0
>>> print(field.index('abc'))
ValueError: 'abc' is not in list
#------------------------------------------------------
說明:可以看到列表中雖然有2個‘hello’,但是隻返回了第一個匹配項的索引;另外對於不在列表中元素,利用index方法就會報錯。
5. insert
功能:用於將某一物件插入列表中。
呼叫格式:list.insert(index,obj)
示例:
#------------------------------------------------------------
>>> num = [1,2,3]
>>> num.insert(1,'hello,world')
[1,'hello,world',2,3]
#------------------------------------------------------------
>>>num = [1,2,3]
>>> num[1:1] =['hello,world']
>>>
num
[1, 'hello, world', 2, 3]
>>>num[1:1] =['hello','world']
>>>
num
[1, 'hello', 'world', 2, 3]
>>> num[1:1] = 'hello', 'world'
>>> num
[1, 'hello', 'world', 2, 3]
>>> num[1:1] = 'hello, world'
>>> num
[1, 'h', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd', 2, 3]
#-------------------------------------------------------------
說明:利用切片賦值和insert方法可以獲得同樣的效果,但是insert操作更方便。
注意:insert方法有兩個引數,除了操作的obj外,還需指定需插入的索引位置。
6. pop
功能:用於移除列表中的一個元素(預設為最後一個,但可指定位置),並返回該元素的值。
呼叫格式:list.pop(obj)
示例:
#------------------------------------------------------------------
>>> field =['hello','world','python','is','funny']
>>>
field.pop() #預設
'funny'
>>> filed
['hello','world','python','is']
#------------------------------------------------------------------
>>>
field = ['hello','world','python','is','funny']
>>>
field.pop(2) #指定索引
'python'
>>>
filed
['hello','world','is','funny']
#------------------------------------------------------------------
說明:pop方法是唯一一個既能修改列表,又能返回元素值(除了None)的列表方法。
pop方法類似資料結構中的出棧,棧原理講究的是最後放入的最先移出,稱之為LIFO,即後進先出。
Python中沒有入棧操作,但可以利用append方法來替代,因此append和pop方法聯合使用,可實現入棧出棧操作。
示例:
#-----------------------------------------------------------------
>>>field
= ['hello','world','python','is','funny']
>>>
field.append(field.pop()) #先彈出再加入
>>> field
['hello',
'world', 'python', 'is', 'funny']
#------------------------------------------------------------------
7. remove
功能:用於移除列表中某一值的第一個匹配項。
呼叫格式:list.remove(obj)
示例:
#--------------------------------------------------------------------
>>>
field = ['hello','world','python','is','funny','hello']
>>> field.remove('hello')
>>> field
['world', 'python', 'is', 'funny', 'hello']
#--------------------------------------------------------------------
>>>
field = ['hello','world','python','is','funny','hello']
>>> field.remove('abc')
>>> field
ValueError: list.remove(x): x not in list
#----------------------------------------------------------------------
另外,對於刪除列表中不存在的元素,呼叫remove方法就會報錯。
8. reverse
功能:用於將列表中元素進行反向操作。
呼叫格式:list.reverse()
示例:
#------------------------------------------------------------
>>> num = [1,2,3,4,5]
>>> num.reverse()
>>> num
[5,4,3,2,1]
#---------------------------------------------------------------
當需要對一個序列進行反向迭代時,可呼叫reversed方法,但其並不返回列表,而是一個迭代器(Iterator),可通過list操作,將其轉換為列表物件,如:
#------------------------------------------------------------
>>> num = [1,2,3,4,5]
>>> list(reversed(num))
[5, 4, 3, 2, 1]
#------------------------------------------------------------
9. sort
功能:用於對原始序列進行排序操作,預設為升序;當然還可以指定引數,實現指定方法的排序操作。
呼叫格式:list.sort(func)
示例:
#------------------------------------------------------------
>>> num = [5,8,1,4,2,7,3]
>>> num.sort() #預設
>>> num
[1, 2,
3, 4, 5, 7, 8]
#------------------------------------------------------------
根據上面的操作可以發現,進過sort方法後,原序列發生了改變;但如果我們想對原始序列sort操作的同時,又要保留原始序列形式不變,也許你會採用如下2種方法:
#-----------------------------------------------------------
>>> num = [5,8,1,4,2,7,3]
>>> n = num.sort() #預設
>>> n
None
>>> num
[1, 2, 3, 4, 5, 7, 8]
#-------------------------------------------------------------
>>> num = [5,8,1,4,2,7,3]
>>> n = num
>>> n.sort()
>>> n
[1, 2, 3, 4, 5, 7, 8]
>>> num
[1, 2, 3, 4, 5, 7, 8]
#------------------------------------------------------------
#------------------------------------------------------------
>>> num = [5,8,1,4,2,7,3]
>>> n = num[ : ]
>>> n.sort()
>>> n
[1, 2, 3, 4, 5, 7, 8]
>>> num
[5,
8, 1, 4, 2, 7, 3]
#------------------------------------------------------------
另外,和reverse操作類似,我們還可以呼叫sorted方法進行排序操作。例如: