跟小弟我一起学Python(4)——列表、元组
本文来谈谈Python中非常重要、非常常用的两种数据类型——列表和元组。之所以把列表和元组放在一起,是因为列表和元组非常的类似。可以简单地把元组理解为功能简化过的不可变的列表。
列表(list)
列表是Python中最具灵活性的有序集合对象类型。与字符串不同的是,列表可以包含任何种类的对象:数字、字符串甚至其它列表。同样地,与字符串不同的是,列表是可变对象,它支持在原处进行修改的操作,可以通过指定的偏移值和分片、列表方法调用、删除语句等方法实现。
列表的定义
list1 = [] #定义一个空的列表 list2 = [0, 1, 2, 3] #定义包含0到3共四个数字的列表 list3 = ['abc', ['def', 'ghi']] #嵌套的子列表
因为列表和字符串同属序列,所以列表具有字符串支持的所有序列功能:拼接、求长度、重复、索引、分片、格式化、搜索、移除空格、替换、分隔、迭代,具体代码和字符串几乎一样,本文不再赘诉。除了具有跟字符串同样的功能外,列表还有增长、排序、插入、反转、删除元素、索引赋值、分片赋值等强大的功能,下面一一介绍。
增长
增长分两种,一种是增加一个元素,代码如下:
list1 = [0,1] list1.append(2) print list1
结果:[0, 1, 2]
另一种是直接增加另一个列表
list1 = [0, 1] list2 = [2, 3] list1.extend(list2) print list1
结果:[0, 1, 2, 3]
排序
list1 = [1, 3, 2, 0] list1.sort() print list1
结果:[0, 1, 2, 3]
插入
list1 = [1, 2, 3] list1.insert(1, 0) print list1
结果:[1, 0, 2, 3]
反转
list1 = [1, 2, 3] list1.reverse() print list1
结果:[3, 2, 1]
删除
列表元素的删除可分为按索引删除、分片删除和按值删除
索引删除
list1 = [0, 1, 2] del list1[0] print list1
结果:[1, 2]
分片删除
list1 = [0, 1, 2] del list1[:2] print list1
结果:[2]
按值删除
list1 = [0, 1, 1, 2] list1.remove(1) print list1
结果:[0, 1, 2]
说明:按值删除时,只会删除查找到的第一个符合的值
索引赋值
list1 = [0, 1, 2] list1[1] = 5 print list1
结果:[0, 5, 2]
分片赋值
list1 = [0, 1, 2] list1[1:3] = [5, 6] print list1
结果:[0, 5, 6]
说明:如果分片的元素个数与所赋的值数量没有对应,则会抛出异常
还有一个range函数可以快速的生成整数列表,如range(1,5)将生成[1, 2, 3, 4],具体用法键入help(range)查看。
元组(tuple)
元组与列表非常类似,只不过元组不能在原处修改(不可变序列),并且定义的方法由“[]”改为“()”,或不用任何符号。虽然元组不支持任何的方法调用,但元组具有列表的大多数属性。
元组的定义
tuple1 = () #定义一个空的元组 tuple 2 = (0, 1, 2, 3) #定义包含0到3共四个数字的元组 tuple 3 = 0, 1, 2, 3 #同上 tuple 4 = ('abc', ('def', 'ghi')) #嵌套的子元组
即然元组跟列表这么的类似,那么为什么要有两种数据类型呢?因为元组的不可变性提供了某种完整性,这样你可以确保元组在程序中不会被另一个引用修改,而列表就没有这样的保证了。