list和tuple是Python内置的有序集合,一个是可变的,一个是不可变滴;这都不是事,主要是理解一下“指向不变”。
看图说话:
理解了这个这两玩意就差不多了。
先怼list有序集合比如你想列出你想的一系列东西:
变量laughter就是一个list。同样的用上节讲的len()函数获取list元素的个数
记住这是获取的是listd列表“个数、个数、个数”重要的事说三遍。
用索引访问每个元素的位置,索引是从0开始的、0开始的、0开始的
索引也是有容忍限度的超过了就会原地爆炸(报错)如果列表中元素个数贼多,想获取后面的元素就要实行曲线救国了。写个例子瞧瞧
最后一个索引就用len(test)-1;用“-1”获取最后吊车尾的元素,以此类推获取倒数第二、第三的元素,同样超出范围也是无法忍受的就会报错。注意“-1”就是按个数来算的最后一个,而不是索引从0开始,切记、切记、切记。
list是一个不安稳的列表它是可变的
(1) 追加元素到最后;append()
(2) 插入到指定位置;insert()索引
(3) 删除吊车尾元素;pop()
(4) 删除指定位置元素;pop(i) i是索引位置
(5) 替换元素,直接赋值;
(6) list元素里也可以包含list;
(7) 空list长度为0。
下面就可以对号入座了
现在开始怼他的同胞tuple了外号叫:元组,是个比较固执的家伙,一旦初始化了就不能修改了,开始你的表演:
(1) list和tuple长的贼像,一个比较硬朗(“[]”),一个比较圆润(“()”)关注第一、二个例子;它不能使用append()、insert()、也不能赋值,但获取元素的手段和list是一致的,第二个例子说明确定了这个元素就是 不可更改的,这样显得代码更加有安全感,所以说能用tuple代替list就用tuple;(2) 看第三、第四个例子定义一个空的tuple,可以正确显示结果“()”,但定义一个tuple元素结果却是“1”,说好的不可变呢,还不是因为计算机不知道把“()”当成是数学公式的括号呢,还是tuple呢,这应该得打场架,最后Python就来救场了,说好定义tuple时,加个逗号,来消除误解;
(3) 例子看第五个。
好了最后来解决我们的终极大BOSS:“指向不变”
肤浅的看tuple元素确实改变了,但其实变的不是tuple这家伙,而是跟他长的很像的list在捣乱,tuple一开始指向list并未改成别的list,归根结底tuple所谓“不变”说的是每个元素指向不变。指向了‘面’就不能指向‘对’。指向一个list,就不能改成指向其它对象,但指向这个list本身是可变的。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。