第二章 列表和元组
2.3 列表:Python中的“苦力”
不同于元组和字符串,列表是可变的。
2.3.1 list函数
list()函数的功能是根据字符串创建列表。图1.list函数的应用。
与之可以进行类比的是join()函数。图2.join函数的应用。
join()函数可以将列表转换为字符串,但是列表中如果有数字,则不能转换。
2.3.2 基本表的列表操作
1.改变列表
元素赋值图3.改变列表中的元素。
2.删除元素
删除元素用【del语句】来实现。
图4.删除列表中的元素。
del语句还用于删除其他元素、字典元素甚至是其他变量的删除操作。
3.分片赋值
分片赋值可以进行不等长的【替换】。图5.利用分片进行赋值操作(替换)。
分片赋值还可以在不替换任何元素的情况下进行【插入】。图6.利用分片进行赋值操作(插入)。
分片赋值也可以进行元素的【删除】。图7.利用分片进行赋值操作(删除)。
2.3.3列表方法
方法是一个与某些对象有紧密联系的【函数】,对象可能是列表、数字,也可能是字符串或者其他类型的对象。
一般来说,方法可以这样进行调用:对象.方法(参数)。
1.append
append方法用于在列表末尾追加新的对象(一个)。图8.append方法。
2.count
count方法统计某个元素在列表中出现的次数。图9.count方法。
3.extend
extend方法可以在列表的末尾一次性追加另一个序列中的多个值。
在此之前先回顾一下append方法。
如下图所示,append方法每次只能追加一个元素。
append方法的参数可以是数字元素,也可以是一个序列。图10.append方法每次只能追加一个元素。
想要追加多个元素,就要用到extend方法。
但如下图,extend方法的参数只能是序列,数字等元素不能作为extend方法的参数。图11.extend方法。
其实此方法可以用分片来实现。
4.index
index方法用于从列表中找出某个值第一个匹配项的索引位置。
index搜索不到时会引发一个异常,同时其不支持大小写匹配。图12.index方法。
5.insert
insert方法用于将对象插入到表中。图13.insert方法。
同理,此方法也可以用分片来实现。
6.pop
pop方法会移除列表中的一个元素(默认是最后一个),并且返回该元素的值。
pop方法的参数是要移除元素的索引值,所以不支持超过其范围的值,但是支持负数。图14.pop方法。
pop方法是唯一以一个既能修改列表,又能返回元素值的列表方法。
7.remove
remove值用于移除列表中某个值得第一个匹配项。图15.remove方法。
8.reverse
reverse方法将列表中的元素反向存放。图16.reverse方法。
9.sort
sort方法用于在原位置对列表进行排序。图17.sort方法。
在原位置排序意味着改变原来的列表,从而让其中的元素能按照一定的顺序排列,而不是简单地返回一个已排序的列表副本。
例:用户需要既能对列表进行排序,又保留原来列表不变。
错误的方法1:sort()修改了x却返回了空值,赋给y的值为None。图18.错误的方法1。
错误的方法2:简单的把x赋值给y,会让x和y都指向同一个列表。图19.错误的方法2。
方法3:把x的副本赋值给y,然后对y进行排序。图20.正确的方法3。
方法4:采用sorted()函数。sorted()函数能够返回一个列表的已排序的副本,从而在不改变原来列表的额基础上对其进行排序。图21.正确的方法4。
10.高级排序
sort有三种可选的参数,其一是cmp,它是默认参数,不填也是一样。
其二是key值,比如key=len时,就按照元素的长短进行排序。
其三是reverse值,它是简单的布尔值,用于判断排序之后是否需要再进行反向排序。图22.sort方法的三个参数使用效果。
2.4 元组:不可变序列
元组与列表一样,也是一种序列。唯一的不同是元组不能修改,所以元组也没有像列表一样的方法。
元组的创建语法很简单,如果你用逗号分隔了一些值,那么你就自动创建了元组。图23.元组的创建、赋值操作。
2.4.1 tuple函数
tuple函数的动能和list函数类似,以一个序列(字符串、列表、元组)做参数并把其转换为元组。图24.list函数、tuple函数的用法相似。
2.4.2 基本元组操作
基本的元组操作只有【创建】和【访问】。图25.基本元组操作。
2.4.3 那么,意义何在
元组的不可替代性取决于以下两点:
1.元组可以在映射(集合的成员)中当键使用,列表则不行。
2.元组作为很多内建方法的返回值存在。