I was able to come up with two different ways to reverse a string in Python.
Commonsense dictates that the more lines of code the slower it runs.
I made the following lines of code:
Code1
"".join(reversed(map(lambda x:x,st)))
Code2
st[::-1]
These give similar performance. For a 20000 long string I am not able to see a difference of even a millisecond in performance.
I think the first one should be a slower approach because it performs 3x more operations.
Question
Why am I not seeing a performance difference?
I see a difference.
First of all, what is up with map(lambda x: x, st)
? What is the purpose?
Use the timeit
module to test your code:
$ 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
As you can see, the slice is ~8x faster on my machine for this particular input. It's also more concise.
s=input("enter string")
print(s[::-1])
来源:https://stackoverflow.com/questions/36949665/fastest-way-to-reverse-a-string-in-python