ython指南:组合数据类型腾讯云开发者社区

本章我们将学习如何使用Python的组合数据类型将数据项集合在一起,以便在程序设计时有更多的选项。

组合数据类型

Python提供了5中内置的序列类型:bytearray、bytes、list、str与tuple,序列类型支持成员关系操作符(in)、大小计算函数(len())、分片([]),并且是可可迭代的。

元组是个有序序列,包含0个或多个对象引用,使用小括号包裹。元组是固定的,不能替换或删除其中包含的任意数据项。

使用()创建一个元组:

也可以使用tuple()创建一个元组:

语法

描述

tup[1]

读取第二个元素

tup[-2]

反向读取;读取倒数第二个元素

tup[1:]

截取元素

元组只提供两种方法:

语法

描述

返回对象x在元祖t中出现的次数

返回对象x在元组t中出现的最左边位置

与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组。

语法

描述

len(t)

返回元组t中元素个数

连接

复制

in

元素是否存

for … in …:

迭代

比较运算符<、<=、>、>=、==、!=

逐项进行比较

元组中的元素值是不允许删除的,但我们可以使用del删除整个元组:

当元组出现在二进制操作符的左边或出现在unary语句的右边时,可以不使用圆括号。

命名的元组(namedtuple)与普通元组一样,有相同的表现特征,其添加的功能就是可以根据名称引用元组中的项。

collections模块提供了namedtuple()函数,用于创建自定义的元组数据类型。该函数的第一个参数是想要创建的自定义元组数据类型的名称,第二个参数是一个字符串,其中包含使用空格分隔的名称,每个名称代表该元祖数据类型中的一项。该函数返回一个自定义的类,可用于创建命名的元组。

这里我们创建了包含两个Sale项的列表,我们可以使用索引位置来引用元组中的项,也可以使用名称进行引用,后者正式命名的元组的特点:

列表是包含0个或多个对象引用的有序序列,支持与字符串以及元组一样的分片与步距语法,列表是可变的,因此我们可以对列表中的项进行删除或替换,插入、替换或删除列表中的分片也是可能的。

使用[]创建一个元组:

也可以使用list()创建一个列表:

语法

描述

lst[1]

读取第二个元素

lst[-2]

反向读取;读取倒数第二个元素

lst[1:]

截取元素

下表中,L为列表。

语法

描述

将数据项x追加到L的末尾

统计元素x在L中出现的次数

将iterable m的项追加到L的末尾

返回数据项x在L中(或L的start: end分片中)最左边出现的索引位置,如果没找到x,则产生ValueError异常

在索引位置i处插入元素x

移除L最右边的数据项,并返回该元素的值

移除L索引位置i处的数据项,并返回该元素的值

从L中移除最左边的数据项x,如果没找到x产生ValueError异常

对L进行反转

对L进行排序,与内置的sorted()函数一样,可以接受可选的key与reverse参数

任意可迭代的(列表、元组等)数据类型都可以使用序列拆分操作符进行拆分,即*。用于赋值操作符左边的两个或多个变量时,其中一个使用*进行引导,数据项将赋值给该变量,而所有剩下的数据项将给带星号的变量。

由于列表是可变的,我们可以对其数据项进行删除。

列表内涵是一个表达式,也是一个循环,该循环有一个可选的、包含在方括号中的条件,作用是为列表生成数据项,并且可以使用条件过滤掉不需要的数据项,可以使用表达式,也可以使用附加条件。常见语法:

在没有列表内涵时,我们找出1900~1940年之间所有的闰年,可能会这么写:

学习了列表内涵之后我们可以简化程序:

两种方法等效,得到同样的结果。

set也是一种组合数据类型,支持成员关系操作符(in)、对象大小计算操作符(len()),并且也是iterable。Python提供了两种内置的集合类型:可变的set类型,固定的frozenset类型。进行迭代时,集合类型以任意顺序提供其数据项。

只有可哈希运算的对象可以添加到集合中。所有的内置固定数据类型(比如float、frozenset、int、str、tuple)都是可哈希运算的,可以添加到集合中。内置的可变数据类型(比如dict、list、set)都不是可哈希运算的,不能添加到集合中。

集合是0个或多个对象引用的无序组合。集合是可变的,因此可以很容易的添加和移除数据项,但是由于其中的项是无序的,因此没有索引位置的概念,也不能分片或按步距分片。

使用set()创建一个集合:

集合中包含的每个数据项都是独一无二的——添加重复的数据项固然不会引发问题,但是也毫无意义。比如,下面产生的三个集合是一样的:set('apple')、set('aple')、{‘e', 'p', 'l', 'a'}。鉴于此,集合常用于删除重复的数据项。比如,x是一个字符串列表,在执行x=list(set(x))之后,x中的每个字符串都是独一无二的,存放顺序是任意的。

s、t为集合,x为数据项。

语法

描述

将x添加到s中——如果s中尚未包含x

清空s

返回s的浅拷贝

返回一个新集合,其中包含在s中但不在t中的所有数据项

移除每一个在t中但不在s中的项

如果x在s中,则移除x

返回一个新集合,其中包含所有同时包含在s和t中的数据项

使得s包含自身与t的交集

如果s与t没有相同的项,返回True

如果s与t相同,或s是t的子集,返回True;使用s<t可以测试s是否是t的真子集

如果s与t相同,或s是t的超集,返回True

返回并移除s中的一个随机项,如果s为空,就产生一个KeyError

从s中移除x,如果s中不包含x,就产生KeyError

返回一个新集合,其中包含s与t中的每个数据项,但不包含同时在这两个集合中的数据项

使得s只包含其自身与t的对称差

返回一个新集合,其中包含集合s中的所有数据项以及在t中而不在s中的数据项

将t中每个s中不包含的数据项添加到集合s中

除了调用set()创建集合,或使用集合字面值创建集合外,我们可以使用集合内涵创建集合。集合内涵是一个表达式,也是一个带有可选条件的循环,支持的语法:

固定集合是指那种一旦创建就不能修改的集合,只能使用frozenset数据类型函数创建,不带参数调用时,frozenset()返回一个空的固定集合,带一个frozenset参数时,将返回改参数的 浅拷贝,对于任何其他类型的参数,都尝试将给定的对象转换为一个forzenset。

dict是一种无序的组合数据类型,其中包含0个或多个键-值对。

可以使用{}创建:

也可以使用dict()函数创建:

字典的键值是独一无二的,因此,如果向字典中添加一个已存在的键值项,实际效果是新值替换旧值。

d为字典

语法

描述

移除d中所有项

返回d的浅拷贝

返回一个dict,该字典的键为序列s中的项,值为None或V

返回键k关联的值,如果d中不存在k则返回None

返回键k关联的值,如果d中不存在k则返回v

返回d中所有(key, value)对的视图

返回d中所有键的视图

返回键k的关联值,并移除键为k的项,如果k不包含在d中就产生KeyError

返回键k的关联值,并移除键为k的项,如果k不包含在d中就返回v

返回并移除d中任意一个(key, value)对,如果d为空就产生KeyError

将a中每一个尚未包含在d中的(key, value)对添加到d中,对同时包含在d与a中的每个键,使用a中对应的值替换d中对应的值——a可以是字典,也可以是(key, value)对的一个iterable或关键字参数

返回d的所有值的视图

上面提到了“视图”概念,其相对于通常的iterables有两个不同点:

注:两种通过键取值方式的比较

字典内涵是一个表达式,也是一个循环,该循环带有一个可选条件。语法:

例:

默认字典也是一种字典——这种字典包含普通字典所提供的所有操作符与方法,与其不同的是可以对遗失的键进行处理。

创建默认字典时,我们可以传入一个工厂函数,这样就会为遗失的键创建默认值。看下面例子

上面我们创建的默认字典words永远不会产生KeyError异常,如果遇到没有的键,其值通过工厂函数(int())设置为0。

可以看出我们通过二元组列表创建有序字典后,获取去键视图也为有序的。

iterable数据类型每次返回其中的一个数据项。任意包含__iter__() 方法的对象或任意序列(也即包含__getitem__()方法的对象)都是一个iterable,并可以提供一个迭代子。迭代子是一个对象,该对象可以提供__next__()方法,该方法依次返回每个相继的数据项,并在没有数据项时产生StopIteration异常。

常见的迭代操作符与函数(s与t为序列):

语法

描述

s+t

返回一个序列,该序列是s与t的连接

s*n

返回一个序列,该序列是s的n个副本的连接

x in i

如果x出现在iterable i中,返回True

all(i)

如果iterable i中的每一项都评估为True,就返回True

any(i)

如果iterable i中的任意项评估为True,就返回True

emumerate(i, start)

通常用于for… in 循环中,提供一个(index, item)元组序列,其中索引其实值为0或start

len(x)

返回x的“长度”

max(i, key)

返回iterable i中的最大的项,如果给定的是key函数,就返回key(item)值的最大项

min(i, key)

返回iterable i中的最小的项,如果给定的是key函数,就返回key(item)值的最小项

range(start, stop, step)

返回一个整数迭代子,使用一个参数(stop)时,迭代子的取值范围从0到stop-1;使用两个参数(start与stop)时,迭代子取值范围从start到stop-1;使用三个参数时,迭代子取值范围从start到stop-1,每两个值之间间隔step

reversed(i)

返回一个迭代子,该迭代子以反序从迭代子i中的返回项

sorted(i, key, reverse)

以排序后顺序从迭代子i返回项,key用于提供DSU(修饰、排序、反修饰)排序,如果reverse为True,则排序以反序进行

sum(i, start)

返回iterable i中项的和,加上start(默认为0),i可以包含字符串

zip(i1, …, iN)

返回元组的迭代子,使用迭代子i1到iN

数据项返回的顺序依赖于底层的iterable。对列表和元组等情况,数据项的返回值通常从第一个数据项开始依次返回,而对于字典与集合,迭代子是任意顺序的返回项。

由于数据片总是曲子某个数据项的一个单独副本,所以获取一个列表的副本可以通过下面方式:

在以上各种组合数据类型创建的时候,提到可以使用工厂方法来创建一个组合数据类型的副本:

注意:以上的复制都是浅拷贝,也就是说,复制的只是对象引用而非对象本身。对于固定数据类型(数字、字符串等),这与复制的效果是相同的,但对于可变的数据类型,比如嵌套的组合类型,这意味着相关对象同时被原来的组合与复制得来的组合引用。请看下面代码:

从输出结果可以看出,前两项固定数据类型并没有同时改变,而列表中的列表同时变化,说明x与y的第三项都指向的同一列表的引用。我们可以使用深拷贝来避免此类问题:

THE END
0.Python数据类型详解:这12个类型你都知道吗?python数据类型有哪些在Python中,数据类型是编程的基石,它们定义了可以操作的数据的种类。Python是一种动态类型语言,意味着你不需要显式地声明变量的类型;Python解释器会自动推断出变量所存储数据的类型。Python提供了多种内置数据类型,这里将详细介绍12个常见的数据类型,并附上相应的示例代码。 CSDN大礼包:[《2024年最新全套学习资料包》免费分享] 1.jvzquC41dnuh0lxfp0tfv87523e8:9>84;;0c{ykenk0fnyckny03=7485>14
1.Python基础:基本数据类型python数据类型3 列表类型(序列) 4 字典类型 Python语言包括九种基本的数据类型,我们把它分为以下三类。 一、数值类型 1 整数类型 与数学中的整数含义相同,无取值范围; 整数包括二进制、八进制、十进制、十六进制等4种表示形式; 二进制:以0b或0B开头:0b1101,-0B10; jvzquC41dnuh0lxfp0tfv87723e:4=>;;:;0c{ykenk0fnyckny03>5329?58
2.Python变量与数据类型全解析(最新整理)python文章介绍Python变量作为数据载体,命名需遵循字母数字下划线规则,不可数字开头,大小写敏感,避免关键字,本文给大家介绍Python变量与数据类型全解析,感兴趣的朋友一起看看吧+ 目录 1、变量 变量是数据的载体,简单的说就是一块用来保存数据的内存空间,变量的值可以被读取和修改,这是所有运算和控制的基础。 变量命名规范 jvzquC41yy}/lk:30pku1y~vjqt05=8;58mll7mvo
3.Python掌握并熟悉列表元祖字典集合数据类型Python | 掌握并熟悉列表、元祖、字典、集合数据类型 一天一个关于测试知识点,5分钟内讲解你最关心的软件测试问题,今天就接着来谈谈关于软件测试中的“掌握并熟悉列表、元祖、字典、集合数据类型”。 序列对象( sequence ) "序列”是程序设计中经常用到的数据存储方式。在其他程序设计语言中,"序列”通常被称为”jvzq<84yyy4dj~fpuktgq7hqo1ou|r}wp17:4;3jvor
4.3.数据模型—Python3.10.2文档对象 是Python 中对数据的抽象。 Python 程序中的所有数据都是由对象或对象间关系来表示的。 (从某种意义上说,按照冯·诺依曼的“存储程序计算机”模型,代码本身也是由对象来表示的。) 每个对象都有各自的编号、类型和值。一个对象被创建后,它的 编号 就绝不会改变;你可以将其理解为该对象在内存中的地址。 'jvzq<84uvwjz0‚fnk0kew7hp1rujxsjgnv0tnkgtgtdg8icvcspfnq0jvsm
5.《数据结构与算法(Python版)》课程教学大纲5. 通过Python语言的学习和实践培养精益求精的“工匠精神”,提升专业自信和职业素养。 2 教学方法:讲授法、演示法、案例法、讨论法、练习法等。 学生任务: 1. Python语言环境安装及使用。 2. Python语言的基本结构。 第三部分 Python数据类型 3.1 常量、变量和表达式 3.2 Python的基本数据类型 3.3 运算符与表达式jvzquC41eqy/lry0gf{/ew4kphu0397714>:67mvo
6.二python中五种常用的数据类型pengli二、python 中五种常用的数据类型 “python基础系列”目录: python 基础(一)-基础语法 python 基础(二)- 五种常用的数据类型 python 基础(三)- python函数详解 python 基础(四)- 面相对象1 python 基础(五)- 面相对象2 python 基础(六)- 异常处理、日志打印、文件操作jvzquC41yy}/ewgnqiy/exr1nrjfdxpg1r524@<556
7.3.Python基础:基本数据类型(九种数据类型)python数据类型本文详细介绍了Python中的九种基本数据类型,包括数值类型(整数、浮点数、复数)、字符串类型、字节串类型及组合类型(集合、元组、列表、字典)。针对每种类型的特点、定义方式、使用方法及其操作进行了详尽的解析。 该文章已生成可运行项目,预览并下载项目源码 jvzquC41dnuh0lxfp0tfv8|gkzooa=9;62:9:8ftvkimg8igvcomu86375<5;<8
8.Python数据类型详解:这7个类型你都知道吗?python数据类型有哪些在Python中,数据类型是编程的基础。Python提供了多种数据类型,用于存储和操作数据。以下是Python中常见的7种数据类型,以及它们的简要介绍和代码示例。 CSDN大礼包:《2024年最新全套学习资料包》免费分享 1. 数字类型 (Numeric Types) 1.1 整型 (int) 整型用于存储整数。 jvzquC41dnuh0lxfp0tfv87523e8:9>84;;0c{ykenk0fnyckny03=9895?69
9.简单介绍Python中的几种数据类型pythonPython中的字符串有两种数据类型:str类型和unicode类型。str类型采用的ASCII编码,也就是说它无法表示中文。unicode类型采用unicode编码,能够表示任意字符,包括中文及其它语言。并且python中不存在像c语言中的char类型,就算是单个字符也是字符串类型。字符串默认采用的ASCII编码,如果要显示声明为unicode类型的话,需要在字符串jvzquC41yy}/lk:30pku1jwvkerf1@<5734ivv
10.Python基本数据类型详细介绍python在Python中,None、任何数值类型中的0、空字符串“”、空元组()、空列表[]、空字典{}都被当作False,还有自定义类型,如果实现了__nonzero__()或__len__()方法且方法返回0或False,则其实例也被当作False,其他对象均为True 布尔值和布尔代数的表示完全一致,一个布尔值只有True、False两种值,要么是True,要么是jvzquC41yy}/lk:30pku1jwvkerf1=<;944ivv
11.Python中的数据类型转换AiniIT琦玉有时候,我们需要对数据内置的类型进行转换,数据类型的转换,一般情况下你只需要将数据类型作为函数名即可。 Python 数据类型转换可以分为两种: 隐式类型转换 - 自动完成 显式类型转换 - 需要使用类型函数来转换 (一)隐式类型转换 在隐式类型转换中,Python 会自动将一种数据类型转换为另一种数据类型,不需要我们去干jvzquC41yy}/ewgnqiy/exr1Cpojy~~cp1v03@=725?90qyon
12.Python的五个标准数据类型你认识几个python这篇文章主要为大家详细介绍了Python标准数据类型,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助+ 目录 Python的五个标准数据类型数字 字符串 列表 元组 字典一、数字不可变数据类型,存储值为数值1.创建对象,分配数值jvzquC41yy}/lk:30pku1jwvkerf1;8;849/j}r
13.pythonint什么意思Python教程Python中的int表示整数数据类型,用于存储没有小数部分的数字。它是Python中唯一支持绝对值的数值类型。 int的数据类型 int数据类型可以存储任意范围的整数,受计算机内存限制。Python使用两种表示方式: 32位整数(int):范围从 -2^31 (-2,147,483,648) 到 2^31-1 (2,147,483,647) jvzquC41yy}/rqu0ep5gcz4:46>5;7mvon
14.Python7种最常用数据类型,初学者新手必看!在Python编程的世界里,数据类型是构建程序大厦的基石。掌握Python的常用数据类型,能帮助你更高效地处理数据和编写代码。 今天,我们就来详细探讨Python中的7种常用数据类型:整数(Integer)、浮点数(Float)、字符串(String)、布尔值(Boolean)、列表(List)、元组(Tuple)和字典(Dictionary)。 jvzquC41dnuh0lxfp0tfv8r2a9;18@=621gsvrhng1jfvjnnu17579<:43=
15.Python基础篇Python中的七种数据类型python数据类型7.2 类型比较 前导 Python中的数据类型主要有:Number(数字)、Boolean(布尔)、String(字符串)、List(列表)、Tuple(元组)、Dictionary(字典)、Set(集合)。 其中又分为可变数据类型和不可变数据类型,可变数据类型是指可以随着函数的执行发生变化,而不可变数据类型不可以改变 jvzquC41dnuh0lxfp0tfv8vsa6:84<<951gsvrhng1jfvjnnu173:?<;79=
16.python基础九大数据类型汇总超详细python基本数据类型扩展:字符串是在编程中广泛使用的数据类型,对于文本处理和字符串操作非常重要。掌握字符串的操作方法,能够更方便地处理和操作文本数据。 五、空(None)类型 在Python中,空类型是指表示没有值或没有内容的特殊类型。Python中的空类型有两种,分别是None和空值。 以下是关于Python空类型的详细讲解: 1.None类型:None是PjvzquC41dnuh0lxfp0tfv8|gkzooa?9338>258ftvkimg8igvcomu8653:;95;>
17.Python基础详解:数据类型(DataTypes)——程序的“数据基石”在Python编程中,数据类型决定了: 数据的存储方式 可以对数据执行的操作 数据的取值范围 不同类型之间的运算规则 理解数据类型是编写正确、高效程序的基础。Python 是动态类型语言,虽然你不需要显式声明类型,但必须清楚每个变量的类型及其行为。 二、Python 内置核心数据类型概览 jvzquC41dnuh0lxfp0tfv8NegaeDcr4ctvodnn4fgvgjn|437262;A=6
18.Python变量和数据类型详解python这篇文章主要介绍了Python变量和数据类型,是Python学习当中的基础知识,需要的朋友可以参考下,希望能够给你带来帮助+ 目录1.Python变量和数据类型1.1Python基础数据类型整数二进制数只使用数字0、1表示,在Python中,二进制整数使用前缀0b表示,比如:0b0110,0b1100。jvzquC41yy}/lk:30pku1jwvkerf1;78476/j}r
19.Python的数据类型与结构python中的数据类型和数据结构Python的数据类型与结构 本文详细介绍了Python3的六个标准数据类型,包括数字、字符串、列表、元组、集合和字典。阐述了各类型的特点、操作方法,如数字类型转换、运算,字符串的访问与格式化,列表的增删改查等,还提及了不同类型在Python2和Python3中的差异。jvzquC41dnuh0lxfp0tfv8vsa5693>7591gsvrhng1jfvjnnu1?16@;396
20.Python数据类型深入解析从基础到高级应用全掌握Python作为一门强大的动态编程语言,其核心优势之一在于拥有丰富而灵活的内置数据类型。这些数据类型不仅是构建程序的基石,也直接影响着代码的性能和可读性。从简单的数值和字符串到复杂的集合和二进制序列,Python的数据类型系统在提供易用性的同时,也隐藏着许多值得深入探索的技术细节。掌握这些数据类型的特性和内部机制,jvzquC41dnuh0lxfp0tfv8qck{{`t‚fp1cxuklqg1fkucrqu13;39?<4:3