a = [x for x in range(10)] #列表生成式 print(type(a)) print(a) b = {x for x in range(10)} #集合生成式 print(type(b)) print(b) c = {x:pow(x,2) for x in range(10) } #字典生成式 print(type(c)) print(c) d = (x for x in range(10)) #生成器 print(type(d)) print(d) for i in d: print(i, end=' ') e = (x for x in range(10)) #生成器转列表 e = list(e) print(type(e)) print(e) f = (x for x in range(10)) #生成器转元组 f = tuple(f) print(f) g = ((x, pow(x,2) for x in range(10))) #生成器转字典 外面是小括号 print(type(g)) g = dict(g) print(g) g1 = ((x, pow(x,2) for x in range(10))) #生成器转元组 print(type(g1)) g1 = dict(g1) print(g1) h = (x*x for x in range(10)) #生成器转集合 h = set(h) print(type(h)) print(h) import random as r def test(): x = r.random(1,3) if x == 1: return 1 else: return 0.5 a = test #代表函数 它只是指向test(test的别名是a) b = test() print(type(a)) print(type(b)) ############################################### import random as z def test(): x = z.random(1,3) if x == 1: yield 1 else: yield 0.5 a = test #代表生成器函数 它只是指向test(test的别名是a) b = test() print(type(a)) print(type(b)) for i in b: print(i) ################################################# def fib(max): #生成器分次运行的 a,b =1,1 n = 1 while n <= max(): yield a a,b = b,a+b n += 1 f =fib(5) #函数生成器 print(next(f)) #斐波那契数列 next分次一次一次给 ###################################################### def fib(max): #生成器分次运行的 a,b =1,1 n = 1 while n <= max(): yield a a,b = b,a+b n += 1 f =fib(5) #函数生成器 print(next(f)) print(next(f)) print(next(f)) print(next(f)) print(next(f)) for x in f: print(x) # x没有数值 因为上面next已经把迭代完了 ############################################### from collections import Iterable, Iterator # Iterable可迭代对象 Iterator迭代器 lst = [1,2,3,4] # print(isinstance(lst,types.GeneratorType) ) #生成器 print(isinstance(lst,Iterable)) gen = (x for x in range(10))
列表 集合 字典 生成器转换
最新推荐文章于 2021-05-13 05:39:26 发布