zoukankan      html  css  js  c++  java
  • 让你的python代码优雅地道的小技巧

    转载地址:http://www.lightxue.com/transforming-code-into-beautiful-idiomatic-python

    用了python这么久,逐渐才了解到python语言的独特之处,根据这篇文章,列出了几个以后写代码要注意的点,提醒自己。

    本文是Raymond Hettinger在2013年美国PyCon演讲的笔记(python2.7)

    这里只列出最好的几个方法,错误的例子不再举出

    1.遍历一个范围的数字

    for i in xrange(6):

        print i

    2.遍历集合

    colors = [ '1',2','3']

    for color in colors:

     print color

    3.反向遍历

    for color in reserved(colors):

     print color

    4.遍历集合及其下标(字典也类似处理)

    for i,color in enumerate(colors):

     print i, color

    5.遍历两个集合

    for name,color in izip(names, colors):

     print name, '----->', color

    6.有序的遍历

    for color in sorted(colors)

     print color

    7.自定义排序顺序

    print sorted(colors, key=len) len可以用str.lower等代替

    8.在循环内识别多个退出点

    def find(seq, target):

     for i, value in enumerate(seq):

      if value == target:

          break

        else:

      return -1

       return 1

    这里是把else当做nobreak,当for没有被break,循环结束会进入else

    9.遍历字典的key

    for key in dict:

     print key

    当你需要修改key的时候

    for k in d.keys():

     if k.startwith('r'):

      del d[k]

    10.遍历字典的key和value

    for k, v in d.iteritems():

      print k, '----->', v

    11.key-value对构建字典

    name = ['1', '2', '3']

    color = ['red', 'blue', 'yellow']

    d = dict(izip(names, colors))

    12.字典分组

    d = defaultdict(list)

    for name in names:

     key = len(name)

     d[key].append(name)

    # 这里是按照字段长度分组

    13.连接字典

    目前似乎2.7版本不支持chainmap函数

    14.提高可读性

    提高可读性的关键在于使代码和人类的思考方式一致

    15.更新多个变量

    x, y = y, x + y

    x ,y , dx, dy = (, , , ,)

    16.符号连接字符串

    print ','.join(names)

    17.更新序列

    18.装饰器()

     文件读写部分暂时跳过

    with open('data.txt') as f

     data = f.read()

    可以取消文件读写关闭的过程

  • 相关阅读:
    catalina配置参数
    zabbix搭建
    tomcat域名配置
    javaweb学习总结(十)——HttpServletRequest对象(一)
    javaweb学习总结(九)—— 通过Servlet生成验证码图片
    javaweb学习总结(八)——HttpServletResponse对象(二)
    javaweb学习总结(七)——HttpServletResponse对象(一)
    javaweb学习总结(六)——Servlet开发(二)
    javaweb学习总结(五)——Servlet开发(一)
    javaweb学习总结(四)——Http协议
  • 原文地址:https://www.cnblogs.com/silencestorm/p/8393747.html
Copyright © 2011-2022 走看看