您好,登录后才能下订单哦!
1:列表 list的定义:
一个连续的,排列有序的数列,由若干个元素组成,元素可以是任意对象(数字、字符串,对象,列表),元素可以使用索引查找,线性的数据结构。使用[ ]表示。列表是可变的,是可迭代对象。
列表具体定义
l=[ ] (空列表) l=list(iterable)
列表不能一开始就定义大小。指定大小会报类型错误(TypeError)。
2:列表,链表的差异:
列表list(使用index查找,找的代价小,插入比较慢),
链表 (查找的比较慢,插入比较方便),
具体花费的时间需要根据具体的使用情况权衡。
3:queue ,stack的差异
queue(队列:先进先出的队列)
stack(栈:先进后出)
4:列表的索引访问
索引,也叫下标
正索引:从左至右,从0开始,为列表中每一个元素编号
负索引:从右至左,从-1开始
正负索引不可以超界,否则引起IndexError
约定:可以认为列表是从左至右排列,左边是头部,右边是尾部,左边是下界,右边是上界
列表通过索引访问。 list[index],index就是索引,使用中括号访问
5:列表的查询方法
index(value,[start,[stop]])通过值查找的。没有查到就抛ValueError , 靠值遍历的方式
通过值value,从指定的范围内查找列表内的元素是否匹配
匹配第一个就立即返回索引,匹配不到,就抛出异常ValueError
count(value) 靠值遍历的方式 没有查找到数值不抛出异常。返回列表中匹配value的次数
时间复杂度 遍历查找的都是O(n),index和count方法都是O(n)
len () 统计列表的长度方法
6:列表元素的修改方法
list[index]=value 索引不要超界
列表增加、插入元素
append(object)--->None 列表尾部追加元素,返回None
返回None就意味着没有新的列表产生,直接修改列表。 时间复杂度是O(1)
insert(index,object)----->None 在指定的索引index处插入元素object
返回None就意味着没有新的列表产生,直接修改列表。时间复杂度是O(n)
注意(使用insert()时): 超越上界,尾部追加。 超越下届,头部追加
extend(iteratable)--->none 将可迭代对象的元素追加进来,返回None 。直接修改列表。
时间复杂度是O(1)
+----->list 创建一个没有引用的新对象,之后会被垃圾回收
链接操作,将两个列表连接起来,原列表不会改变,会产生新的列表
本质上是调用——add_()方法
*------>list 重复操作,将本列表元素重复n次,放回新的列表 列表重复,如果设置数列里面也是数列,会遇到修改一 个,其他重复的元素也跟着修改。
7:列表的删除元素
remove(value)--->None 从左至右查找第一个匹配的value的值,移除该元素,返回None
时间复杂度是O(n) ,需要一个一个查找
pop([index])-->item
不指定索引index,就从列表尾部弹出一个元素,这种情况时间复杂度为:O(1)
指定索引index,就从索引出弹出一个元素,索引超界会抛出IndexError错误
clear()---None 清除列表所有元素,剩下一个空列表
8:列表的其他操作
reverse()-->None reverse将列表的元素反转,放回None 直接修改列表。
sort(key=None,reverse=false)-->None
对列表元素进行排序,直接修改列表,默认升序。reverse为True,反转,降序
key一个函数,指定Key如何排序 lst.sort(key=functionname)
in 判断一个列表是否属于另一个列表
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。