序列类型
序列类型支持成员关系操作符(in)、大小计算函数(len())、分片([])并且是可以迭代的
Python提供了5种内置的序列类型:bytearray、bytes、list、str和tuple,还提供了其他一些序列类型,最值得注意的是collections.namedtuple
元组
元组是个有序的序列,其中包含0个或多个对象引用
元组不能替换或删除其中包含的任意数据项
函数
tuple() #可以将列表转换为元组,不指定参数时将返回一个空元组
list() #可以将元组转换为列表
方法
t.count(x) #返回对象x在元组中出现的次数
t.index(x) #返回对象在元组t中出现的最左边位置,在元组中不包含x时,则产生ValueError异常
元组可以使用操作符:+(连接)、*(赋值)与[](分片),也可以使用in与not in来测试成员关系
元组是固定对象,使用增强的赋值运算符(+=和*=)将创建新元组
元组可以使用标准的比较操作符(<、<=、==、!=、>=、>)
>>>hair = "black", "brown", "blonde", "red"
>>>hair[:2], "gray", hair[2:]
(('black', 'brown'), 'gray', ('blonde', 'red'))
>>>hair[:2] + ("gray",) + hair[2:] #要构成一个一元组,逗号是必需的,没有逗号将产生TypeError异常,必须同时使用逗号与圆括号
('black', 'brown', 'gray', 'blonde', 'red')
当元组出现在二进制操作符的左边时,或出现在unary语句的右边时,不需要使用圆括号
>>>a, b = (1, 2) #在二进制操作符的左边
>>>del a, b #在unary语句的右边
>>>def f(x):
return x, x ** x #在unary语句的右边
>>>for x, y in ((1, 1), (2, 4), (3, 9)): #在二进制操作符的左边
print(x, y)
组合类型可以使用嵌套来创建,而不需要格式化处理
>>>eyes = ("brown", "hazel", "amber", "green", "blue", "gray")
>>>colors = (hari,eyes)
>>>colors[1][3:-1]
('green', 'blue')
>>>things = (1, -7.5, ("pea", (5, "Xyz"), "queue"))
>>>things[2][1][1][2]
'z'
元组可以存放任意数据类型的任意项,包括组合类型,比如元组与列表
>>>MANUFACTURER, MODEL, SEATING = (0, 1, 2)
>>>MINIMUM, MAXIMUM = (0, 1)
>>>aircraft = ("Airbus", "A320-200", (100, 220))
>>>aircraft[SEATING][MAXIMUM]
220
命名的元组
collections模块
collections.namedtuple(x, y) #x——想要创建的自定义元组数据类型的名称,y——字符串,其中存在空格分隔的名称,每个名称代表该元组数据类型的一项
>>>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));
>>>total = 0;
>>>for sale in sales:
total += sale.quantity * sale.price;
>>>print("Total ${0:2f}".format(total)) # prints: Total $42.46
>>>Aircraft = collection.namedtuple("Aircraft", "manufacturer model seating");
>>>Seating = collections.namedtuple("Seationg", "minimum maximum");
>>>aircraft.seating.maximum
220
>>>print("{0}{1}".format(aircraft.manufacturer, aircraft.model));
Airbus A320-200
私有方法
namedtuple._asdict() #返回键-值对的映射,其中每个键都是元组元素的名称,值则是对应的值
>>>"{manufacture}{model}".format(**)