2019/09/10 05-列表的基本操作

在这里插入图片描述
列表是个有序结构,在内存中是一个挨一个的排列方式,有顺序的可以索引,还可以迭代
特点:有顺序,可索引,可迭代,可变
链表就是links
在这里插入图片描述
range一定要拿()抱起来,[]是不会帮你迭代的在这里插入图片描述
可以复合结构
在这里插入图片描述
在这里插入图片描述
索引也叫下标,一般从0开始
正索引,就是从0开始编号,0,1,2
负索引,从-1开始,-1,-2,-3
不能超界,引发异常indexerror
在这里插入图片描述
左边是下边界,右边是上边界,左边是头,右边是尾在这里插入图片描述
index本质上是函数,value是值在这里插入图片描述在这里插入图片描述
l对象,调用index方法,第一个元素没有2,2是在第一个元素里面
找不到会告诉你这个值有问题,2不在当前列表中
在这里插入图片描述在这里插入图片描述
index通过值查找,并没有通过索引
从左到右查找你的值,找到后返回值对应的索引
找不到则返回异常valueerror
在这里插入图片描述在这里插入图片描述
count所有元素过一遍才知道有几个,没有就是0在这里插入图片描述
index,count,一个是去计数,一个是找第一个出现,没找到还是需要走一遍
count,有多少个元素,就需要走多少个,叫遍历,全部浏览一遍
index找的是value,是要把元素拿出来看看值比较的

下面是找索引是3的元素在这里插入图片描述
但凡看到value的效率都不太高,最好不使用在这里插入图片描述
用了start。stop可以不写,表示从索引几开始查找在这里插入图片描述
O(n)
n表示列表中有n个元素
O(n)表示把所有的元素都遍历了一遍,非常耗时
随着你的规模越来越大,耗时越来越长,随着n的变化你的效率会越来越低

在这里插入图片描述在这里插入图片描述
可以认为所有列表以前都是空的,加个元素,给你记1,再加一个1+1=2,不管你从哪里拿走元素,都-1,对于个数都是-1的事情
列表中加个对象,表示当下的元素的个数,增加元素就+1,减少元素就-1,有个计数装置,放在列表对象身上,问你有多少个元素,直接返回给你值即可
len实际上是个常量,你问就立即返还给你

面试会问道,随着规模增大,效率就下降,是靠遍历来完成的
在这里插入图片描述在这里插入图片描述
打个问号其实也相当于调用了帮助在这里插入图片描述
l是list对象,就告诉你list对象的构造方法在这里插入图片描述在这里插入图片描述在这里插入图片描述
不能写成这样,这样表示调用的函数,返回值交给help
在这里插入图片描述
2能找到就返回个索引,是个整形,就help的是int类型
help(3),3 这个东西能做什么
在这里插入图片描述
还可以这么写
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
list+索引号在这里插入图片描述在这里插入图片描述
但是不能这么写,有些语言支持稀疏数组,但是python不支持,所以不能写8,原数组索引没到8
在这里插入图片描述在这里插入图片描述在这里插入图片描述
O(1)一步到位,直接解放,如果写的东西时间复杂度已经是O(1),就已经很好,没法改了
在尾部增加元素,找到尾部即可
append这个方法,其实是有返回值的,返回的是NONE,把一个元素加到列表的尾部上,

在这里插入图片描述在这里插入图片描述
代表需要用索引先查找到位置,然后插入后,需要一个个元素往后挪
在这里插入图片描述
index在头上插入是0,但如果是-1,就需要测试一下
没有返回值
在这里插入图片描述
加进去了
在这里插入图片描述
没有返回值相当于返回了none这个值,强行打印在这里插入图片描述
插入 /insert,c往前一放,其他值都往后挪
insert这个事情最好少做
在这里插入图片描述在这里插入图片描述
头部追加指定0即可,尾部就append即可,没必要写insert写超界的100之类的在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
列表还可以扩展,
就地修改,把可迭代的元素一个个拿进来,变成自己的,在尾部追加

在这里插入图片描述
扩展还需要写可迭代对象,返回的是none
在这里插入图片描述
就地修改,把自己改变在这里插入图片描述
**造一个新的列表出来,+号出来的就是列表,有值出来
**在这里插入图片描述
最后就有0,1,2,3,4
在这里插入图片描述
返回是none,修改的是自己,没有返回代表创建 的是新的在这里插入图片描述
打印出以后,引用计数位0,就会被垃圾回收回收
在这里插入图片描述
现在代表l1跟对象关联起来,有人记住了,引用人计数+1
在这里插入图片描述
相当于把前面的参数*3,生成了一个新的列表
在这里插入图片描述
l1就没有变化
在这里插入图片描述
l1*3,返回的是一个列表对象,列表对象可以append,
append里面是对象。不是列表,不迭代

在这里插入图片描述
append写明,给什么元素就加进去,不给你迭代
在这里插入图片描述
如果一定要迭代,使用list,把里面元素迭代返回在这里插入图片描述
相当于如下
在这里插入图片描述
append不给你迭代,extend表示后面如果你能迭代就把你一个个都加入在这里插入图片描述
乘以3表示返回一个新的列表
在这里插入图片描述
如果想要增加很多元素,就可以使用extend迭代进去在这里插入图片描述
**要注意返回值,append会返回none,如果有人就拿,没人要就不显示了
看不出来效果就可以像定义变量一样 看看
**在这里插入图片描述在这里插入图片描述在这里插入图片描述
两个列表相加,等于两个列表直接合并
加法通常是把多余的列表合并,是经常使用的
但是要注意,加列表,如果另外两个列表还存在,内存空间等于翻倍
在这里插入图片描述
这些方法基本不用,但是偶尔用,能少用就少用在这里插入图片描述在这里插入图片描述在这里插入图片描述
规模大的时候,要注意
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值