美文网首页
2018-07-22的简书

2018-07-22的简书

作者: 吴某人_0ad9 | 来源:发表于2018-07-22 18:03 被阅读0次

    代码块

    
    In [16]: L
    Out[16]: [0, 2, 4, 6, 8]
    
    In [17]: G = ( x*2 for x in range(5))
    
    In [18]: G
    Out[18]: <generator object <genexpr> at 0x7f626c132db0>
    
    In [19]:
    ... prompt'''
    

    创建 L 和 G 的区别仅在于最外层的 [ ] 和 ( ) , L 是一个列表,而 G 是一个生成器。我们可以直接打印出L的每一个元素,但我们怎么打印出G的每一个元素呢?如果要一个一个打印出来,可以通过 next() 函数获得生成器的下一个返回值:

    代码块

    
    
    In [28]: def fib(times):
    ....: n = 0
    ....: a,b = 0,1
    ....: while n<times:
    ....: print(b)
    ....: a,b = b,a+b
    ....: n+=1
    ....: return 'done'
    ....:
    
    In [29]: fib(5)
    1
    1
    2
    3
    5
    Out[29]: 'done'
    enerator非常强大。如果推算的算法比较复杂,用类似列表生成式的 for 循环无法实现的时候,还可以用函数来实现。
    比如,著名的斐波拉契数列(Fibonacci),除第一个和第二个数外,任意一个数都可由前两个数相加得到:
    1, 1, 2, 3, 5, 8, 13, 21, 34, …
    斐波拉契数列用列表生成式写不出来,但是,用函数把它打印出来却很容易:
    
    
    
    
    
    

    相关文章

      网友评论

          本文标题:2018-07-22的简书

          本文链接:https://www.haomeiwen.com/subject/yvqrmftx.html