• python内置函数列表(list)


    一、列表list

    •  一个队列,一个排列整齐的队伍,列表内的个体称作元素,由若干元素组成的列表,元素可以是任意对象(数字,字符串,对象,列表等)
    •  列表内元素有顺序,可以使用索引,线性的数据结构,使用[]表示,列表是可变的
    •  列表list、链表、queue、stack的差异

    二、列表list定义和初始化

    •  list() 定义一个空列表  list(iterable)  初始化一个可迭代的列表  列表不能一开始就定义大小  
    •  列表定义方式:lst = list()或lst = []    
    • 举例:  lst = [2,6,9,'ab']  lst = list(range(5))

    三、列表索引访问

    •  索引也叫下标
    •  正索引:从左至右,从0开始为列表中每一个元素编号
    •  负索引:从右至左,从-1开始为列表中每一个元素编号
    •  正负索引不可以越界,否则引发异常IndexError,为了理解方便,可以认为列表是从左至右排列的,左边是头部,右边是尾部,左边是下界,右边是上界
    •  列表通过索引访问方式:list[index],index就是索引,使用中括号访问


    四、列表查询

    1、list.index(value,[start,[stop])

    •  通过值value,从指定区间查找列表内的元素是否匹配,匹配第一个就立即返回索引,匹配不到,抛出异常ValueError
    • 举例:
    • >>> lst = [2,6,9,'ab']
      >>> lst.index(2)
      0
      >>> lst.index(6,0,3)
      1

    2、list.count(value)

    •  返回列表中匹配value的次数
    •  时间复杂度
    •  index和count方法都是O(n)
    •  随着列表数据规模的增大而效率下降
    •  len(lst) 返回列表元素的个数
    • 举例:
    • >>> lst = lst = [2,6,9,9,9,'ab']
      >>> lst
      [2, 6, 9, 9, 9, 'ab']
      >>> lst.count(9)
      3

    五、列表元素修改

    •  list[index] = value,索引不要超界

    六、列表增加、插入元素

    •  list.append(object):列表尾部追加元素,返回None,返回None就意味着没有新的列表产生,就地修改,时间复杂度是O(1)  
    •  list.insert(index,object) 返回None,返回None就意味着没有新的列表产生,就地修改,时间复杂度是O(1)  
    • 插入索引越界:超越上界,尾部追加,超越下界,头部追加    list.extend(iterable) 返回None,将可迭代对象元素追加进来,返回None,就地修改  
    •  list+list:连接操作,将两个列表连接起来,产生新的列表,原列表不变,本质上调用的是__add__()方法
    •  list*list:重复操作,将本列表元素重复n次,返回新的列表

    七、列表删除元素

    •  list.remove(value):返回None,从左至右查找第一个匹配的value值,移除该元素,返回None,就地修改
    •  list.pop([index]):不指定索引就从列表尾部弹出一个元素,指定索引,从索引出弹出一个元素,索引超界抛出IndexError错误
    •  list.clear():清除列表所有元素,返回None,剩下一个空列表

    八、列表其他操作

    •  list.reversed(): 将列表元素反转,返回None,就地修改
    •  list.sort(key=None,reverse=False): 对列表元素进行排序,就地修改,默认升序,reverse=True降序,key是一个函数,指定key如何排序
    •  in 是否在 [3,4] in [1,2,[3,4]]

    九、列表复制

    1、影子拷贝,也叫浅拷贝:list.copy() ,遇到引用类型,只是复制了一个引用而已

    • 测试 lst1 = list(range(4))和 lst2 = list(range(4))是否相等?
    • >>> lst1 = list(range(4))
      >>> lst1
      [0, 1, 2, 3]
      >>> lst2 = list(range(4))
      >>> lst2
      [0, 1, 2, 3]
      >>> lst1 == lst2
      True
    • 以上测试说明,lst1和 lst2相等,两个列表指向的是同一个引用
    • 测试1:
    • >>> lst1 = list(range(4))
      >>> lst2 = lst1.copy()
      >>> lst1
      [0, 1, 2, 3]
      >>> lst2
      [0, 1, 2, 3]
      >>> lst2[2] = 10
      >>> lst2
      [0, 1, 10, 3]
      >>> lst1
      [0, 1, 2, 3]
      >>> lst1 == lst2
      False

    2、深拷贝:copy模块,提供了deepcopy

    • 举例1:使用浅拷贝
    • >>> lst1 = [1,[2,3],4]
      >>> lst2 = lst1.copy()
      >>> lst2
      [1, [2, 3], 4]
      >>> lst2[1][1] = 20
      >>> lst2
      [1, [2, 20], 4]
      >>> lst1
      [1, [2, 20], 4]
      >>> lst1 == lst2
      True
      举例 2:使用深拷贝
    • >>> lst1 = [1,[2,3],4]
      >>> lst1
      [1, [2, 3], 4]
      >>> import copy
      >>> lst2 = copy.deepcopy(lst1)
      >>> lst2
      [1, [2, 3], 4]
      >>> lst2[1][1] = 20
      >>> lst2
      [1, [2, 20], 4]
      >>> lst1 == lst2
      False
  • 相关阅读:
    [原创]Office Word 2010如何使用printer drivers输出PostScript文件
    MATLAB启动时报错: pathdef.m not found 问题解决方法
    Ubuntu 下 Matlab R2010a 错误:`GLIBCXX_3.4.11' not found 的解决办法
    [转] 一阶导和二阶导的含义
    win7 搭建ftp 设置用户权限 远程访问设置
    Ubuntu 中软件的安装、卸载以及查看的方法总结
    64位ubuntu12.04 LTS安装oracle10g笔记
    如何在Ubuntu 12.04 LTS中使用低版本gcc/g++
    HTTP与HttpServlet
    EXP00091错误
  • 原文地址:https://www.cnblogs.com/jiangzuofenghua/p/11361384.html
Copyright © 2020-2023  润新知