Python学习入门教程(11)—序列和元组

(本号正在连续推出以Python官网文档为主线的系统学习Python的系列文章或视频,感兴趣的朋友们欢迎搜索关注。本文及后续文章如无特别声明均以Windows平台作为演示平台,Python版本为:3.8.1)


此前我们已经介绍的列表和字符串都属于序列数据类型。它们具有许多共同的特性,例如能够索引和切片等。这些特性在序列数据类型的所有子类型中的含义和用法是一致的。在之前介绍了形如a[i:j]的切片表示形式,其实切片的完整表示形式是a[i:j:k],前者是后者k=1时的略写形式。 切片的完整形式表示的意思是:在序列a中从索引i(包括)开始到索引j(不包括)按步长k依次取出元素形成的序列。切片的完整形式在下边将使用到。需要强调的是:序列数据类型的索引是从0开始的,也就是序列数据类型的第一个元素的索引为0,第二个为1,以此类推。

对本文下面表格中将用到的标示符说明如下: s是一个可变序列类型的实例,t是任何可迭代的对象,x是满足s限制的任何类型和值的任意对象(例如,bytearray只接受满足0 <= x <= 255的整数)。i,j,k为大于等于0的整数,其大小关系由其使用上下文决定。

序列数据类型

序列数据类型支持的通用操作序列数据类型的子类型都会支持如下操作:

Python学习入门教程(11)—序列和元组

【表】序列数据类型支持的通用操作

序列数据类型的分类Pyhton的序列数据类型按其元素直接引用的对象集合是否可改变分为两类:

不可变序列数据类型不可变序列数据类型的对象一旦创建,其直接引用的对象集合就不能改变了。如果不可变序列数据类型的对象包含对其他对象的引用,这些其他对象可以为可变的对象,并可以被更改。除了没有实现对内置hash()的支持外,可变序列数据类型实现了不可变序列数据类型通常所支持的所有操作。由于支持hash(),不可变的序列的实例(例如tuple实例)可被用作dict键并存储在set和frozenset实例中。尝试哈希包含不可哈希的不可变序列将导致TypeError。目前Python内置的不可变序列数据类型的子类型有:字符串,元组,字节。字符串在前面的文章的已经介绍过,元组将在本文随后介绍,字节将在后继文章中介绍。可变序列数据类型可变序列数据类型的对象在创建之后,其直接引用的对象集合是可以改变的。目前Python内置的可变序列数据类型的子类型有:列表和字节数组。下表列出了可变序列数据类型支持的操作:

Python学习入门教程(11)—序列和元组

【表】可变序列数据类型支持的操作

【注】Python是不断演进的语言,其他的序列数据类型在以后可能会加入。

元组的定义及使用

元组是不可变序列数据类型,其支持上面列出的序列的所有通用操作和不可变序列支持的操作。元组是由一些逗号分隔的值组成的,这些值可以为不同类型。定义方式形如:t=elem1,ele2,elem3或t=(elem1,ele2,elem3)。示例如下:

Python学习入门教程(11)—序列和元组

【示例】元组的定义及使用


【结束】


Python学习入门教程(11)—序列和元组


分享到:


相關文章: