zoukankan      html  css  js  c++  java
  • python-cookbook读书笔记

      今天开始读《python-cookbook》,书里有许多python优雅的写法,可以作为python的一本进阶书。

      感谢译者。项目地址: https://github.com/yidao620c/python3-cookbook 

      以下是我个人的一些笔记

    1、递归并不是python擅长的

    2、关于生成器(generator)

      一个函数中需要有一个 yield 语句即可将其转换为一个生成器。 跟普通函数不同的是,生成器只能用于迭代操作。

    #使用生成器
    def frange(start, stop, increment):
        x = start
        while x < stop:
            yield x
            x += increment
    
    #普通函数
    def nrange(start, stop, increment):
        x = start
        arr=[]
        while x < stop:
            arr.append(x)
            x += increment
        return arr
    
    for i in frange(1,5,0.7):
        print(i)
    
    for i in nrange(1,5,0.7):
        print(i)

      可以看到两个函数用法、输出都一样,但是实现方式完全不同。显然用到生成器函数更加优雅

      一个生成器函数主要特征是它只会回应在迭代中使用到的 next 操作,next操作让函数运行到yeild,就返回后面的值为止。然后继续next,直到生成器函数返回退出,迭代终止。因此最后一个next会捕获一个异常

    3、collections.deque双端队列。

      使用 deque(maxlen=N) 构造函数会新建一个固定大小的队列。当新的元素加入并且这个队列已满的时候, 最老的元素会自动被移除掉。

      在队列两端插入或删除元素时间复杂度都是 O(1) ,区别于列表,在列表的开头插入或删除元素的时间复杂度为 O(N) 。

  • 相关阅读:
    李超线段树板子
    蒟蒻的平衡树学习笔记(=.=
    P2254 [NOI2005] 瑰丽华尔兹
    表达式求值学习笔记
    二分和一些其它算法的奇妙组合
    《wwx》的学习总结(题解)
    set的学习笔记
    题解 P4913 【深基16.例3】二叉树深度
    AGC002F Leftmost Ball
    CSP&&NOIP2020 游记
  • 原文地址:https://www.cnblogs.com/luozx207/p/9953290.html
Copyright © 2011-2022 走看看