python - 哪个更适合 Python 3 中的字符串反转?

标签 python string python-3.x performance

s="google"
print("".join(reversed(s)))  //elgoog
print(s[::-1])  //elgoog

上面的字符串使用python 3 reversed method 和slicing method 都显示相同的输出,但是在python 编程语言中哪一个是最有效的,为什么?

最佳答案

当你谈到效率时,你应该从哪个角度来说明?内存、运行时、实现等

关于运行时,反向索引肯定更快,因为当您使用 join 加上 reversed 时,您正在调用两个函数,它们都有自己的缺陷(挂起和恢复一个函数的框架等)与简单的索引进行比较。但是如果你想一个一个地循环字符,出于任何目的,并且内存是一个问题(主要是当字符串很大时)你可以使用 reversed 因为它返回一个迭代器对象。

In [2]: s = "example"

In [4]: r = reversed(s)

In [5]: next(r)  # e.g. You can access to the characters using `next()`
Out[5]: 'e'

因此结论是您应该根据需要选择方法,实际上这就是为什么在 Python 中有多种方法来完成一项特定任务的原因。

关于python - 哪个更适合 Python 3 中的字符串反转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51025882/

相关文章:

python - 该平台缺少功能性的 sem_open 实现,因此,需要所需的同步原语

string - 查找字符串的子字符串,使得子字符串的长度与其出现次数的乘积最大化

Python split with multiple delimiters 不工作

Django __init__() 需要 1 个位置参数,但给出了 2 个

python - 回溯(最近调用最后): Adafruit BME 280 Sensor

python - 使用Python+NumPy+Numba时如何加速数组访问

python - 如何安装 MySQLdb 包? (导入错误 : No module named setuptools)

python - OpenCV Python 单个(而不是多个)blob 跟踪?

使用 SWIG 对 C++ 进行 Python 包装。参数类型无法识别

r - 使用R找出两个字符串的起始差