在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方法进行排序操作。例如:
#------------------------------------------------------------
>>> num = [5,8,1,4,2,7,3]
>>> n = sorted(num)
>>> n
[1, 2, 3, 4, 5, 7, 8]
>>> num
[5, 8, 1, 4, 2, 7, 3]
#-------------------------------------------------------------sorted函数可以适用于任何的序列,并且返回的结果都是一个列表。
除此之外,我们还可实现sort的高级排序,sort方法有2 个可选参数:key 和 reverse。
#------------------------------------------------------------------------------------------
>>> field = ['hello','world','python','is','funny']
>>> field.sort(key = len) #按字符串由短到长排序
>>> field
['is', 'hello', 'world', 'funny', 'python']
#------------------------------------------------------------------------------------------
>>> field =['hello','world','python','is','funny']
>>>field.sort(key = len, reverse = True) #按字符串由长到短排序
>>> field
['python', 'hello', 'world', 'funny', 'is']
#------------------------------------------------------------------------------------------
>>> num = [5,8,1,4,2,7,3]
>>>num.sort(reverse = True) #排序后再逆序
>>> num
[8, 7, 5, 4, 3, 2, 1]
10. clear
功能:用于清空列表,类似于 del list[ : ]。
调用格式:list.clear()
示例:
#-----------------------------------------------------------------------
>>> field = ['hello','world','python','is','funny']
>>> field.clear()
>>> field
[]
#----------------------------------------------------------------------
注:由于clear方法是清空整个列表元素,操作简单,但须慎用。
11. copy
功能:用于复制列表,类似于 list[ : ]。
调用格式:list.copy()
示例:
#--------------------------------------------------------------------
>>> y1 = ['hello','world','python','is','funny']
>>> y2 = y1.copy()
>>> y2
['hello', 'world', 'python', 'is', 'funny']
#--------------------------------------------------------------------