列表(List)

初始化列表

lst = list()    # 初始化一个空列表
lst = []    # 也是初始化一个空列表
lst = [1, 2, 3]    # 初始化3个元素

下标、索引操作

python中list的索引,从前往后,从0开始。负数索引表示从后往前,由-1开始,-1表示最后一个元素。
如果索引超出范围,将会引发IndexError异常。
更改列表中元素的值,采用 lst[index] = new_value ,索引可用正数也可用负数,但是不能超出范围,否则也会抛出IndexErroe异常。

list示例

>>> lst = [1, 2, 3]
>>> lst [0]    # 索引0的值
1
>>> lst [1]    # 索引1的值
2
>>> lst [-1]    # 索引-1,即最后一个值
3
>>> lst [-2]    
2
>>> lst [3]    # 索引超出范围引发IndexErroe
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-64-29bf37ff8133> in <module>()
----> 1 lst [3]

IndexError: list index out of range

>>> lst[0] = 5    # 把索引为0的值更改为5
>>> lst
[5, 2, 3]
>>> lst[-1] = 10    # 更改最后一个索引的值为10
>>> lst
[5, 2, 10]
>>> lst[-4] = 12    # 超出索引范围,引发错误
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-70-8f011d505efa> in <module>()
----> 1 lst[-4] = 12

IndexError: list assignment index out of range

给 List 增加元素

append

在列最后增加一个对象,返回值为None

help(lst.append)

示例

>>> lst
[5, 2, 10]
>>> lst.append(12)
>>> lst
[5, 2, 10, 12]

insert

insert 操作的索引超出范围,若果是正索引,等效于append。如果是负索引,等效于insert(0, boject)
在索引之前插入对象

help(lst.insert)

示例

>>> lst
[5, 2, 10, 12]
>>> lst.insert(0, 7)    # 在索引0之前插入7
>>> lst
[7, 5, 2, 10, 12]
>>> lst.insert(3, 0)    # 在索引3之前插入0
>>> lst
[7, 5, 2, 0, 10, 12]
>>> lst.insert(7, 13)    # 超出范围,索引为正,等效于append
>>> lst
[7, 5, 2, 0, 10, 12, 13]
>>> lst.insert(100, 76)
>>> lst
[7, 5, 2, 0, 10, 12, 13, 76]
>>> lst.insert(-9, 8)    # 超出范围,索引为负,等效于insert(0, object)
>>> lst
[8, 7, 5, 2, 0, 10, 12, 13, 76]

extend

通过添加一个可迭代对象(迭代器)中的元素来扩展列表

help(lst.extend)

示例

>>> lst
[8, 7, 5, 2, 0, 10, 12, 13, 76]
>>> lst.extend([1, 2, 3])
>>> lst
[8, 7, 5, 2, 0, 10, 12, 13, 76, 1, 2, 3]

>>> lst1 = [1, 2, 3]
>>> lst2 = [4, 5, 6]
>>> lst1.extend(lst2)    # lst2是一个可迭代对象(iterable),可给lst1做扩展
>>> lst1
[1, 2, 3, 4, 5, 6]
>>> tuple1 = ('a', 'b', 'c')
>>> tuple1
('a', 'b', 'c')
>>> lst2.extend(tuple1)    # tuple1是一个可迭代对象,可给lst2做扩展
>>> lst2
[4, 5, 6, 'a', 'b', 'c']

删除元素

pop

删除并返回索引所在的元素(默认删除最后一个 -1),如果指数超出索引范围,会抛出IndexError异常

help(lst.pop)

示例

>>> lst
[1, 2, 3, 4, 5, 6]
>>> lst.pop()    # 不填索引号,默认删除最后一个
6
>>> lst
[1, 2, 3, 4, 5]
>>> lst.pop(0)    # 删除索引为0的元素
[2, 3, 4, 5]
>>> lst.pop(100)    # 超出索引范围
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-109-795b88347eea> in <module>()
----> 1 lst.pop(100)

IndexError: pop index out of range
    
>>> lst.pop(-1)
[2, 3, 4]
>>> lst.pop(-100)
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-55-d93c61a62a8e> in <module>()
----> 1 lst.pop(-100)

IndexError: pop index out of range

remove

删除第一次发现的值,如果值不存在则抛出 IndexError。
pop 是弹出索引对应的值,remove是删除最左边的一个值, pop 针对的是索引 remove针对的是值

help(lst.remove)

示例

>>> lst
[1, 2, 3, 1, 2, 3]
>>> lst.remove(1)    # 删除第一次查找到的1,并没有删除第二个1
[2, 3, 1, 2, 3]
>>> lst.remove(5)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-12-29e61bbce0d4> in <module>()
----> 1 lst.remove(5)

ValueError: list.remove(x): x not in list

clear

清空列表,删除所有元素

help(lst.clear)

示例

>>> lst = [1, 2, 3]
>>> lst
[1, 2, 3]
>>> lst.clear()
>>> lst
[]

查找/统计元素

index

查找某值的第一个索引,可以指定索引开始和结束位置。(start 包含,stop不包含)
如果值没有找到,会抛出IndexError异常

help(lst.index)

示例

>>> lst = ['a', 'b', 'c', 'd', 'b']
>>> lst
['a', 'b', 'c', 'd', 'b']
>>> lst.index('b')    # 查找'b'第一次出现的索引位置
>>> 1
>>> lst.index('b', 2)    # 从索引2开始查找,找到第一次出现'b'的位置
>>> 4
>>> lst.index('x')
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-31-616584d1b884> in <module>()
----> 1 lst.index('x')    # 没有值为'x'的索引

ValueError: 'x' is not in list

>>> lst.index('b', 2, 4)    # 索引2-4之间,没有索引值为'b'
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-32-fa3eb33afd79> in <module>()
----> 1 lst.index('b', 2, 4)

ValueError: 'b' is not in list

>>> lst.index('b', 2, 5)
>>> 4

count

计数,返回值出现的次数

help(lst.count)

示例

>>> lst
['a', 'b', 'c', 'd', 'b']
>>> lst.count('b')
2

len

len函数可以用在列表,元组,字符串,字典,集合等上面,输出容器中元素的个数

help(len)

示例

>>> lst
['a', 'b', 'c', 'd', 'b']
>>> len(lst)
5

修改列表

sort

原地排序。有两个参数:一个是键,表示排序用的函数,默认为无。一个是反向(反向,降序排序),默认是假

help(lst.sort)

示例

>>> lst
['a', 'b', 'c', 'd', 'b']
>>> lst.sort()
>>> lst
['a', 'b', 'b', 'c', 'd']
>>> lst.sort(reverse=True)
>>> lst
['d', 'c', 'b', 'b', 'a']

reverse

原地反转

help(lst.reverse)

示例

>>> lst
['d', 'c', 'b', 'b', 'a']
>>> lst.reverse()
>>> lst
['a', 'b', 'b', 'c', 'd']

其他

copy

采用赋值方法创建新列表,是指向原来列表的那块内存,当进行更改的时候,新老列表一起改变

正常情况赋值

>>> lst
['a', 'b', 'b', 'c', 'd']
>>> lst = [1, 2, 3, 4, 5, 6]
>>> lst1 = lst
>>> lst1.remove(2)
>>> lst1
[1, 3, 4, 5, 6]
>>> lst
[1, 3, 4, 5, 6]

采用copy方法,就是复制出一块相同的内存(影子复制),新旧列表互不影响

示例

>>> lst
[1, 3, 4, 5, 6]
>>> lst1 = lst.copy()
>>> lst1.remove(3)
>>> lst1
[1, 4, 5, 6]
>>> lst
[1, 3, 4, 5, 6]
>>> id(lst)
139736837587272
>>> id(lst1)
139736837988424
posted @ 2020-11-22 21:22  一墨无辰  阅读(471)  评论(0)    收藏  举报