我正在尝试将数据结构中的一组元素替换为其他值。在 python 的情况下,在字符串中进行这种替换似乎比在列表中要快得多(如下面的基准测试所揭示的)。有人可以解释为什么。
注意:这些测试是使用 python 2.7 执行的。
def string_replace_test(s, chars):
"""Replaces a set of chars to 0"""
new = s
for c in chars:
new = new.replace(c, '0')
return new
def list_replace_test(s, chars):
"""Replaces a set of chars to 0"""
for a in xrange(len(s)):
if s[a] in chars:
s[a] = '0'
if __name__ == '__main__':
import timeit
s = """
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec
etfringilla purus. Pellentesque bibendum urna at neque consectetur
at tincidunt nulla luctus. Pellentesque augue lacus, interdum id
lectus vitae, laoreet suscipit arcu.
"""
s2 = list(s)
chars = ['a', 'e', 'i', 'o', 'u']
print(timeit.timeit("string_replace_test(s, chars)", setup="from __main__ import string_replace_test, s, chars"))
print(timeit.timeit("list_replace_test(s2, chars)", setup="from __main__ import list_replace_test, s2, chars"))
输出:
5.09572291374
49.3243050575
使用范围():
5.01253795624
53.2320859432