站长在线零基础Python完全自学教程16:Python中的元组系列知识

核心提示欢迎你来到站长学堂,学习站长在线出品的在线课程《零基础 Python完全自学教程》今天给大家分享的是第16课《 Python中的元组系列知识》。本节课是一个大课,我分了这些知识点进行详细讲解:元组的创建和删除详解、访问元组元素详解、遍历元组

欢迎你来到站长学堂,学习站长在线出品的在线课程《零基础 Python完全自学教程》今天给大家分享的是第16课《 Python中的元组系列知识》。本节课是一个大课,我分了这些知识点进行详细讲解:元组的创建和删除详解、访问元组元素详解、遍历元组详解、修改元组详解、元组推导式详解及元组和列表的七大区别详解。

16.1、python中元组的创建和删除详解

温馨提示:本内容和前面所学的《Python中列表的创建和删除详解》内容基本一致,大家可以对照学习。

16.1.1、元组的概念:

我们可以回顾一下列表的概念:

列表是由一系列的特定顺序排列的元素。它是Python中内置的可变序列。在形式上,列表的所有元素都放在一对中括号“[]”里面,两个相邻的元素之间,使用英文逗号“,”隔开。在内容上,列表可以将整数、实数、字符串、列表、元组任何类型的元素放入列表中,并且同一列表中,元素的类型可以不同,因此他们之间没有任何关系。

元组是python中另一个重要的序列结构,与列表类似,也是有一系列按特定排列的元素组成。但是,它是不可变序列,因此元组也可以称之为不可变的列表。在形式上元组的所有元素都放在一对小括号“”中,相邻的元素之间使用英文逗号“,”分隔。在内容上,可以将整数、实数、字符串、列表、元组、字典、集合等任何类型的内容放入元组中,并且同一个元组中,元素的类型可以不同,因此他们之间没有任何关系。通常情况下,元组用于保存程序不可修改的内容。

从元组和列表的定义来看,这两种结构比较相似,但是他们之间的主要区别就是一个不可变序列,一个是可变序列。即元组中的元素不可以单独修改,而列表可以任意修改。

了解了什么是元组,接下来就讲讲创建元组的几个方法了:

16.1.2、在Python中使用赋值运算符“=”创建元组:

在Python中,创建元组可以使用赋值运算符“=”创建元组,右边是赋值,左边是变量。具体语法如下:

tuplename = 

其中,tuplename 表示元组的名称,可以是任何符合Python命名规则的标识符;element 1 , element 2 ,表示元组中的元素,这些元素的数量没有限制,内容上只要是Python中支持的数据类型如整数、实数、字符串、列表、元组都可以。

如下面的都是合法的元组:

shuzi = #数字shige =      #诗歌hunhe = ,["WEB开发","云计算","爬虫"])     #混合元组python = 

在 Python 中,元组通常都是使用一对小括号将所有元素包围起来的,但小括号不是必须的,只要将各元素用逗号隔开,Python 就会将其视为元组,请看下面的例子:

shige = "床前明月光","疑是地上霜","举头望明月","低头思故乡" print

在Python IDLE 中运行结果如下:

>>> 

当,创建的元组只有一个元素时,需要在元素的后面加“,”,如:

python = print

运行结果为:

>>> 

当,创建的元组只有一个元素时,元素的后面没有加“,”,被视为定义了一个字符串,如:

python = print

运行结果为:

优雅>>> 

温馨提示:在Python中的内置函数type可以检测变量的类型,代码如下:

python1 = python2 = print)print)

运行结果为:

python1的类型为: python2的类型为: >>> 

16.1.3、在Python中创建空的元组:

在Python中,是可以创建空的元组的,如创建一个空元组代码如下

kong = 

和空列表一样的原理,我们经常会用到空的元组。一般情况下,空元组用于为函数传递一个空的值,或者返回一个空的值。

16.1.4、在Python中使用tuple函数创建数值元组:

在Python中,可以使用tuple 函数直接将range函数循环出来的结果转换为元组。

我们先回顾一下range函数的使用方法:

range

各参数说明如下:

start:用于指定技术的起始值,可以省略。如果省略则从0开始。

end:用于指定计数的结束值,不能省略。结束值不包括该值,如range,则表示值为0~99。当range函数只有一个参数时,即表示指定计数的结束值。

step:用于指定步长,即两个数之间的间隔,可以省略。如果省略则表示步长为1。如range则表示值为1、2、3、4、5、6

tuple 函数用法如下:

tuple

其中,data表示可以转换为列表的数据,包括range对象、字符串、元组、或者其他可以迭代类型的数据。

如:创建一个0~20的所有偶数列表,可以使用以下代码:

tuple)

运行结果如下:

>>> 

注:使用tuple函数不仅可以通过range对象创建元组,还可以通过其他的函数对象创建元组。其他函数在后面慢慢会学到的。

16.1.5、在Python中使用del命令删除元组

在Python中,删除已经创建的元组是很简单的,使用 del 命令即可,语法格式如下:

del 元组名称

如:删除一个叫做 shige 的元组:

shige = del shige

但是,如果你删除的是一个不存在的元组,就会报错,如:

shige =  del sg

当然上面不管是定义了shige 还是没有定义shige 的元组,都是一样,删除sg元组都是不存在的,报错结果如下:

Traceback :  File "D:PythonPython310Doc000.py", line 2, in     del sgNameError: name 'sg' is not defined>>> 

实际开发中并不经常使用 del 来删除元组,因为 Python 自带的垃圾回收机制会自动销毁无用的元组,即使开发者不手动删除,Python 也会自动将其回收。

16.2、在Python中访问元组元素详解

16.2.1、使用print函数输出内容。

在Python中,如果将元组中的内容输出是比较简单的,使用print函数即可。

如:我们输出上个知识点的内容中的混合的hunhe元组,只要使用函数print即可

shuzi = #数字shige =      #诗歌hunhe = ,["WEB开发","云计算","爬虫"])     #混合元组python = printprint

执行结果如下:

, ['WEB开发', '云计算', '爬虫'])>>> 

经过对比,不是 输入的是 单引号、双引号、三引号 ,输出的都是 单引号。

通过上述的输出,我们发现,在输出元组时,包括了两侧的小括号的。

16.2.2、通过索引的方式访问元组元素。

元组是Python中另一个重要的序列结构,也是一个有序的集合,所以要访问元组中的任何元素,您只需要告诉Python元素的位置。要访问元组元素,首先指出元组的名称,然后指出元素在元组中的位置。

下面,我们来输出混合元组中的第3个和第2个元素,代码如下:

hunhe = ,["WEB开发","云计算","爬虫"])printprint

输出的结果为:

Python>>>

昨天的内容:

python1 = python2 = print)print)printprint

输出结果为:

python1的类型为: python2的类型为: 优雅>>> 

上面结果可以看出:在输出的单个元组时,也是包括小括号。如果是字符串,还不包括左右的引号。

在访问列表元素的时候,我们使用了索引的方法,但是没有讲到切片的方法访问列表元素。在这里,我们讲讲使用切片的方法访问元组。

16.2.3、通过切片的方式访问元组元素。

访问元组元素是可以使用切片的方法,访问元组元素的。

我们访问混合元组的前2个元素,代码为:

hunhe = ,["WEB开发","云计算","爬虫"])     #混合元组print

运行结果为:

>>> 

我们访问混合元组的后2个元素,代码为:

hunhe = ,["WEB开发","云计算","爬虫"])     #混合元组print

运行结果为:

, ['WEB开发', '云计算', '爬虫'])>>> 

我们访问混合元组的第2个到第3个元素,就会报错了,代码为:

hunhe = ,["WEB开发","云计算","爬虫"])     #混合元组print

运行结果为:

Traceback :  File "D:PythonPython310Doc000.py", line 2, in     printTypeError: tuple indices must be integers or slices, not tuple>>> 

实例:我们来输出每日一语。

import datetime      #导入日期时间类mot = day=datetime.datetime.now.weekday      #获取当前星期print#输出每日一语

说明:在上述代码中,datetime.datetime.now用于获取当前日期,weekday再则是从日期时间对象中获取星期,其值为0~6中的一个,0位星期一,6为星期日。

在2021年11月9日的运行结果为:

追求快速,反而死的很惨;有时候,慢也就是快!>>>

16.3、在Python中遍历元组详解

站长在线温馨提示:本节教程内容与《在Python中遍历列表详解》大体一致,大家可以对比学习。

我们先解释一下遍历的意思,遍就是全面,到处的意思,历就是行、游历的意思。所谓遍历就是全部走遍,到处周游的意思。

遍历元组就是从头到尾依次从元组中获取数据。

再次强调一下,元组是一种不可变的序列,不能单个修改某一个元素,但是遍历元组的每一个元素还是可以的。

在Python中,遍历元组的方法有很多种,下面介绍一些常用的遍历方法:

16.3.1、直接使用for循环遍历元组

直接使用for循环遍历元组,只能输出元素的值,语法格式如下:

for 变量元素 in 元组:   #输出变量元素

列如,定义Python的设计理念,然后通过for循环遍历该元组,并输出每条内容。代码如下:

printpython = for linian in python:    print

执行以后结果如下:

Python设计理念:优雅明确简单>>> 

16.3.2、使用for循环和enumerate函数遍历元组

使用for循环和enumerate函数可以实现同时输出索引值和元素内容,其语法格式如下:

for index,变量元素 in enumerate    #输出index和变量元素

例如,定义python的设计理念,然后通过for循环和enumerate函数遍历该元组,并输出索引和每条内容。代码如下:

printpython = for index,linian in enumerate:    print

执行结果如下:

Python设计理念:0 优雅1 明确2 简单>>> 

16.3.3、使用for循环和tuple函数遍历元组

例如,定义python的设计理念,然后通过for循环和tuple函数遍历该元组,并输出每条内容。代码如下:

printpython = for linian in tuple:    print

执行结果如下:

Python设计理念:优雅明确简单>>> 

16.3.4、使用for循环和range函数遍历元组

定义元组number 的元组,然后通过for循环和range函数遍历该元组,并输出每条内容。代码如下:

number = for i in range):    print

执行结果为:

0 11221 23662 44003 55774 8888>>> 

可以不带索引输出,代码为:

number = for i in range):    print

运行结果为:

11222366440055778888>>> 

我们把输出的结果,放在同一行,代码为:

number = for i in range):    print

执行结果为:

1122 2366 4400 5577 8888 >>> 

注意 range函数只能用于数字的元组,在非数字中就会报错了。

16.3.5、使用for循环和iter函数遍历元组

列如,定义python的设计理念,然后使用for循环和iter函数遍历该元组,并输出每条内容。代码如下:

printpython = for linian in iter:    print

输出结果如下:

Python设计理念:优雅明确简单>>> 

16.3.6、使用while循环遍历元组

定义,元组number 的元组,然后通过while循环遍历元组并输出每条内容。代码如下:

number = i = 0while i < len:    print    i = i + 1

运行结果如下:

11222366440055778888>>>

16.4、在python中修改元组详解

回顾一下Python中列表元素的更新,我们分了3节课程来分享,分别是添加列表元素、修改列表元素和删除列表元素。但是在元组中,就不能说添加元组元素、修改元组元素和删除元组元素了,因为元组是不可变的序列,也是一种不可变的列表。当然我们也可以尝试一下修改一个元组元素看看,有什么结果?

我们以Python的设计理念为例,我们来修改一个参数看看:

python = python[2] = "复杂"print

运行结果如下:

Traceback :  File "D:PythonPython310Doc000.py", line 2, in     python[2] = "复杂"TypeError: 'tuple' object does not support item assignment>>> 

翻译一下:“TypeError: 'tuple' object does not support item assignment”就是说:TypeError:“tuple”对象不支持项分配

也就是说在Python的元组是不可以单一修改元组元素的。那怎样才能修改元组呢?下面介绍两个方法:

16.4.1、在Python中直接使用赋值运算符“=”给元组重新赋值。

虽然说元组是不可变的序列,我们不能对单个元素的值进行修改,但是,这并不意味着,元组就完全不能修改了。我们可以对元组进行重新赋值:如:

python = python = print

执行结果如下:

新元组: >>> 

16.4.2、在Python中使用加赋值运算符“+”连接两个元组。如:

python = printpython = python + print

运行结果如下:

原元组: 新元组: >>> 

这里值得注意的是,这里是元组和元组之间相“+”是可以的。元组和其他类型就不行了,如:

python = python = python + ['网络爬虫','游戏开发','图形图像处理']      # 元组+列表print

运行结果如下‘:

Traceback :  File "D:PythonPython310Doc000.py", line 2, in     python = python + ['网络爬虫','游戏开发','图形图像处理']      # 元组+列表TypeError: can only concatenate tuple  to tuple>>> 

翻译一下:“TypeError: can only concatenate tuple to tuple”意思是:TypeError:只能将元组连接到元组。

同理,元组也不能和字符串相连接,如:

python = python = python + '网络爬虫'      # 元组+字符串print

运行结果:

Traceback :  File "D:PythonPython310Doc000.py", line 2, in     python = python + '网络爬虫'      # 元组+字符串TypeError: can only concatenate tuple  to tuple>>> 

翻译“TypeError: can only concatenate tuple to tuple”意思是:TypeError:只能将元组连接到元组。

在这里,还有一点要注意的是:如果元组中只有一个元素时,不要忘记加逗号哦,如:

python = python = python + print

运行结果为:

Traceback :  File "D:PythonPython310Doc000.py", line 2, in     python = python + TypeError: can only concatenate tuple  to tuple>>> 

不用翻译了吧,和上面一样的,当元组元素只有一个的时候,被视为字符串,但是加了“,”就被视为元组了哦!

python = python = python + print

运行结果如下:

>>>

16.5、Python中的元组推导式详解

我们在《python中的列表推导式详解》中学过,使用列表推导式可以快速生成一个新的列表,或者根据某个列表生成满足指定需求的列表。

生成指定范围的数值列表,语法格式如下:

list = [expression for var in range]

那么我们使用列表推导式的方法用于元组推导式行不行呢?

我们根据列表推导式的方法,把“[]”改成“”试一试:

tuple = 

我们也和列表推导式一样的内容:

a1 = ) #生成一个10以内的元组a2 =  if i % 2 == 0) #生成一个10以内的偶数元组printprint

运行结果如下:

 at 0x000001DC03E3C900> at 0x000001DC03DBBD10>>>> 

为什么是这样的,而不是下面这样我们想要的呢?

>>> 

从上面的执行结果可以看出,使用元组推导式生成的结果并不是一个元组,而是一个生成器对象,这一点和列表推导式是不同的。

那么怎样才能使用元组推导式获得新的元组呢?

下面讲解3个方法使用元组推导式获得新的元组:

16.5.1、在Python中使用 tuple 函数,可以直接将生成器对象转换成元组。

要使用该生成器对象,可以转换成元组或者列表。下面我们就上面的内容进行转换成元组和列表,代码如下:

a1 = ) #生成一个10以内的元组a2 =  if i % 2 == 0) #生成一个10以内的偶数元组print)     #转换为元组print)      #转换为列表

运行结果如下:

转换后的元组为: 转换后的列表为: [0, 2, 4, 6, 8]>>> 

16.5.2、在Python中直接使用 for 循环遍历生成器对象,可以获得各个元素。例如:

a = ) # 生成一个10以内的元组for i in a:  # for 循环遍历生成器对象    print# 输出元组元素在同一行显示,并且用“,”隔开print)     # 输出新元组

运行结果为:

0,1,2,3,4,5,6,7,8,9,>>> 

16.5.3、 在Python中使用 __next__方法遍历生成器对象,也可以获得各个元素。例如:

a = )    # 生成一个3以内的元组print)   # 输出第一个元素print)   # 输出第二个元素print)   # 输出第三个元素a = tuple   # 转换为元组print    # 输出新元组

运行结果为:

012转换后的元组: >>> 

通过上面for循环遍历生成器对象和__next__方法遍历生成器对象以后,如果还需要使用该生成器对象的话,都必须创建新的生成器对象才行,因为遍历以后,原来的生成器对象已经不存在了,输出的新元组为空。

16.6、python中元组和列表的七大区别详解

元组和列表都是属于序列,都是按照特定顺序储存的一组元素,都可以将整数、实数、字符串、列表、元组、字典、集合等任何类型的内容。创建和删除的方法也是一样。

列表和元组之间还是有区别的,下面站长在线整理了它们之间的7大区别:

16.6.1、列表是动态的,属于可变序列,它的元素可以随时增加、修改或者删除,而元组是静态的,属于不可变序列,无法增加、删除、修改元素,除非整体替换。

16.6.2、列表可以使用append、extend、insert、remove和pop等方法实现添加和修改列表元素,而元组则没有这几个方法,因为不能向元组中添加和修改元素。同样,也不能删除元素,可以整体替换。

16.6.3、列表可以使用切片访问和修改列表中的元素。元组也支持切片,但是它只支持通过切片访问元组中的元素,不支持修改。

16.6.4、元组比列表的访问和处理速度快。所以如果只需要对其中的元素进行访问,而不进行任何修改,建议使用元组而不使用列表。

16.6.5、因为列表可以修改,元组不可以修改,因此元组比列表具有更高的安全性。

16.6.6、列表不能作为字典的键,而元组可以。

16.6.7、存储方式不同:空列表 比空元组多占用16个字节。

>>> lista = []>>> lista.__sizeof__40>>> tuplea = >>> tuplea.__sizeof__24>>>

相关阅读:

《零基础Python完全自学教程》目录

1、认识python

2、安装python及写第一个Python程序

3、Python开发工具介绍

4、Python语法特点

5、Python中的变量

6、Python中的基本数据类型

7、Python中的基本输入和输出

8、Python中常用的运算符

9、Python中运算符的优先级和条件表达式

10、Python中的三大程序结构

11、Python中的选择语句

12、Python中的循环语句

13、Python中的break语句、continue语句和pass语句

14、Python中的序列知识详解

15、Python中的列表

 
友情链接
鄂ICP备19019357号-22