Python学习笔记————列表与元组

通用序列操作

索引

序列中的元素从0开始,从左到右依自然顺序编号。这里的编号就是索引,可通过索引获取元素。所有序列都可以通过这种方式进行索引。Python的序列也可从右往左索引。

进行字符串的索引时可以定义变量也可以不定义变量。

如果函数返回一个序列,也可以直接对函数的返回结果进行索引操作。

分片

索引用来对单个元素进行访问,使用分片可以对一定范围内的元素进行访问,分片通过冒号相隔的两个索引实现。

由此看出,分片操作既支持正数索引也支持负数索引。分片操作的实现需要提供两个索引作为边界,第一个索引的元素包含在分片内,第二个索引的元素不包含在分片内。需要注意的是,只要在分片中最左边的索引比它右边的索引晚出现在序列中,结果就是一个空序列。通过负数索引取得最后一个元素有一个捷径可以使用:

正数索引也有类似操作

进行分片时,分片的开始和结束点都需要指定(无论是直接还是间接),用这种方式取连续的元素没有问题,但若要取序列中不连续的元素就比较麻烦,或不能直接操作。如取序列number中的所有奇数,以一个序列展示出来,用前面的方法并不能实现。

对于上述类似情况,python为我们提供了另一个参数——步长。在普通分片中,步长为1。

步长不能设置为0,但步长可为负数。

对于正数步长,python会从序列的头部开始向右提取元素,直到最后一个元素;对于负数步长,则是从序列的尾部开始向左提取元素,直到第一个元素。正数步长必须让开始点小于结束点,而负数步长必须让开始点大于结束点。使用负数步长时,设置第二个索引为空才能取到序列的第一个元素。

序列相加

类型相同的序列可以通过加号进行序列连接操作,不同类型的序列不能通过加号进行序列连接操作。

乘法

如果要初始化一个长度为x的序列,就要让每个编码位置都是空值,此时需要一个值代表空值,即里面没有任何元素,可以用None。None是Python的内建值,确切含义是“这里什么也没有”。

成员资格

为了检查一个值是否在序列中,Python为我们提供了in运算符。in运算符用于检验某个条件是否为真,并返回检验结果,检验结果为真返回True,结果为假返回False。这种运算符成为布尔运算符。

长度,最小值和最大值

列表

更新列表

1.元素赋值

由上述输出结果可以得知,可以对一个列表中的元素赋不同类型的值。但对列表赋值时使用的编号不能超过列表中的最大编号。

2.增加元素

可以往数字序列中添加字符串,也可以往字符串序列中添加数字。

3.删除元素

可以使用del删除列表中的元素。使用del除了可以删除列表中的字符,也可以删除列表中的数字。

4.分片赋值

上述示例中引入了一个新函数——list()函数。list()函数可以直接将字符串转换为列表。该函数的一个功能就是根据字符串创建列表,有时这么操作会很方便。list()函数适用于所有类型的序列。

分片赋值可以使用与原序列不等长的序列将分片替换。

append()方法只能在列表尾部添加元素,而分片赋值可以在任何位置增加元素。也可以通过分片赋值删除元素。

嵌套列表

在列表中可以嵌套列表,嵌套的列表取出后还是列表。

列表方法

1.append

使用方法为:

list.append(obj)

2.count

count()方法用于统计某个元素在列表中出现的次数。

count()方法的语法如下:

list.count(obj)

使用该方法的示例如下:

3.extend

extend()方法用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)。

extend()方法的语法如下:

list.extend(seq)

list代表列表,seq代表元素列表。

extend()方法和序列相加的主要区别是:extend()方法修改了被扩展的序列;原始的连接操作会返回一个全新的列表但不会修改原始的变量。

4.index

index()方法用于从列表中找出某个值第一个匹配项的索引位置。

index()方法的语法如下:

list.index(obj)

对于不在列表中的元素,用index()方法操作时会报错。

5.insert

insert()方法用于将对象插入列表。insert()方法的语法如下:

list.insert(index,obj)

list代表列表,index代表对象obj需要插入的索引位置,obj代表要插入列表中的对象。

与extend()方法一样,insert()方法的操作也可以使用分片赋值。

6.pop

pop()方法用于移除列表中的一个元素(默认最后一个元素),并返回该元素的值。pop()方法的语法如下:

list.pop(obj=list[-1])

此语法中list代表列表,obj为可选择的参数,代表要移除列表元素的对象。

pop()方法是唯一一个既能修改列表又能返回元素值(除了None)的列表方法。

使用pop()方法可以实现一种常见的数据结构——栈。

栈的原理成为LIFO,即后进先出。

7.remove

remove()方法用于移除列表中某个值的第一个匹配项。

remove()方法的语法如下:

list.remove(obj)

remove()方法是一个没有返回值的原位置元素变更方法。

8.reverse

reverse()方法用于反向列表中的元素。reverse()方法的语法如下:

list.reverse()

9.sort

sort()方法用于对原列表进行排序,如果指定参数,就使用参数的比较方法进行排序。语法如下:

list.sort(func)

若不将原列表分片后赋值给另一个变量,则两个列表都会被排序,这样简单的赋值后,两个列表都指向同一个列表。进行该操作时要记得对原列表分片。

sort方法有一个同样功能的函数——sorted函数。该函数可以直接获取列表的副本进行排序,使用方法如下:

10.clear

clear()方法用于清空列表,类似于del a[:]。clear()方法的语法如下:

list.clear()

11.copy

copy()方法用于复制列表,类似于a[:]。copy()方法的语法如下:

list.copy()

示例如下:

12.高级排序

若希望元素能按特定方式进行排序,可以自定义比较方法。sort方法有两个可选参数,即key和reverse。使用它们前要通过名字指定,称之为关键字参数。示例如下:

元组

元组与列表类似,不同之处在于元组的元素不能修改。

tuple函数

tuple函数的功能与list函数基本上一样,都是以一个序列作为参数,并把它们转换为元组。如果参数是元组,参数就会被原样返回。

元组的基本操作

1.访问元组

2.修改元组

元组中的元素值不允许修改,但可以对元组进行连接组合。

3.删除元组

元组中的元素不允许删除,但可以使用del语句删除整个元组。

4.元组索引、截取

元素内置函数

len(tuple)用于计算元组元素个数

max(tuple)用于返回元组中元素的最大值

min(tuple)用于返回元组中元素的最小值

tuple(tuple)用于将列表转换为元组

列表与元组的区别

列表与元组的区别在于元组的元素不能修改,因为不可变,所以代码更加安全。如果可能,能用元组代替列表就尽量用元组

嵌套列表

表面上来看,元组的元素确实发生了改变,但事实上变得不是元组的元素,而是列表的元素。元组一开始指向的列表并没有改成别的列表,但指向的列表本身是可变的。

猜你喜欢

转载自blog.csdn.net/Kismet11/article/details/82348589
今日推荐