第六章 python3列表list

 在开始之前我们先了解一下序列(sequence):

序列中的元素都是有序的,其实在前面已经分享过一种序列了,那就是字符串;Python总共有6个内置的序列:即列表、元组、字符串、Unicode字符串、buffer对象和 xrange对象。

序列的操作包括:索引、长度、切片、遍历、组合(序列相加)、检查成员、重复(乘法)、最小值和最大值。

今天我们了解下数据类型中的列表list,是Python中最常用的序列之一。

使用方括号[ ]来创建列表,元素item间用逗号(,)隔开;实例代码:

 

从上面的实例我们可以看出,list中的元素item可以是不同类型的对象;还可以看出上面的list在定义时字符串元素item使用了单/双引号,输出结果时Python解释器默认用单引号表示字符串元素,我们自己在定义字符串元素时可以借鉴一下。

1list 索引和切片

列表的索引和切片与前面讲的字符串索引是相同的, [头下标:尾下标) list切片遵循“左闭右开”原则,也叫“包左不包右”。

实例代码:

 

合理的使用负索引进行访问和切片,可以提高检索list的效率。对正负索引和切片的概念不清楚的地方,

2Python中字符串截取(切片)的两种方式

字符串截取,也叫字符串切片,使用方括号[ ]来截取字符串,在Python中单字符也是作为一个字符串使用。

字符串[开始索引:结束索引:步长]

开始索引:从指定位置开始截取;

结束索引:从指定位置结束截取,但不包含该位置的字符。

步长:不指定时步长为1;

字符串[开始索引:结束索引]

首先我们了解下字符串的索引,Python中字符串有两种索引方式,如下图:

列表拼接,拼接后会产生一个新列表。实例代码:

 

正索引代表从前往后索引,默认从0开始;负索引代表从后往前索引;索引值也可以叫下标,实例代码:

 

字符串截取 遵循“左闭右开”原则,也叫“包左不包右”:

[开始下标:开始下标)

有两种索引方式就有两种截取方式,实例代码:

 

根据情况灵活使用这两种索引方式截取字符串,因为会涉及到执行效率的问题,比如:想快速获取最后一部分字符串,使用负索引是最快的。

3、列表拼接,拼接后会产生一个新列表

实例代码:

 

注意: += 操作符是把b列表中每个元素拼接到了a列表元素的后面。

使用list.append()追加元素,和+=操作符是有区别的,实例代码:

 

可以看出,append(obj) 参数整体作为一个元素被追回到b列表最后一位,这就是下面要讲的嵌套。

4list 嵌套

在前面刚才提到了list中的元素可以是不同的数据类型对象;实例代码:

 

说明:

list_a[-1]:取出a列表最后一位元素,它是list类型;

list_a[-1][-1]:取出a列表最后一个元素中的最后一个元素。

5Python内置函数

 

in 判断是否存在于列表中

 

列表推导式:这个很重要也比较常用,格式如下:

[表达式 for 变量 in 可迭代对象]

[表达式 for 变量 in 可迭代对象 if 条件]

 

6list 常用的几个方法

 

注意了,上面list.sort()只针对元素类型相同的列表进行排序,不同类型元素的列表进行排序是会报错的;实例代码:

 

总结一下sort与sorted区别:

sort是list自身的方法;sorted是Python内置函数,可以对所有可迭代的对象进行排序操作。

list的sort方法改变的是原列表中元素的顺序,而内置函数sorted返回的是一个新的list,原列表保持不变。

 

总结一下上面的列表复制:

id() 获取对象的内存地址,这样 = 和 copy()两者的区别就明显了;

使用=是引用赋值,两个对象指向同一块内存地址,变更其中一个另外一个也会跟着变;

copy()是复制一个副本,原对象和新复制的对象互不影响。

 

del语句删除一个或者多个对象的引用(引用可以理解为给对象贴的标签),而不是删除内存中的对象(value);

当某个对象的所有引用都被删除后(对象的所有标签被撕完后),会自动执行魔法方法__del__将这个对象作为垃圾回收掉。实例代码:

 

posted @ 2019-06-02 22:22  在软件技术路上的行者  阅读(148)  评论(0编辑  收藏  举报