python列表方法

方法是一个与某些对象有紧密联系的函数,对象可能是列表,数字,也可能是字符串或者其他类型的对象。一般来说,方法可以这样进行调用:对象.方法(参数)


列表提供了几个方法,用于检查或者修改其中的内容。


1.append

append用于在列表末尾追加新的对象:

>>>list=[1,2,3]
>>>list.append(4)
>>>list
[1,2,3,4]

append方法和其他一些方法类似,只是在恰当位置修改原来的列表。这意味着它不是简单地返回一个修改过的列表——而是直接修改原来的列表。

2.count

count方法用来统计某个元素在列表中出现的次数:

>>>['to','be','or','not','to','be'].count('to')
2
>>>x=[[1,2],1,1,[2,1,[1,2]]]
>>>x.count(1)
2
>>>x.count([1,2])
1

3.extend

extend方法可以在列表的末尾一次性追加另一个序列中的多个值。换句话说,可以用新列表扩展原有的列表:

>>>a=[1,2,3]
>>>b=[4,5,6]
>>>a.extend(b)
>>>a
[1,2,3,4,5,6]

这个操作看起来很像连接操作,两者最主要的区别是:extend方法修改了被扩展的序列。而原始的连接操作会返回一个全新的列表:

>>>a=[1,2,3]
>>>b=[4,5,6]
>>>a+b
[1,2,3,4,5,6]
>>>a
[1,2,3]

如果想让a被改变,可以这样,可是这样的效率比extend低很多:

>>>a=[1,2,3]
>>>b=[4,5,6]
>>>a=a+b
>>>a
[1,2,3,4,5,6]

我们还可以通过分片赋值来实现相同的结果:

>>>a=[1,2,3]
>>>b=[4,5,6]
>>>a[len(a):]=b
>>>a
[1,2,3,4,5,6]

4.index

index方法用于从列表中找出某个值第一个匹配项的索引位置:

>>> string=['we','are','the','knights','who','say','ni']
>>> string.index('who')
4
>>> string.index('hello')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 'hello' is not in list
>>> string[4]
'who'

5.insert

insert方法用于将对象插入到列表中:

>>> numbers=[1,2,3,5,6,7]
>>> numbers.insert(3,'four')
>>> numbers
[1, 2, 3, 'four', 5, 6, 7]

与extend方法一样,insert方法的操作也可以用分片赋值来实现。

>>> numbers=[1,2,3,5,6,7]
>>> numbers[3:3]=['four']
>>> numbers
[1, 2, 3, 'four', 5, 6, 7]
它的可读性不如insert方法。


6.pop

pop方法会一出列表中的一个元素(默认是最后一个),并且返回该元素的值

>>> x=[1,2,3]
>>> x.pop()
3
>>> x
[1, 2]
>>> x.pop(0)
1
>>> x
[2]

pop方法是唯一一个既能修改列表又返回元素值(除了None)的列表方法

7.remove

remove方法用于移除列表中的某个值的第一个匹配项:

>>> x=['to','be','or','not','to','be']
>>> x.remove('be')
>>> x
['to', 'or', 'not', 'to', 'be']
>>> x.remove('bee')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list

可以看到:只有第一次出现的值被移除了,而不存在于列表中的值是不会移除的。


8.reverse

reverse方法将列表中的元素反向存放

>>> x=[1,2,3]
>>> x.reverse()
>>> x
[3, 2, 1]

9.sort

sort方法用于在原位置对列表进行排序,在“原位置排序“意味着改变原来的列表,从而让其他的元素能按一定的顺序排列,而不是简单地返回一个已排序的的列表副本

>>> x=[4,6,2,1,7,9]
>>> x.sort()
>>> x
[1, 2, 4, 6, 7, 9]

前面介绍过了几个改变列表却不返回值的方法,在大多数情况下这样的行为方式是很合常理的(例如append方法)。但是sort方法的这种行为方式需要重点讲解一下,因为很多人都被sort方法弄糊涂了。当用户需要一个排好序的列表副本,同时又保留原有序列不变的时候,问题就出现了,我们会想到这种方法:

>>> x=[4,6,2,1,7,9]
>>> y=x.sort()
>>> print y
  File "<stdin>", line 1
    print y
          ^
SyntaxError: Missing parentheses in call to 'print'

因为sort方法修改了x却返回了空值,那么最后得到的是已排序的x以及值为None的y。实现这个功能的正确方法是,首先把x的副本赋值给y,然后对y进行排序:

>>> x=[4,6,2,1,7,9]
>>> y=x[:]
>>> y.sort()
>>> x
[4, 6, 2, 1, 7, 9]
>>> y
[1, 2, 4, 6, 7, 9]

再次调用x[:]得到的是包含了x所有元素的分片,这是一种很有效率的复制整个列表的方法,只是简单地把x赋值给y是没用的,因为这样做就让x和y都指向同一个列表了。

>>> x=[4,6,2,1,7,9]
>>> y=x
>>> y.sort()
>>> x
[1, 2, 4, 6, 7, 9]
>>> y
[1, 2, 4, 6, 7, 9]

另一种获取已排序的列表副本的方法是使用sorted函数:

>>> x=[4,6,2,1,7,9]
>>> y=sorted(x)
>>> x
[4, 6, 2, 1, 7, 9]
>>> y
[1, 2, 4, 6, 7, 9]

这个函数实际上可以用于任何序列,却总是返回一个列表。sorted函数可以用于任何可迭代的对象

>>> sorted('python')
['h', 'n', 'o', 'p', 't', 'y']

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值