美文网首页
005.python基础语法之内置数据结构列表

005.python基础语法之内置数据结构列表

作者: 讲武德的年轻人 | 来源:发表于2019-04-23 01:32 被阅读0次

简介

列表这一数据结构最常用

特性:

有顺序,可以使用索引(从0开始);

元素可以使任意对象;

是线性的数据结构;

列表是可变的;

列表的定义、初始化

lst=list()

lst=[]

lst=[2,6,9,'ab']

lst=list(range(1,5))

列表的索引访问

索引,也叫下标,从左至右,从0开始;从右向左,从-1开始

访问列表元素,索引不可以超界

列表查询

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

count(value)

列表的index和count方法

index和count的时间复杂度是O(n),列表规模大的话,效率很低

求列表长度的话用len(),len()效率高

列表元素的修改及插入

列表元素的修改和插入 索引超界,则在首部或尾部追加

insert的时间复杂度是O(n)

注意:修改的元素时候索引不要超界,插入元素可以超界

扩展列表

加一个元素用append,就地修改列表

列表尾部追加元素,返回None

append的时间复杂度是O(1)

用append来扩展元素

加多个元素可以用extend()方法(就地修改)

extend()方法 其他扩展方法 列表+法和*法

注意:列表乘法容易出现的坑

列表乘法容易出现的坑

x即使乘了3,但指向的是同样的内存地址,所以都会改成8

删除列表元素

remove(value)        #从左到右,删除找到的第一个value并将其移除,就地修改,效率差

pop()或pop(index)  #pop()弹出最后一个元素,指定index则弹出指定元素,效率由弹出位置而定

clear()                     #清除列表所有元素,结果为空列表,但会产生很多垃圾,引起频繁GC(垃圾回收)

列表其他操作

reversed()  #将列表反转,就地修改,效率低

反转列表

in() #判断是否是成员

判断是否是成员

sort()  #排序,就地修改,默认升序

列表的sort方法

列表复制

为什么会这样???

lst1=lst0这一步只是让lst1的地址指向指向了lst0

shadow copy返回一个新的列表

shadow copy

再看

用id查看内存地址就知道了,shadow copy遇到引用类型,只复制引用(内存地址)

deep copy

深copy

相关文章

网友评论

      本文标题:005.python基础语法之内置数据结构列表

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