我想出了两种不同的方法来在 Python 中反转字符串。
常识表明,代码行数越多,运行速度越慢。
我编写了以下几行代码:
代码1
"".join(reversed(map(lambda x:x,st)))
代码2
st[::-1]
这些提供了相似的性能。对于 20000 长的字符串,我看不出哪怕是一毫秒的性能差异。
我认为第一种方法应该是一种较慢的方法,因为它执行的操作多 3 倍。
问题
为什么我没有看到性能差异?
请您参考如下方法:
我看到了不同。
首先,map(lambda x: x, st) 是怎么回事?目的是什么?
使用 timeit 模块测试您的代码:
$ python -m timeit '"".join(reversed("abcdefghijklmnopqrstuvwxyz"))'
1000000 loops, best of 3: 0.586 usec per loop
$ python -m timeit '"abcdefghijklmnopqrstuvwxyz"[::-1]'
10000000 loops, best of 3: 0.0715 usec per loop
如您所见,对于此特定输入,切片在我的机器上快约 8 倍。它也更简洁。
