生成器推导创建元组

从形式上看,生成器推导式与列表推导式相类似,只是生成器推导式推导的小括号,列表推导式直接生成列表对象,生成器推导式生成的不是列表也不是元组,而是生成一个对象。

        我们可以通过生成器对象,转化成列表还是元组,也可以使用生成器对象的next()方式进行遍历,或者直接作为迭代器对象来使用。不管什么方式使用,元素访问结束后,如果需要重新访问该元素,必须要重新创建对象

        

 1 >>> s = (x*2 for x in range(5))
 2 >>> s
 3 <generator object <genexpr> at 0x03B5E760>
 4 >>> tuple(s)
 5 (0, 2, 4, 6, 8)
 6 >>> list(s)
 7 []
 8 >>> s
 9 <generator object <genexpr> at 0x03B5E760>
10 >>> list(s)
11 []
12 >>> s=(x*2 for x in range(5))
13 
14 >>> next(s)
15 0
16 >>> next(s)
17 2
18 >>> next(s)
19 4
20 >>> next(s)
21 6
22 >>> next(s)
23 8
24 >>> next(s)
25 Traceback (most recent call last):
26   File "<pyshell#16>", line 1, in <module>
27     next(s)
28 StopIteration

元组总结

元组的核心特点是:不可变序列

元组的访问和处理速度比列表快

与整数和字符串一样元组可以作为字典的键,列表则永远不能作为字典的键使用