现在我使用一个列表来存储修改后的字符串,并返回一个带有.join()的字符串
def applyCoder(text, coder):
l = []
for i in text:
if i in coder:
l.append(coder[i])
else:
l.append(i)
return ''.join(l)
# example output, shifts all letters by 3 in a string
# print applyCoder("Hello, world!", buildCoder(3))
# buildCoder(3) returns dictionary, e.g. {'A': 'D', ...}
# >>> Khoor, zruog!
有没有更快的方法来更改和返回字符串?你知道吗
这应该尽可能快:
与
for
循环相比,Python中的列表理解要优化得多,因为for
循环的开销很大。我已经通过了列表理解,而不是''.join
中的生成器,因为它必须在加入之前提前知道输入的长度。如果你给它一个生成器,它必须把它放到一个列表中(这有点慢)。你知道吗实际上,您可以进一步简化它,
它应该更快 (由于方法调用,这实际上比上述方法执行得慢)时间安排:
结果:
对
coder.get
的方法调用似乎完全否定了列表理解的优点。我确实预测它可能会比listcomp1
慢,因为这样,但我不认为它会有这么大的影响。不管怎样,名单还是赢了。你知道吗更新: 如果您这样修改
list_comp2
:时代大为改善:
从
4.76796932292
(第一次测试)->;3.95217394948
和
34.1682597928
(第二次测试)->;27.1162974624
相关问题 更多 >
编程相关推荐