#列表生成式
#列表生成式 m = [x for x in range(10)] #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print(m)
def add(n): return n*2 s = [add(x) for x in range(10)] print(s) #[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
生成器:两种创建方式
#方式一:
s = (x for x in range(100)) #生成器取值下面两种方式等价 # m = s.__next__() print(next(s)) # 0 print(next(s)) # 1 #也可以用for循环 for i in s: #生成器就是可以可迭代对象 print(i)
#方式二:yield
def foo(): yield 1 print(foo()) #<generator object foo at 0x000001A11A30FF10> 生成器对象 for i in foo(): print(i) #打印出一个1
可迭代对象:对象拥有iter方法的
#斐波拉契数列
def fib(max): n,before,after = 0,0,1 while n < max: yield before before,after = after,after+before n = n + 1 print(fib(8)) #<generator object fib at 0x000001DC7CF54888> m = fib(8) for i in m: print(i) #打印结果 #0 #1 #1 #2 #3 #5 #8 #13
原文:https://www.cnblogs.com/qqxin/p/13022131.html