Python—序列类型之元祖

序列类型

序列类型支持成员关系操作符(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(**)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值