方法是与对象密切关系的函数。对象可以是序列、字符串、数字或者是其他类型的对象。方法进行调用的方法:
对象.方法(参数)
对象至于方法之前,并用点号隔开,方法调用类似于函数调用。
1. append
>>> num=[1,2,3]
>>> num.append(4)
>>>num
[1,2,3,4]
>>> num.append([5,6])
>>> num
[1,2,3,4,[5,6]]
>>> num.append('python')
>>> num
[1,2,3,4,[5,6],'python']
>>> num.append(7,8)
Traceback (most recent call last):
File "<pyshell#9>",line 1,in<module>
num.append(7,8)
TypeError:append() takes exactly one argument(2given)
>>>
append方法用于在列表末尾添加新的元素,只接受一个参数,参数可为数字、字符串、列表。num.append([5,6])中,序列[5,6]当作num序列一个元素,结果显示正确,num.append(7,8)中,7和8是两个元素,结果显示错误。
注意:append方法即不是简单的返回一个新列表,而是直接修改原来的列表。
2. count
>>> x=list('pythonpython')
>>> x.count('p')
2
>>> x=[[1,2],1,1,[1,2,[1,2]]]
>>> x.count(1)
2
>>> x.count([1,2])
1
>>> x.count(2)
0
>>>
count方法统计某个元素在列表出现的次数,方法参数为列表的一个元素。
以上面第二个例子剖析一下,x=[[1,2],1,1,[1,2,[1,2]]],x有4个元素依次为[1,2],1,1,和[1,2,[1,2]]。如此看来x.count(1)的结果不是5而应该是2,因为[1,2]是x的元素,而序列[1,2]中的1是序列[1,2]的元素而不是x的元素。一次类推,大家应该理解x.count(2)结果为0的原因了。
3. extend
两个列表元素为同类型:
>>> a=[1,2,3]
>>> b=[4,5,6]
>>> a.extend(b)
>>> a
[1,2,3,4,5,6]
>>> b
[4,5,6]
>>> a.extend([7,8])
>>> a
[1,2,3,4,5,6,7,8]
>>> c=[9,10,11]
>>> a.extend(c[0:2])
>>> a
[1,2,3,4,5,6,7,8,9,10]
>>>
两个列表元素为不同类型:
>>> a=[1,2,3]
>>> b=['w','a','n']
>>> a.extend(b)
>>> a
[1,2,3,'w','a','n']
>>> a.extend(['g','c','u'])
>>> a
[1,2,3,'w','a','n','g','c','u']
>>>
连接操作:
>>> a=[1,2,3]
>>> b=[4,5,6]
>>> a+b
[1,2,3,4,5,6]
>>> a
[1,2,3]
>>> b
[4,5,6]
>>>
extend方法可以在一个列表后面一次性追加另一个序列的多个值,即可以用新的列表更新原有列表,方法参数为一个列表,该参数列表的元素可以为数字、字符类型。
注意:extend方法与连接操作看起来很像,但是两者的区别主要是extend方法修改了被修改的列表。
4. index
>>> name=['wang','cui','zhang','li','wang']
>>> name.index('wang')
0
>>> name.index('cui')
1
>>> name.index('li')
3
>>> name.index('zhao')
Traceback (most recent call last):
File "<pyshell#37>",line 1,in <module>
name.index('zhao')
ValueError: list.index(x): x not in list
>>>
index方法可从列表中找出某个第一个匹配的索引位置,参数为列表的一个元素。虽然列表中有两个‘wang’元素,但index方法只返回第一个‘wang’元素的索引号。若参数不为列表的元素,结果报错。
5. insert
>>> num=[1,2,3,4]
>>> num.insert(2,'python')
>>> num
[1,2,'python',3,4]
>>> num.insert(2,[5,6])
>>> num
[1,2,[5,6],'python',3,4]
>>> num.insert(0,0)
>>> num
[0,1,2,[5,6],'python',3,4]
>>>
insert方法将对象插入列表中,参数为(索引,对象),对象可为数字、字符串、列表等。
6. pop
>>> num=[1,2,3]
>>> num.pop()
3
>>> num
[1,2]
>>> num.pop(0)
1
>>> num
[2]
>>>
pop方法会移除列表中一个元素,参数为空时,默认移除最后一个元素,并返回该元素的值。参数为索引时,默认移除索引号的元素,并返回该元素的值。
注意:pop方法是唯一一个能修改列表又可以返回值的列表方法。
补充:
数据结构中入栈(push)和出栈(pop),python 没有入栈,但是可用append方法替代。
LIFO即后进早出:
>>> num=[]
>>> num.append(1)
>>> num
[1]
>>> num.append(2)
>>> num
[1,2]
>>> num.append(3)
>>> num
[1,2,3]
>>> num.pop()
>>> num
[1,2]
>>> num.pop()
>>> num
[1]
>>>
FIFO先进先出:可用insert(0,对象)来替代append方法。
>>> num=[]
>>> num.insert(0,1)
>>> num
[1]
>>> num.insert(0,2)
>>> num
[2,1]
>>> num.pop(1)
>>> num
[2]
>>> num.pop(0)
>>> num
[]
>>>
7. remove
>>> num=[1,2,3,4]
>>> num.remove(1)
>>> num
[2,3,4]
>>> name=['w','a','n','w']
>>> name.remove('w')
>>> name
['a','n','w']
>>>
remove方法移除列表中某个值的一个匹配项,没有返回值。参数为一个元素,可为数字、字符串、字符。若参数不是列表的元素,结果报错。
注意:只移除第一次出现的值。
8. reverse
>>> num=[1,2,3]
>>> num.reverse()
>>> num
[3,2,1]
>>>
reverse方法将列表中的元素反向存放,返回值为空,参数为空,默认为整个对象。
9. sort
>>> num=[2,1,4,3,5]
>>> num.sort()
>>> num
[1,2,3,4,5]
>>>
sort方法在原位置对列表进行排序,返回值为空,参数为空。
不改变原列表,将排序好的序列给另一个变量:
1.sort 方法修改了a,但是返回的是空值。
>>> a=[2,1,4,3,5]
>>> b=a.sort()
>>> print b
None
2.简单的把a赋值给b,a与b只想同一个列表,b使用sort方法后,使得a指向的列表也变了。
>>> a=[2,1,4,3,5]
>>> b=a
>>> b.sort()
>>> b
[1,2,3,4,5]
>>> a
[1,2,3,4,5]
>>>
3.将a的副本给b,然后在用sort方法,并未影响原列表。
>>> a=[2,1,4,3,5]
>>> b=a[:]
>>> b.sort()
>>> b
[1,2,3,4,5]
>>> a
[2,1,4,3,5]
>>>
4.使用sorted函数获得已排序列表的副本。
>>> a=[2,1,4,3,5]
>>> b=sorted(a)
>>> b
[1,2,3,4,5]
>>> a
[2,1,4,3,5]
>>>
>>> sorted('wei')
['w','e','i']
>>>
10.高级排序
>>> cmp(1,2)
-1
>>> cmp(2,1)
1
>>> cmp(0,0)
0
>>> num=[2,1,4,3,5]
>>> num.sort(cmp)
>>> num
[1,2,3,4,5]
>>> num.sort(reverse=True)
>>> num
[5,4,3,2,1]
>>> num.sort(reverse=False)
>>> num
[1,2,3,4,5]
>>> name=['wang','wei','na']
>>> name.sort(key=len)
>>> name
['na','wei','wang']
>>>
compare(x,y)函数,在 x < y时返回负数,x>y时返回正数,x=y时返回0。python的默认排序规则为升序排序。
sort 方法有三种参数:
(1)对象.sort(函数)
如num.sort(cmp),即排序过程中使用cmp函数。
(2)对象.sort(key=函数)
如name.sort(key=len),即根据元素长度排序。
(3)对象.sort(reverse=True),或 对象.sort(reverse=False)
关键字参数reverse是布尔值,用来指明序列是否进行反向排序。
python3.0以上没有cmp函数,被operator模块代替