zoukankan      html  css  js  c++  java
  • python笔记7:优雅的python

    7. 如何让python代码更 Pythonic :

    1、变量交换: 

    a, b = b, a

    2、带有索引位置的集合遍历:

    colors = ['red', 'green', 'blue', 'yellow']
    for i, color in enumerate(colors):
    print i, '--->', color

    3、字符串连接:

    names = ['raymond', 'rachel', 'matthew', 'roger','betty', 'melissa', 'judith', 'charlie']
    print ', '.join(names)

    注:使用 + 操作时,每次都会在内存中生成一个新的字符串对象,而 join 方法整个过程只产生一个字符串对象。
    4、打开/关闭文件:

    with open('data.txt') as f:
    data = f.read()


    注:使用 with 语句,系统会在执行完文件操作后自动关闭文件对象。
    5、合理使用列表

    from collections import deque
    names = deque(['raymond', 'rachel', 'matthew', 'roger','betty', 'melissa', 'judith', 'charlie'])
    names.popleft()#删除最左边元素
    names.appendleft('mark')#在最左边添加新元素

    注:列表list 是一种查询效率高于更新操作的数据结构,删除和插入新元素时效率很低,队列deque 是一个双向队列的数据结构,删除元素和插入元素会很快
    6、序列解包:

    p = 'vttalk', 'female', 30, 'python@qq.com'
    name, gender, age, email = p

    7、遍历字典的 key 和 value

    for k, v in d.iteritems(): 注:iteritems 返回迭代器对象,在python3中只有 items 方法,等值于iteritems
    print k, '--->', v

    8、链式比较操作: if 18 < age < 60:

    猜一猜:>>> False == False == True (答案为:False)

    9、if/else 三目运算:

    text = '' if gender == 'male' else ''

    10、真值判断:

    if attr: 等价于 if attr == True:
    if values:(或 not values) 等价于 if len(values) != 0:(或 =0) # 判断列表是否为空

    11、for/else语句
    for else 是 Python 中特有的语法格式,else 中的代码在 for 循环遍历完所有元素之后执行
    12、获取字典元素

    d = {'name': 'foo'}
    d.get("name", "unknow") #如果d有key=name,则获得其value,否则key=unknow

    13、预设字典默认值
    (场景:通过 key 分组的时候,不得不每次检查 key 是否已经存在于字典中。)

    groups = {}
    for (key, value) in data: #方式一,常用
    groups.setdefault(key, []).append(value) 

    14、字典推导式

    numbers = [1, 2, 3]
    my_dict = {number: number * 2 for number in numbers if number > 1}
    print(my_dict) # {2: 4, 3: 6}

    15、。。。

  • 相关阅读:
    重装win7之后,wubi安装的ubuntu的启动菜单不见
    data_source.rb:182: TZInfo::DataSourceNotFound解决办法
    Gem::InstallerError:The 'json' native gem requires installed build tools
    去掉DL is deprecated, please use Fiddle警告信息
    ruby on rails安装(ubuntu 14.04)
    ruby on rails 安装(win8 64位)
    满城月季花开
    python中的zip()函数
    python学习之“序列”的理解
    二进制、十进制、八进制、十六进制的理解
  • 原文地址:https://www.cnblogs.com/W-Yentl/p/7816779.html
Copyright © 2011-2022 走看看