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) 。

  • 相关阅读:
    solr
    2.配置Flutter代码编辑器(IDE)
    1.Flutter的下载安装和环境配置
    ReactNative开发环境配置,新手踩坑必备.我也是新手
    汉字转拼音,获取汉字首字母
    For循环性能优化
    JavaScript滑块简易取色器
    C# 获取汉字拼音首字母(修正X问题,真正修正)
    团队项目-个人博客5.31
    团队项目-个人博客5.30
  • 原文地址:https://www.cnblogs.com/luozx207/p/9953290.html
Copyright © 2011-2022 走看看