1. 元组tuple
元组只提供两种方法:t.count(x),返回对象x在元组中出现的次数;t.index(x),返回对象x在元组中出现的最左边的位置。
此外元组也可以使用+(连接)、*(复制)、[ ](分片)、in/not in(成员关系测试)等操作符,还可以使用+=和*=运算,这时候实际上不是对原有的元组进行改变,而是创建了新的元组进行赋值。
元组还可以使用比较操作符进行比较(<、<=、==、!=、>=、>),这种比较实际上是逐项进行的,如果有嵌套项,要递归处理。
2. 命名的元组
collections模块提供了namedtuple()函数,该函数用于创建自定义的元组类型,注意这个函数创建的是元组类型,而不是实际的元组对象。
namedtuple()的第一个参数是想要创建的元组类型的名称,第二个参数是一个字符串,其中包含使用空格分隔的名称,每个名称代表这个元组中的一项。这样的名称就像是属性名,可以使用点操作符“.”来进行访问。这个函数返回的是一个类。例如:
>>> import collections
>>> Sale = collections.namedtuple("Sale", "Productid customerid date quantity price")
>>> sales = []
>>> sales.append(Sale(432, 921, "2008-09-14", 3, 7.99))
>>> sales.append(Sale(419, 874, "2008-09-15", 1, 18.49))
>>> sales[0].date
'2008-09-14'
3. 列表list
列表是可变的。同元组一样可以使用比较操作符进行比较。
列表的元组等的可迭代数据类型都可以使用拆分操作符进行拆分,即*。
列表可以使用del操作符删除项,实际的操作是解除对象引用到对象的绑定,并删除对象引用。
使用list.append()方法可以把新的数据项添加到列表的末尾。使用list.insert()方法可以把新的数据项添加到列表的任意的索引位置:list[2:2] = "pint"等价于list.insert(2, "pint")。
新一个列表赋值给原列表的分片,可以用新的列表来替换原列表的分片。
用list.pop()方法可以删除列表的最后一项,如果里面带有参数,则删除参数位置处的列表项。
用list.remove()方法可以删除指定数据项,其参数是一个数据项,这个数据项必须是列表中有的,否则会产生异常。
另外还可以用del来删除某个数据项。
列表还可以使用list.reverse()和list.sort()进行反转和排序。
列表内涵
列表内涵是一个表达式,也是一个循环,该循环有一个可选的、包括在方括号中条件,作用是为列表生成数据项,并且可以使用条件过滤掉不需要的数据项。列表内涵最简单的形式如下:
[item for item in iteralbe]
上面的语句将返回一个列表,其中包含iteralbe的每个数据项,在语义上与list(iteralbe)是一致的。
下面是两个常见的列表内涵语法格式:
[expression for item in iteralbe]
[expression for item in iteralbe if condition]