元组推导式的表达式与列表推导式相似,表面上只是将[]换成了(),但其实输出的结果还是有区别的,如下
#元组推导式
import random
tuple1=(random.randint(0,4) for i in range(10) )
print("新元组为:",tuple1)#此时tuple1为一个生成器对象,需要用tuple()函数或list()函数将其转化为元组或列表
如上图所示,直接打印的话是生成一个生成器对象,而不是我们想要的结果。我们需要用tuple或list函数将其转化
像这样
print("转换后新元组为:",tuple(tuple1))
此外,如果要使用生成器对象,用for循环或__next__() 即可
for i in tuple1:
print(i)
或者
print(tuple1.__next__())
print(tuple1.__next__())
print(tuple1.__next__())
需要注意的是无论通过哪种方法遍历,如果需在使用此生成器对象,都需重新创建一个新的生成器对象,否则就会出现下图结果
import random
tuple1=(random.randint(0,4) for i in range(10) )
print("一个遍历:",tuple(tuple1))
#此处已经经历了一个遍历
print("会出现:",tuple(tuple1))