2.数据结构
2.1Python中有4个内置的数据结构:List(列表)、Tuple(元组)、Dictionary(字典)和Set(集合),可以统称为容器(container),而这4个内置数据结构实际上是一些“东西”组合而成的结构,这些“东西”可以是数字、字符、列表,也可以是它们的组合。简而言之,容器里的数据结构可以是任意的,且容器内部的元素类型不需要相同。
<1>列表或元组
a.列表和元组都是序列结构,两者都相似,但又有一些不同的地方。
b.从外形上看,列表和元组的区别是,列表使用方括号进行标记,如m=[0,2,4],而元素使用圆括号进行标记,如n=(6,8,10),但访问列表和元组中元素的方式都是一样的,如m[0]等于0,n[2]等于10等。因为容器的数据结构可以是任意类型,所以如下关于列表p的定义也是成立的。
//p是一个列表,列表的第1个元素是字符串'efg',第2个元素使列表[5,6,7],第3个元素是整型10
p=['efg',[5,6,7],10]
c.从功能上看,列表与元组的区别是,列表可以被修改,而元组不可以。例如,如果列表m=[0,2,4],那么语句m[0]=1会将列表m修改为[1,2,4],而对于元组n=(6,8,10),语句n[0]=1将会报错。需要注意的是,如果已经有一列表m,需要将m复制为列表n,那么使用n=m是无效的,这时n仅仅是m的别名(或引用),修改n的同时也会修改m。正确的复制方法应该是n=m[:]。
d.与列表有关的函数是list,与元组有关的函数是tuple,但list函数和tuple函数的用法和功能几乎一样,都是将某个对象转换为列表或元组,例如,lis('cd')的结果是['c','d'],tuple([0,1,2])的结果是(0,1,2)。一些常见的与列表或元组相关的函数如表2-1所示。
此外,列表作为对象,自带了很多实用的方法(元组不允许被修改,因此方法很少),如表2-2所示。
此外,列表还有"列表解析"这一功能。该功能能够简化列表内元素操作的代码。使用append()方法对列表元素进行操作,如代码清单2-3所示。
代码清单2-3 使用append()方法对列表元素进行操作
c=[1,2,3]
d=[]
for i in c:
d.append(i+1)
print(d)//输出结果为[2,3,4]
将代码清单2-3使用列表解析进行简化,如代码清单2-4所示。
c=[1,2,3]
d=[i+1 for i in c]
print(d) //输出结果也为[2,3,4]