1.列表List

作者: Stone_説 | 来源:发表于2020-12-09 00:13 被阅读0次

    目录
    0.列表介绍
    1.列表定义和初始化
    2.列表索引访问
    3.列表元素修改
    4.列表元素删除
    5.列表其他操作

    0.列表介绍

    线性,可变,有序

    1.一个队列,一个排列整齐的队伍
    2.列表内的个体称作元素,由若干元素组成列表
    3.元素可以是任意对象(数字、字符串、对象、列表等)
    4.列表内元素有顺序,可以使用索引
    5.线性的数据结构
    6.使用[ ]表示
    7.列表是可变的
    

    NOTE:比较列表list,链表,queue,stack的差异

    1.列表定义和初始化

    1.1 list()

    括号中不放或者放置可迭代对象

    >>> lst1 = list()
    >>> lst1
    []
    >>> lst2 = []
    >>> lst2
    []
    >>> lst3 = [1,'ab',(1,3)]
    >>> lst3
    [1, 'ab', (1, 3)]
    
    1.2 list(iterable)
    >>> lst4 = list(range(5))
    >>> lst4
    [0, 1, 2, 3, 4]
    >>> tup1 = (1,2,3,4)
    >>> lst5 = list(tup1)
    >>> lst5
    [1, 2, 3, 4]
    

    NOTE:列表不能一开始就定义大小

    2.列表索引访问

    list[index]

    0.索引:也叫下标
    1.正索引:从左至右,从0开始,为列表中每一个元素编号
    2.负索引:从右至左,从-1开始
    3.正负索引不可以超界,否则引发异常IndexError
    
    2.1 下标索引访问
    >>> lst = list(range(10))
    >>> lst
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> lst[0]
    0
    >>> lst[3]
    3
    >>> lst[10]
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    IndexError: list index out of range
    
    >>> lst[-1]
    9
    >>> lst[-10]
    0
    >>> lst[-11]
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    IndexError: list index out of range
    
    2.2 index(value,[start,[stop]])

    1.通过值value,从指定区间(前闭后开)查找列表内的元素是否匹配
    2.匹配第一个就立即返回索引
    3.匹配不到,抛出异常ValueError

    >>> lst = [4,42,2,35]
    >>> lst
    [4, 42, 2, 35]
    >>> lst.index(4)
    0
    >>> lst.index(0)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: 0 is not in list
    >>> lst.index(4,0,3)
    0
    >>> lst.index(2)
    2
    >>> lst.index(2,0,2)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: 2 is not in list
    
    2.3 count(value)

    返回列表中匹配value的次数

    >>> lst = [1,2,2,3,3,3,4,4,4,4]
    >>> lst
    [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
    >>> lst.count(0)
    0
    >>> lst.count(1)
    1
    >>> lst.count(2)
    2
    

    3.列表元素修改

    3.1 索引访问修改:list[index] = value

    索引超界会报IndexError异常

    >>> lst = list(range(10))
    >>> lst
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> lst[4]
    4
    >>> lst[4] = 100
    >>> lst
    [0, 1, 2, 3, 100, 5, 6, 7, 8, 9]
    >>> lst[11] = 100
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    IndexError: list assignment index out of range
    
    3.2 列表增加元素
    3.2.1 append(object) -> None

    列表尾部追加元素,返回None
    没有新的列表产生,就地修改
    时间复杂度O(1)

    >>> lst = list(range(4))
    >>> lst
    [0, 1, 2, 3]
    >>> lst.append(4)
    >>> lst.append(5)
    >>> lst
    [0, 1, 2, 3, 4, 5]
    
    3.2.2 insert(index,object) -> None

    在指定的索引index处插入元素object
    不产生新的列表,就地修改
    时间复杂度O(n)
    索引超界:超上界,尾部追加;超下界,头部追加
    需要两个参数,否则报TypeError错误

    >>> lst
    [0, 1, 2, 3]
    >>> lst.insert(1,10)
    >>> lst
    [0, 10, 1, 2, 3]
    >>> lst.insert(6,66)
    >>> lst
    [0, 10, 1, 2, 3, 66]
    >>> lst.insert(11,-100)
    >>> lst
    [0, 10, 1, 2, 3, 66, -100]
    >>> lst.insert(-11,-100)
    >>> lst
    [-100, 0, 10, 1, 2, 3, 66, -100]
    >>> lst.insert()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: insert expected 2 arguments, got 0
    
    3.2.3 extend(iterable) -> None

    将可迭代对象的元素追加进来,返回None
    返回None,列表立即发生修改

    >>> lst = [0,1,2]
    >>> lst.extend((3,4))
    >>> lst
    [0, 1, 2, 3, 4]
    >>> lst.extend([3,4])
    >>> lst
    [0, 1, 2, 3, 4]
    >>> lst
    [0, 1, 2, 3, 4]
    >>> lst.extend({3,4})
    >>> lst
    [0, 1, 2, 3, 4]
    >>> lst.extend('34')
    >>> lst
    [0, 1, 2, '3', '4']
    
    3.2.4 + -> list

    连接操作,将两个列表连接起来
    产生新的列表,不改变原列表
    本质上调用的是add()方法

    >>> lst1 = [0,1,2]
    >>> lst2 = [3,4,5]
    >>> lst1 + lst2
    [0, 1, 2, 3, 4, 5]
    
    3.2.5 * -> list

    重复操作,将本列表元素重复n次,返回新的列表

    >>> x = [[0,1,2]]*3
    >>> x
    [[0, 1, 2], [0, 1, 2], [0, 1, 2]]
    >>> x[0][1]
    1
    >>> x[0][1] = 20
    >>> x
    [[0, 20, 2], [0, 20, 2], [0, 20, 2]]
    >>> y = [1]*5
    >>> y
    [1, 1, 1, 1, 1]
    >>> y[0]
    1
    >>> y[0] = 6
    >>> y
    [6, 1, 1, 1, 1]
    >>> y[1] = 7
    >>> y
    [6, 7, 1, 1, 1]
    >>> lst1 = [[1,2,3]]*3
    >>> lst1
    [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
    >>> id(lst1),id(lst1[0]),id(lst1[1]),id(lst1[2])
    (139997400807488, 139997400808128, 139997400808128, 139997400808128)
    >>> lst1[0] == lst1[1] 
    True
    >>> lst1[0] is lst1[1] 
    True
    

    深拷贝与浅拷贝:https://www.jianshu.com/p/7ecf03209545

    4.列表元素删除

    4.1 remove(value) -> None

    从左至右查找第一个匹配value的值,移除该元素,返回None
    返回None,列表就地修改
    效率较低,value后面的值会逐个向前移动

    >>> lst = [0,1,0,2,3,4,3]
    >>> lst.remove(0)
    >>> lst
    [1, 0, 2, 3, 4, 3]
    >>> lst.remove(5)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: list.remove(x): x not in list
    
    4.2 pop([index]) -> item

    不指定索引index,就从列表尾部弹出一个元素
    指定索引index,就从索引处弹出一个元素,索引超界抛出IndexError错误
    指定index时,效率和remove相当;不指定时O(1)

    >>> lst = [0,1,2,3]
    >>> lst
    [0, 1, 2, 3]
    >>> lst.pop()
    3
    >>> lst
    [0, 1, 2]
    >>> lst.pop(0)
    0
    >>> lst
    [1, 2]
    >>> lst.pop(4)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    IndexError: pop index out of range
    
    4.3 clear() -> None

    清除列表所有元素,剩下一个空列表

    >>> lst = list(range(10))
    >>> lst
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> lst.clear()
    >>> lst
    []
    

    5.列表其他操作

    5.1 reverse() -> None

    将列表元素反转,返回None
    直接修改列表

    >>> lst = list(range(10))
    >>> lst
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> lst.reverse()
    >>> lst
    [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
    
    5.2 sort(key=None,reverse=False) -> None

    对列表元素进行排序,就地修改,默认升序
    reverse为True,反转,降序
    key是一个函数,指定key如何排序:lst.sort(key=functionname)

    >>> lst = [4,42,542,5,1,8]
    >>> lst.sort()
    >>> lst
    [1, 4, 5, 8, 42, 542]
    >>> lst = [4,42,542,5,1,8]
    >>> lst.sort(reverse=True)
    >>> lst
    [542, 42, 8, 5, 4, 1]
    
    5.3 in

    判断元素是否在列表内,返回bool值

    >>> [3,4] in [1,2,[3,4]]
    True
    >>> 1 in [1,2]
    True
    >>> 3 in [1,2]
    False
    

    相关文章

      网友评论

        本文标题:1.列表List

        本文链接:https://www.haomeiwen.com/subject/uiyqgktx.html