Python教程:Python中的元组推导式详解

    时间: 浏览:1908次  来源:站长在线 
欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python中的元组推导式详解》。本知识点主要内容有:使用 tuple() 函数,可以直接将生成器对象转换成元组、直接使用 for 循环遍历生成器对象,可以获得各个元素、使用 __next__()方法遍历生成器对象,也可以获得各个元素。

欢迎你来到站长在线的站长学堂学习python知识,本文学习的是《Python中的元组推导式详解》。本知识点主要内容有:使用 tuple() 函数,可以直接将生成器对象转换成元组、直接使用 for 循环遍历生成器对象,可以获得各个元素使用 __next__()方法遍历生成器对象,也可以获得各个元素。


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

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

list = [Expression for var in range]

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

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

tuple = (Expression for var in range)

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

a1 = (i for i in range(10))               #生成一个10以内的元组
a2 = (i for i in range(10) if i % 2 == 0) #生成一个10以内的偶数元组
print(a1)
print(a2)

运行结果如下:

<generator object <genexpr> at 0x000001DC03E3C900>
<generator object <genexpr> at 0x000001DC03DBBD10>
>>> 

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

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

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

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

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

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

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

a1 = (i for i in range(10))               #生成一个10以内的元组
a2 = (i for i in range(10) if i % 2 == 0) #生成一个10以内的偶数元组
print("转换后的元组为:",tuple(a1))            #转换为元组
print("转换后的列表为:",list(a2))             #转换为列表

运行结果如下:

转换后的元组为: (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
转换后的列表为: [0, 2, 4, 6, 8]
>>> 

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

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

运行结果为:

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

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

a = (i for i in range(3))    # 生成一个3以内的元组
print(a.__next__())          # 输出第一个元素
print(a.__next__())          # 输出第二个元素
print(a.__next__())          # 输出第三个元素
a = tuple(a)                 # 转换为元组
print("转换后的元组:",a)    # 输出新元组

运行结果为:

0
1
2
转换后的元组: ()
>>> 

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

到此为止,本文《Python中的元组推导式详解》讲解的使用 tuple() 函数,可以直接将生成器对象转换成元组、直接使用 for 循环遍历生成器对象,可以获得各个元素、使用 __next__()方法遍历生成器对象,也可以获得各个元素。讲解完毕,不懂的可以给我留言哦!



本文地址:https://www.olzz.com/pythonyuanzutuidaoshi.html
码字不易,打个赏呗
杨泽业感谢你的支持!

猜你喜欢

域名pythonw.cn出售

域名pythonw.cn的详细信息:Python网

2022-08-06  分类:域名出售  浏览:1436次


站长在线Python教程:Python中类定义详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python中类定义详解》。

2022-02-23  分类:Python学堂  浏览:2011次


站长在线Python教程:python中面向对象相关概述详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《python中面向对象相关概述详解》。本文的主要内容有:面向对象是什么、面向对象中的对象是什么、Python中的类是什么、面向对象编程的特点有哪些?

2022-02-14  分类:Python学堂  浏览:1705次


站长在线零基础Python完全自学教程23:函数的返回值、作用域和匿名函数

导读:欢迎你来到站长学堂,学习站长在线出品的在线课程《零基础 Python完全自学教程》今天给大家分享的是第23课《函数的返回值、作用域和匿名函数》。本文是一个大课程分成了下面4节小课程:Python中函数的返回值、Python函数中的局部变量、Python函数中的全局变量、Python函数中的匿名函数等内容。

2022-02-09  分类:Python学堂  浏览:1575次


站长在线Python教程:Python函数中的匿名函数详解

欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python函数中的匿名函数详解》。本文的主要内容有:匿名函数的定义、匿名函数的表达式、匿名函数的注意点、匿名函数的优点、匿名函数的应用举例。

2022-02-01  分类:Python学堂  浏览:1696次


站长在线Python教程精讲:在Python函数中的全局变量详解

欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python中的全局变量详解》。本文的主要内容有:什么是全局变量、在函数外部定义的变量是全局变量、在函数内部定义中添加global关键词后变成全局变量。

2022-01-10  分类:Python学堂  浏览:1805次


站长在线Python教程精讲:在Python函数中的局部变量详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python函数中的局部变量详解》。本文的主要内容有:变量的作用域的概念、局部变量的概念、局部变量的举例。

2022-01-06  分类:Python学堂  浏览:1711次


Python常用英语及用法

站长在线站长,准备系统的学习Python知识,但是对我来说,英语实在是太差了,当然我知道的是,不仅仅我,很多人在学习Python的时候,也是不知道这些英语单词的意思与用法的,在这里站长在线站长就把这些英语整理出来,把英语以及中文意思、用法一起贴出来,让大家一起来学习。

2022-01-02  分类:Python学堂  浏览:1920次


站长在线Python精讲:Python中函数的返回值

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python中函数的返回值》。本文的主要内容有:函数的返回值的含义、函数设置返回值的作用、return语句位置与多条 return语句的总结。

2021-12-29  分类:Python学堂  浏览:1884次


站长在线零基础Python完全自学教程22:在Python中函数的参数传递

欢迎你来到站长学堂,学习站长在线出品的在线课程《零基础 Python完全自学教程》今天给大家分享的是第22课《在Python中函数的参数传递》。本文是一个大课程分成了下面5节小课程:在Python函数中理解形式参数和实际参数、在Python函数中参数传递的位置参数详解、在Python函数中的关键字参数详解、在Python函数中的默认参数详解、在Python函数中的可变参数详解。

2021-12-26  分类:Python学堂  浏览:1667次