Python 小技巧
小技巧
Python 中的小技巧
1. 循环技巧(Looping Techniques)
在字典中循环
关键字和对应的值可以用iteritems()
方法同时解读出来。dict = {'key0':'value0','key1':'value1','key2':'value2'} for key,value in dict.iteritems(): print key,value
在序列中循环
索引位置和对应的值可以用enumerate()
方法同时得到。list = ['value0','value1','value2'] for index,value in enumerate(list): print index,value
同时循环多个序列
同时循环两个或更多的序列,可以使用zip()
整体打包。questions = ['name','quest','favorite color'] answer = ['eric','the holy grail','blue'] for q,a in zip(questions,answer): print 'What is your {0}? It is {1}.'.format(q,a)
逆向循环序列
需要逆向循环序列的话,先正向定位序列,然后调用reversed()
函数。for i in reversed(xrange(1,10,2)): print i
排序后循环
sorted()
函数,不改动原序列,生成一个新的已排序的序列。list = ['value2','value1','value0'] for value in sorted(set(list)): print value
2. range()
和xrange()
的区别
range()
返回的是一个列表List
,而xrange()
返回一个对象Object
。
除非需要一个List
【数据多时,生成list
费时】,否则,选择xrange()
,效率高【仅在调用时返回所需数字】。
3. dir()
函数
内置函数dir()
用于按模块名搜索模块定义,返回一个字符串类型的存储列表。
import Fibo
print dir('Fibo')
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'fibonacci']
4. str()
和repr()
str()
将值转化为适于人阅读的形式;repr()
将值转化为适于解释器读取的形式。
若没有适于人阅读的解释形式的话,str()
会返回与repr()
等同的值。
如:数值、链表、字典等,两者有统一的解读形式;字符串和浮点数则有着各自独特的解读方式。
s = 'Hello,world.'
s1 = str(s) # s1 = 'Hello,world.'
s2 = repr(s) # s2 = "'Hello,world.'"
print s1,s2 # Hello,world. 'Hello,world.'
s = 'Hello,\tworld.'
s1 = str(s) # s1 = 'Hello,\tworld.'
s2 = repr(s) # s2 = "'Hello,\\tworld.'"
print s1,s2 # Hello, world. 'Hello,\tworld.'
s1 = str(1.0/7.0) # s1 = 0.142857142857
s2 = repr(1.0/7.0) # s2 = 0.142857142857142857