使用元组推导式可以快速生成一个元组,他的表现形式与列表推导式类似,只是将列表推导式中使用 [] 修改为 () 。
例如:我们使用下面的代码生成一个包含10个随机数的元组。
import randomrandomunmber=(random.randint(10,100) for i in range(10))print("生成的元组为:",randomnumber)执行的结果为:生成的元组为:<generator object <genexpr> at ox0000000003056620>从上面的例子中可以看出,使用元组推导式生成的结果并不是一个元组或者列表,而是一个生成器对象,这一点和列表推导式是不同的,要是用该生成器将其转换为元组或者列表。其中转换为元组使用tuple()函数,而转换为列表使用list()函数。
例如:使用元组推导式生成一个包含10个随机数的生成器对象,然后将其转换为元组并输出,可以使用下面的代码实现:
import randomrandomnumber=(random.randint(10,100) for i in range(10))randomnumber=tuple(randomnumber)print("转换后:",randomnumber)执行后的结果为:转换后:(76,54,74,63,61,71,53,75,61,55)要使用通过元组推导器生成的生成器对象,还可以通过for循环遍历或者直接使用__next__()方法进行遍历。
注:在Python2.X中__next__()方法对应的方法为next()方法,也是用于遍历生成器对象的
例如:通过生成器推导式生成一个包含3个元素的生成器对象number,然后调用3次__next__()方法输出每个元素的值,再将生成器对象number转换为元组输出,代码如下
number=(i for i in range(3))print(number.__next__())print(number.__next__())print(number.__next__())number=tuple(number)print("转换后:",number)执行结果如下:012转换后:()通过生成器推导式生成一个包含4个元素的生成器对象number,然后应用for循环遍历该生成器对象,并输出每一个元素的值,最后将其转换为元组输出,代码如下:
number=(i for i in range(4))for i in number : print(i,end=" ")print(tuple(number))执行结果如下:0 1 2 3 ()从上面的示例中可以看出,无论通过哪种方法遍历,如果再想使用该生成器兑现,都必须重新创建一个生成器对象,因为遍历后原生成器对象已经不存在了。