zoukankan      html  css  js  c++  java
  • list

    List

    和String类型一样可索引和分片,同时可修改数据。索引下标从0开始

    lst = ['hello',1,1.0,False,'world']
    print(lst)
    ['hello', 1, 1.0, False, 'world']
    

    常用函数

    名称 说明 用法
    append 在末尾添加新的元素 list.append(4)
    clear 清除列表中所有的数据 list.clear()
    copy 浅拷贝 list.copy()
    count 查看元素在列表中出现的次数 list.count(2)
    extend 在末尾一次性追加另外一个列表中的多个值 list.extend([1,2])
    index 从指定范围的列表中指出某个值第一个匹配的下标索引;若不指定范围,则默认是整个列表 list.index(object[, start][, stop])
    insert 在下标处插入元素,不覆盖原本数据。原数据向后顺延 list.insert(0,1)
    pop 移除列表中指定下标处的元素(默认移除最后一个元素),并返回移除的数据 list.pop()
    remove 移除列表中的某个元素第一个匹配结果 list.remove(2)
    reverse 将列表中的元素倒序,操作原列表,不返回新的列表 list.reverse()
    sort 将list中的元素进行升序排列(默认reverse=False),当reverse为True时,为降序排列 list.sort(reverse=False)

    列表可修改,有很多方法,如:
    删除元素: pop(有返回值),del(无法回值)

    >>> a = [0,1,2,3,4]
    >>> del a[-1]     #del删除没有返回值
    >>> a
    [0, 1, 2, 3]
    >>> del a[1:3]  #删除index范围
    >>> a
    [0, 3]
    >>> del a      #删除整个变量
    >>> a
    []
    
    >>> a = [0,1,2,3,4]
    >>> a.pop()      #不填写index,则默认index为-1。有返回值
    4
    >>> b = a.pop(1)     #删除指定index
    >>> print(a)
    [0,2,3]
    >>> print(b)
    1
    

    如果你要从列表中删除一个元素,且不再以任何方式使用它,就使用del语句;如果你要在删除元素后还能继续使用它,就使用pop

    根据值删除元素remove

    >>> a = [1,2,3]
    >>> a.remove(2)
    >>> print(a)
    [1,3]
    

    拷贝

    1、赋值拷贝/引用拷贝

    >>> a = [1,2,3]
    >>> b = a
    >>> a.append(4)
    >>> print(b)
    [1,2,3,4]
    

    指向同一个内存地址,类似快捷方式

    2、浅拷贝

    >>> a = [1,2,3,[4,5]]
    >>> b  = a.copy()
    >>> a.append(9)
    >>> print(a,b)
    >>> print(id(a[3]),id(a))
    >>> print(id(b[3]),id(b))
    [1, 2, 3, [4, 5], 9] [1, 2, 3, [4, 5]]
    139912453078920 139912453106184
    139912453078920 139912453165192
    
    >>> a[3].append(6)
    >>> print(a,b)
    [1, 2, 3, [4, 5, 6]] [1, 2, 3, [4, 5, 6]]
    
    相当于
    b = a[::]
    

    注意: 只适用于一维列表

    不完全内存拷贝,对于一维列表重新开辟了一块内存空间,但若出现二维列表的情况下,因为二维列表存放在一维列表中存放的是列表地址,因此若出现二维列表相当于间接的引用了同一块内存区域

    3、深度拷贝

    import copy
    list1 = copy.deepcopy(list1)
    
    >>> import copy
    >>> a = [1,2,3,[4,5]]
    >>> b = copy.deepcopy(a)
    >>> a[3][1] = 6
    >>> print(a,b)
    [1, 2, 3, [4, 6]] [1, 2, 3, [4, 5]]
    

    完全内存拷贝,相当于将list1中的所有列表中元素重新复制了一份,对于多维也重新开辟了内存空间,因此不会出现内存共用的情况

  • 相关阅读:
    【杭电】[2071]无限的路
    【杭电】[1161]Eddy's mistakes
    【杭电】[1859]最小长方形
    【杭电】[2083]简易版之最短距离
    【CodeForces】[614A]Link/Cut Tree
    【杭电】[2076]夹角有多大
    【杭电】[2055]An easy problem
    【杭电】[2036]改革春风吹满地
    【杭电 】[2040]亲和数
    【杭电】[2044]一只小蜜蜂...
  • 原文地址:https://www.cnblogs.com/dance-walter/p/13637696.html
Copyright © 2011-2022 走看看