1. 程式人生 > >Python基礎——append、count、extend、index、insert、pop、remove、reverse、sort、clear、copy

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刪除的是刪除物件的第一個匹配的索引位置。

另外,對於刪除列表中不存在的元素,呼叫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方法進行排序操作。例如: