跟小弟我一起学Python(4)——列表、元组

跟我一起学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'))    #嵌套的子元组
 

 

即然元组跟列表这么的类似,那么为什么要有两种数据类型呢?因为元组的不可变性提供了某种完整性,这样你可以确保元组在程序中不会被另一个引用修改,而列表就没有这样的保证了。