week02_python内置数据结构__列表

人走茶凉 提交于 2021-01-23 10:52:09

列表list

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




列表是可变的

列表list定义 初始化

list() => new empty list
list(iterable) => new list initialized from iterable's items
列表不能一开始就定义大小

lst = list()
lst = [ ]
lst = [2, 3, 4, 'ab']
lst = list(range(5))


列表索引访问

索引,也叫做下标;
正索引:从左至右,从0开始,为列表中每一个元素编号;
负索引:从右至左,从-1开始;
正负索引不可以超界,否则引发异常IndexError
为了理解方便,可以认为列表是从左至右排列的,左边是头啊,右边是尾部,左边是下界,右边是上界;



  • > 列表通过索引访问

    list[index],index就是索引,使用中括号访问

列表查询

  • > index(value,[start,[stop]])

    通过值value,从指定区间查找列表内的元素是否匹配
    匹配第一个就立即返回索引
    匹配不到,抛出异常ValueError

  • > count(value)

    返回列表中匹配value的次数

  • > 时间复杂度

    index和count方法都是o(n)
    随着列表数据规模的增大,而效率下降

列表元素修改

  • > 索引访问修改

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

列表增加、插入元素

  • > append(object) => None

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

  • > insert(index,object) => None

    在指定的索引index处插入元素object
    返回None就意味着没有新的列表产生,就地修改
    时间复杂度是o(1)

  • > extend(iteratable) = >None

    将可迭代对象的元素追加进来,返回None
    就地修改

  • > + => list

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

*=> list
重复操作,将本列表元素重复N次,返回新的列表

列表删除元素

  • > remove(value) => None

    从左至右查找第一个匹配value的值,移除该元素,返回None
    就地修改

  • > pop([index]) -> item

    不指定索引index,就从列表尾部弹出一个元素;
    指定索引index,就从索引处弹出一个元素,索引超界抛出IndexError错误;

  • > clear() -> None

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

列表其它操作

  • > reversed() => None

    将列表元素反转,返回None
    就地修改

  • > sort(key=None,reverse=False) = > None

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


  • > in

    [3,4] in [1,2,[3,4]]
    for x in [1,2,3,4]

列表复制

  • > copy() -->list

    lst1 = list(range(4))
    lst2 = lst1.copy()

  • > shadow copy 返回一个新的列表

    影子拷贝,也叫浅拷贝,遇到引用类型,只是复制了一个引用而已
    深拷贝

  • > copy模块提供了deepcopy

    import copy
    lst1 = [1,[2,3,4],5]
    lst2 = copy.deepcopy(lst1)

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!