Python 序列之列表的操作方法

来源:互联网 发布:如何唱好一首歌 知乎 编辑:程序博客网 时间:2024/06/07 06:13

Python为列表提供几个方法,用于检查或者修改列表内容。

1.append方法,用于在列表末尾追加元素(只能在末尾追加一个元素)

>>> x=[1,2,3]>>> x.append(4)>>> x[1, 2, 3, 4]
2.count方法,用于统计某个元素在列表中出现的次数

>>> x=[1,2,[1,2],1]>>> x.count(1)2>>> x.count([1,2])1
>>> x.count(6)0

3.extend方法,用于在列表末尾一次性追加来一个序列(是序列不仅仅是列表哦)的多个值

>>> x=[1,2,[1,2],1]>>> y=1,2,3   #y是一个元组>>> z='abc'   #z是一个字符串>>> x.extend(y)>>> x[1, 2, [1, 2], 1, 1, 2, 3]>>> x.extend(z)>>> x[1, 2, [1, 2], 1, 1, 2, 3, 'a', 'b', 'c']
>>>x.extend(['hello'])    
>>> x
[1, 2, [1, 2], 1, 1, 2, 3, 'a', 'b', 'c', 'hello']

注意extend方法和列表的连接是不同的,两个列表x,y做连接并没有改变x,y本身的值

>>> x=[1,2,3]>>> y=list('abc')>>> y['a', 'b', 'c']>>> x+y     #序列x,y做了连接,但是没有改变x,y本身的值[1, 2, 3, 'a', 'b', 'c']>>> x[1, 2, 3]>>> y['a', 'b', 'c']
extend方法可以用分片赋值x[len(x):]=y来等价实现,不过在写代码过程中使用extend方法更易读。

4.index方法,用于从列表找出某个值第一次匹配的索引位置。如果列表中没有查找的元素将报错。

>>> x=list('abc')*3>>> x['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']>>> x.index('c')2>>> x.index('f')Traceback (most recent call last):  File "<stdin>", line 1, in <module>ValueError: 'f' is not in list
5.insert方法,用于将对象插入到列表中(一次只能插入一个元素)

>>> x['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']>>> x.insert(2,'insert')>>> x['a', 'b', 'insert', 'c', 'a', 'b', 'c', 'a', 'b', 'c']>>> x.insert(20,'insert')          #插入的下标大于最右边,则在列表末尾插入元素>>> x['a', 'b', 'insert', 'c', 'a', 'b', 'c', 'a', 'b', 'c', 'insert']>>> x.insert(-20,'hahah')          #插入的下标先于最左边,则在列表首位插入元素>>> x['hahah', 'a', 'b', 'insert', 'c', 'a', 'b', 'c', 'a', 'b', 'c', 'insert', 222]

insert方法同样可以用分片赋值x[20:20]=[对象]来实现,不过分片赋值可以实现一次插入多个值

6.pop方法,用于移除列表中某一个元素(默认移除最后一个),并且返回该元素的值

>>> x=list('abc')>>> x['a', 'b', 'c']>>> x.pop()'c'>>> x.pop(1)'b'>>> x.pop(4)    #不在列表范围,报错Traceback (most recent call last):  File "<stdin>", line 1, in <module>IndexError: pop index out of range>>> x.pop()'a'>>> x.pop()     #列表为空,报错Traceback (most recent call last):  File "<stdin>", line 1, in <module>IndexError: pop from empty list
pop方法是唯一一个既能修改列表有返回元素值(除了None)的列表方法。

问题:只通过以上几个方法,如何实现栈和队列?

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

>>> x=list('abc')*2>>> x['a', 'b', 'c', 'a', 'b', 'c']>>> x.remove('b')   #只有第一个b被移除了>>> x['a', 'c', 'a', 'b', 'c']>>> x.remove('f')     #remove不存在的元素报错Traceback (most recent call last):  File "<stdin>", line 1, in <module>ValueError: list.remove(x): x not in list
8.reserve方法,将列表中元素方向存放

>>> x=list('abcd')>>> x['a', 'b', 'c', 'd']>>> x.reverse()>>> x['d', 'c', 'b', 'a']
9.sort方法,对列表元素排序。(强调,该方法是修改的原序列,并且没有返回值)

>>> x=[7,3,4,6,2,5,1]>>> x.sort()>>> x[1, 2, 3, 4, 5, 6, 7]
问题:如何把元素由高到低的排序呢?

注:sort方法的参数单独分享。









原创粉丝点击