Python代码优化:第二部分
原文作者: Dhruv Singh
原文链接:http://www.codeproject.com/Tips/833354/Python-Code-Optimizations-Part-Two
翻译:jiong
代码使用
1. 调用一个函数,直到一个标记值
blocks = []
while True:
block= f.read(32)
if block == '':
break
blocks.append(block)
Python化的方式:使用iter()
blocks = []
for block in iter(partial(f.read, 32),''):
blocks.append(block)
iter()函数有两个参数,第一个参数是一个函数名,你可以重复调用;第二个参数是标记值。
为了使它运行,iter()函数中的第一个函数得是一个没有参数的函数。
但是我们知道f.read()在调用时得有一个参数,所以为了使它运行,我们使用partial()函数,它可以减少函数的参数。
2. 再循环中区分多个出口
def find(seq, target):
found = False
for i, value in enumerate(seq):
if value == target:
found = True
return i
if not found:
return -1
Python化的方式:在循环中使用else
def find(seq, target):
for i, value in enumerate(seq):
if value == target:
return i
else:
return -1
在上述的例子中,循环运行有两部分:
(1) 如果我们结束循环,并且没有碰到退出,return -1;
(2) 如果我们正常结束循环,return i。
下面,我已经给了一个小例子,它可以帮助你更好地理解它!
考虑一个简单的例子,我们许多人每天都会碰到。
寻找你的房子的钥匙,它有以下两个结果:
你找到钥匙,并拿出了钥匙。return 1。
或者,你搜索所有的房间,也没有找到,因此你出来空手而归。Return -1。
3. 在字典的keys中循环
Python化的方式
d = {'a' : 'apple', 'b' : 'ball', 'c' : 'cat'}
for k in d:
print k
引用:
如果你把列表看作一个字典,列表的索引就近似于在字典中的键。
4. 改变字典
Python化的方式
for k in d.keys():
if k.startswith('a'):
del d[k]
引用:
当你遍历字典的时候,你不能对字典进行改变。
在这个例子中,d.keys()调用了键这一参数,复制了所有的键,并存储在列表中。