元组推导式的表达式与列表推导式相似,表面上只是将[]换成了(),但其实输出的结果还是有区别的,如下


#元组推导式
import random
tuple1=(random.randint(0,4) for i in range(10) )
print("新元组为:",tuple1)#此时tuple1为一个生成器对象,需要用tuple()函数或list()函数将其转化为元组或列表

QQ图片20210928230053.png
如上图所示,直接打印的话是生成一个生成器对象,而不是我们想要的结果。我们需要用tuple或list函数将其转化

像这样

print("转换后新元组为:",tuple(tuple1))

QQ图片20210928230102.png

此外,如果要使用生成器对象,用for循环或__next__() 即可

for i in tuple1:
    print(i)

QQ图片20210928230058.png

或者

print(tuple1.__next__())
print(tuple1.__next__())
print(tuple1.__next__())

QQ图片20210928230913.png


需要注意的是无论通过哪种方法遍历,如果需在使用此生成器对象,都需重新创建一个新的生成器对象,否则就会出现下图结果

import random
tuple1=(random.randint(0,4) for i in range(10) )
print("一个遍历:",tuple(tuple1))
#此处已经经历了一个遍历
print("会出现:",tuple(tuple1))

QQ图片20210928231555.png

QQ图片20210928231932.jpg

QQ图片20210928231941.jpg

最后修改:2022 年 10 月 25 日
如果觉得我的文章对你有用,请随意赞赏