生成器推导创建元组
从形式上看,生成器推导式与列表推导式相类似,只是生成器推导式推导的小括号,列表推导式直接生成列表对象,生成器推导式生成的不是列表也不是元组,而是生成一个对象。
我们可以通过生成器对象,转化成列表还是元组,也可以使用生成器对象的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
元组总结
元组的核心特点是:不可变序列
元组的访问和处理速度比列表快
与整数和字符串一样元组可以作为字典的键,列表则永远不能作为字典的键使用