• pythonic operations


    变量交换
    >>> a, b = b, a
    循环遍历区间元素
    >>>for i in range(10):
    ...    print (i)
    返回的是生成器对象,生成器比列表更加节省内存
    
    带索引位置的循环遍历
    >>>colors = ['red', 'green', 'blue', 'yellow']
    
    >>>for i, color in enumerate(colors):
    ...    print (i, 'mapping', color)
    字符串连接
    >>>colors = ['red', 'green', 'blue', 'yellow']
    >>>print( ', ', join( colors ) )
    join 是一种更加高效的字符串连接方式,使用 + 操作时,每执行一次+操作就会导致在内存中生成一个新的字符串对象,遍历几次有几个字符串生成,造成无谓的内存浪费。而用 join 方法整个过程只会产生一个字符串对象。
    
    打开/关闭文件
     >>>with open('data.txt') as f:
     ...   data = f.read()
    列表推导式
     result = []
    for i in range( 10 ):
        s = i * 2
        result.append( s )
    
    应该写成:
    
    [ i * 2 for i in range( 10 ) ]
    1
    装饰器
    
    装饰器可以把与业务逻辑无关的代码抽离出来,让代码保持干净清爽,而且装饰器还能被多个地方重复利用。比如一个爬虫网页的函数,如果该 URL 曾经被爬过就直接从缓存中获取,否则爬下来之后加入到缓存,防止后续重复爬取。
    
    def web_lookup(url, saved={}):
        if url in saved:
            return saved[url]
        page = urllib.urlopen(url).read()
        saved[url] = page
        return page
    
    pythonic
    
    import urllib.request
    
    def cache(func):
        saved = {}
    
        def wrapper(url):
            if url in saved:
                return saved[url]
            else:
                page = func(url)
                saved[url] = page
                return page
        return wrapper
    
    @cache
    def web_lookup(url):
        return urllib.urlopen(url).read()
    列表的操作
    列表对象(list)是一个查询效率高于更新操作的数据结构,比如删除一个元素和插入一个元素时执行效率就非常低,因为还要对剩下的元素进行移动
    
    names = ['raymond', 'rachel', 'matthew', 'roger',
             'betty', 'melissa', 'judith', 'charlie']
    names.pop(0)
    names.insert(0, 'mark')
    pythonic
    
    from collections import deque
    names = deque(['raymond', 'rachel', 'matthew', 'roger',
                   'betty', 'melissa', 'judith', 'charlie'])
    names.popleft()
    names.appendleft('mark')
    deque 是一个双向队列的数据结构,删除元素和插入元素会很快
    
    序列解包
    p = 'vttalk', 'female', 30, 'python@qq.com'
    
    name = p[0]
    gender = p[1]
    age = p[2]
    email = p[3]
    pythonic
    
    name, gender, age, email = p
  • 相关阅读:
    Linux Enterprise Cluster NOtes Ch4 同步:ssh和rsync
    e805上不安装中文外挂支持中文,很简单而且实用
    ARM的一些概念性问题
    C#调用WORD处理的小项目 转
    ASP.NET面试题
    .net清除cookie代码|.net为什么不能清除cookie|.net cookie 过期代码
    c#字符串转数字的函数|c#字符串转数字的无错函数|c#字符串转数字的最好函数
    Wiki简介
    new 和override 重写区别
    禁用IE的后退按钮|显示网页已过期|几种语言的实现方法|c#|javascript|html
  • 原文地址:https://www.cnblogs.com/suanec/p/9004191.html
Copyright © 2020-2023  润新知