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(**)

 

Python 中的序列类型是一种有序的数据集合,其中每个元素都有其对应的位置索引。常见的内置序列类型包括字符串 (`str`)、列表 (`list`) 和元组 (`tuple`) 等。它们支持一系列通用的操作方法,如切片 (slice)、连接 (+)、成员测试 (in),以及通过整数下标访问等特性。 --- ### **一、主要特点** 以下是 Python 序列类型的几个关键属性: 1. **顺序性**: 每个值都按一定次序排列存储; 2. **可迭代性**: 可以直接用于循环遍历操作; 3. **索引访问**: 元素可通过正向或负向索引来引用; 4. **长度计算**: 内置函数 `len()` 返回该序列包含多少个项目。 --- ### **二、常见序列类型详解** #### 1. 字符串 (String) 由字符组成的不可变数据集。一旦创建就不能更改内容。 ```python s = "hello world" print(s[0]) # 输出 h print(len(s)) # 输出 11 ``` ##### 特殊性质: - 支持大小写字母转换、分割等功能; - 不允许对单个位置赋新值,例如 `s[0] = 'H'` 将引发错误。 #### 2. 列表 (List) 动态数组,内部保存任意种类的对象,可以修改增删改查非常方便。 ```python lst = [1, "apple", 3.14] print(lst[-1]) # 访问最后一个元素 -> 3.14 lst.append(5) # 添加新的数字到队尾 del lst[1] # 删除第二个成员即苹果字符串 ``` ##### 主要功能: - 易于调整尺寸和更新组成成分; - 提供丰富的内置工具比如排序(`sort()`)、反转(`reverse()`)等等。 #### 3. 元组 (Tuple) 类似于列表但是一旦初始化就不容许改变。适用于保护原始数据防止意外篡改的情况之下使用。 ```python tup = ("a", 99, False) print(tup[:2]) # 获取前两个项目 ('a', 99) try: tup[1] = 88 # 这一行会产生 TypeError 异常因为元祖不允许重新分配项 except Exception as e: print(e) ``` ##### 使用场合: - 表达固定不变的信息组合体; - 函数返回多个结果时常用格式之一。 --- ### **三、共享行为与专属能力** 虽然上述三种均为标准意义上的序列对象却各自具备独特的优势领域之外也存在共通之处: - ### **公共协议** 所有的序列均遵循统一的基本交互规范使得开发者能够无缝切换不同类型间的运用方式 - ### **专用增强** 根据自身定位的不同还额外携带一些专精化技能如字符串特化的模式匹配搜索替换功能;列表侧重性能优越的数据堆叠弹出服务;而元组专注于高效稳定的记录再现角色扮演。 --- ### 四、总结表格 | 类型名称 | 数据是否可变 | 示例 | |----------------|------------------------|------------------------------------| | str | 否 | `"abc"` | | list | 是 | `[1,"x",True]` | | tuple | 否 | `(4,7)` | 这种多样性让程序员可以根据实际应用场景选择最适合解决问题的那个容器样式从而使整个系统既简洁又强大。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值