pythonic

  1. 循环遍历区间元素, xrange 返回的是生成器对象,生成器比列表更加节省内存。
    xrange 是 python2 中的写法,python3 只有 range 方法,特点和 xrange 是一样的。
In [14]: for i in xrange(3):
   ....:     print i
   ....:
0
1
2
  1. enumerate 内置函数使用
    对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值, 多用于在for循环中得到计数, 也可以统计小文件的行号和对应内容。还可以接收第二个参数,用于指定索引起始值。
In [16]: test = ['a', 'b', 'c']
In [20]: for index, item in enumerate(test):
   ....:     print index, item
   ....:
0 a
1 b
2 c
In [21]: for index, item in enumerate(test, 2):
   ....:     print index, item
   ....:
2 a
3 b
4 c
  1. 两个变量交换, 不需要引入中间变量
In [2]: a = 1
In [3]: b = 2
In [4]: a, b = b, a
In [5]: a
Out[5]: 2
In [6]: b
Out[6]: 1
  1. join字符串连接, 将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串, 用 join 方法整个过程只会产生一个字符串对象.
In [22]: test
Out[22]: ['a', 'b', 'c']
In [23]: result = ''.join(test)
In [24]: result
Out[24]: 'abc'
In [25]: result = '@'.join(test)
In [26]: result
Out[26]: 'a@b@c'
  1. list 应用, 列表对象(list)是一个查询效率高于更新操作的数据结构,比如删除一个元素和插入一个元素时执行效率就非常低,因为还要对剩下的元素进行移动。
In [27]: from collections import deque
In [28]: test
Out[28]: ['a', 'b', 'c']
In [29]: new_test = deque(test)
In [30]: new_test
Out[30]: deque(['a', 'b', 'c'])
In [31]: new_test.popleft()
Out[31]: 'a'
In [33]: new_test
Out[33]: deque(['b', 'c'])
In [35]: new_test.appendleft('d')
In [36]: new_test
Out[36]: deque(['d', 'b', 'c'])
  1. 遍历字典, iteritems 返回迭代器对象,可节省更多的内存,不过在 python3 中没有该方法了,只有 items 方法,等值于 iteritems
In [41]: test = {'a': 1, 'b': 2}
In [42]: for k, v in test.iteritems():
   ....:     print k, v
   ....:
a 1
b 2
  1. if/else 三目运算
In [3]: age = 20
In [5]: you='old' if age > 18 else 'young'
In [6]: you
Out[6]: 'old'
  1. for/else 语句
    即在for 循环中,如果没有从任何一个break中退出,则会执行和for对应的else
    只要从break中退出了,则else部分不执行
        for i in xrange(5):
   ...:     if i == 5:
   ...:         break
   ...: else:
   ...:     raise ValueError('Not found 5')
ValueError: Not found 5

你可能感兴趣的:(pythonic)