Python教程:Python中的元组推导式详解
欢迎你来到站长在线的站长学堂学习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
阿里云虚拟主机1G空间,120元一年
香港、美国虚拟主机100元一年,1000元永久
腾讯云双十一0.4折起,2核8G5M三年仅700元,2核4G8M三年仅198元
猜你喜欢