Python 反向字符串 - 5 种方法和最好的一种
Python String 没有内置的 reverse() 函数。但是,有多种方法可以在 Python 中反转字符串。 1.如何在 Python 中反转字符串? 反转字符串的一些常见方法是: 使用切片创建字符串的反向副本。 使用循环并以相反的顺序附加字符 使用while 循环逆序迭代字符串字符并追加 使用字符串 join()函数和reversed()迭代器 从字符串中创建一个列表然后调用它的rev
Python String 没有内置的 reverse() 函数。但是,有多种方法可以在 Python 中反转字符串。
1.如何在 Python 中反转字符串?
反转字符串的一些常见方法是:
-
使用切片创建字符串的反向副本。
-
使用循环并以相反的顺序附加字符
-
使用while 循环逆序迭代字符串字符并追加
-
使用字符串 join()函数和reversed()迭代器
-
从字符串中创建一个列表然后调用它的
reverse()
函数 -
使用递归
1.1) Python 使用切片反转字符串
def reverse_slicing(s):
return s[::-1]
input_str = 'ABç∂EF'
if __name__ == "__main__":
print('Reverse String using slicing =', reverse_slicing(input_str))
如果您在 Python 脚本上运行,输出将是:
Reverse String using slicing = FE∂çBA
1.2) 使用 For 循环反转字符串
def reverse_for_loop(s):
s1 = ''
for c in s:
s1 = c + s1 # appending chars in reverse order
return s1
input_str = 'ABç∂EF'
if __name__ == "__main__":
print('Reverse String using for loop =', reverse_for_loop(input_str))
输出:Reverse String using for loop = FE∂çBA
1.3) 使用 While 循环反转字符串
def reverse_while_loop(s):
s1 = ''
length = len(s) - 1
while length >= 0:
s1 = s1 + s[length]
length = length - 1
return s1
input_str = 'ABç∂EF'
if __name__ == "__main__":
print('Reverse String using while loop =', reverse_while_loop(input_str))
1.4) 使用 join() 和 reversed() 反转字符串
def reverse_join_reversed_iter(s):
s1 = ''.join(reversed(s))
return s1
1.5) Python 使用 List reverse() 反转字符串
def reverse_list(s):
temp_list = list(s)
temp_list.reverse()
return ''.join(temp_list)
1.6) 使用递归的 Python 反向字符串
def reverse_recursion(s):
if len(s) == 0:
return s
else:
return reverse_recursion(s[1:]) + s[0]
2.在 Python 中反转字符串的最佳方法
我们可以通过多种算法来反转一个字符串。我们已经看到了其中的六个。但是您应该选择其中的哪一个来反转字符串。我们可以使用timeit 模块来运行这些函数的多次迭代,并获得运行它们所需的平均时间。以上所有函数都存储在一个名为string_reverse.py
的 python 脚本中。我使用timeit 模块一个一个地执行了所有这些函数 1,00,000 次,并获得了最好的 5 次运行的平均值。
$ python3.7 -m timeit --number 100000 --unit usec 'import string_reverse' 'string_reverse.reverse_slicing("ABç∂EF"*10)'
100000 loops, best of 5: 0.449 usec per loop
$ python3.7 -m timeit --number 100000 --unit usec 'import string_reverse' 'string_reverse.reverse_list("ABç∂EF"*10)'
100000 loops, best of 5: 2.46 usec per loop
$ python3.7 -m timeit --number 100000 --unit usec 'import string_reverse' 'string_reverse.reverse_join_reversed_iter("ABç∂EF"*10)'
100000 loops, best of 5: 2.49 usec per loop
$ python3.7 -m timeit --number 100000 --unit usec 'import string_reverse' 'string_reverse.reverse_for_loop("ABç∂EF"*10)'
100000 loops, best of 5: 5.5 usec per loop
$ python3.7 -m timeit --number 100000 --unit usec 'import string_reverse' 'string_reverse.reverse_while_loop("ABç∂EF"*10)'
100000 loops, best of 5: 9.4 usec per loop
$ python3.7 -m timeit --number 100000 --unit usec 'import string_reverse' 'string_reverse.reverse_recursion("ABç∂EF"*10)'
100000 loops, best of 5: 24.3 usec per loop
下表显示了最佳算法的结果和慢度。
算法
TimeIt 执行时间(最好的 5 个)
缓慢
切片
0.449 毫秒
1x
列出反向()
2.46 毫秒
5.48 倍
反转()+连接()
2.49 毫秒
K.Khx
for 循环
5.5 秒
12.25 倍
while 循环
9.4 毫秒
20.94 公斤
递归
24.3 毫秒
54.12 倍
3.概括
我们应该使用切片来反转 Python 中的字符串。它的代码非常简单和小巧,我们不需要编写自己的逻辑来反转字符串。此外,这是反转上述测试执行所确定的字符串的最快方法。
您可以从我们的GitHub 存储库签出完整的 Python 脚本和更多 Python 示例。
4.参考
-
reversed() API 文档
-
str.join() API 文档
更多推荐
所有评论(0)