如何在Python中反转一个字符串

218 阅读3分钟

在Python中,有四种主要的方法来反转一个字符串。

  • 切片 s[::-1] ,步长为负数,从右到左遍历字符串。
  • ''.join(reversed(s)) ,首先按反转顺序创建一个字符迭代器,然后 这些字符连接起来 ,得到反转后的字符串。
  • 一个使用 [range(len(s)-1, -1, -1)](https://blog.finxter.com/python-range-function/ "Python range() Function — A Helpful Illustrated Guide")函数来遍历从最后一个到第一个的索引。在循环体中,你可以按相反的顺序添加相应的元素。
  • 一个递归函数,它以一个字符串为元素,并返回最后一个字符和该函数对除最后一个字符外的其余字符调用自身的结果的连接。

这里有一个最简洁的方法来反转一个字符串的图形。

Reverse a String in Python

在Python中使用分片法反转一个字符串

切片 是一个Python概念,通过使用方括号符号s[start:stop:step] ,指定start 索引、stop 索引和step 大小,从一个给定的字符串s ,切出一个子串。你可以在Python中设置默认的开始和停止索引,并使用负的步长-1来逆转给定的字符串。各自的代码将是s[::-1] 来反转字符串s

下面是一个使用切片法反转字符串的例子。

s = '!dlrow olleh'
res = s[::-1]

print(res)
# 'hello world!'

在Python中使用For Loop反转一个字符串

反转字符串的传统方法是使用for 循环,将剩余字符串的最后一个字符连续添加 到一个最初为空的字符串变量中。当你到达最后一个字符串字符时,并且你一直在向字符串添加最后一个元素,你就会得到反转顺序的原始字符串。

这在下面的例子中有所体现。

s = '!dlrow olleh'
res = ''

for i in range(len(s)-1, -1, -1):
    res += s[i]
    
print(res)
# hello world!

在Python中使用函数reverse()反转一个字符串

Python 的内置 [reverse()](https://blog.finxter.com/python-reverse/ "https://blog.finxter.com/python-reverse/")函数创建了一个新的可迭 代的元素,其顺序是相反的。然而,这个迭代器还不是一个字符串--完全反转原始字符串,你需要使用内置的 [string.join()](https://blog.finxter.com/python-string-to-list-the-most-pythonic-way/ "Python String to List | The Most Pythonic Way")方法将迭代表中的元素按顺序组合起来。

接下来给出一个例子。

s = '!dlrow olleh'
res = ''.join(reversed(s))

print(res)
# hello world!

在Python中使用递归来反转一个字符串

要使用递归来反转一个字符串,你可以定义一个调用自己的函数。

  • 递归的基本情况是如果函数在空字符串上被调用,在这种情况下,字符串是它自己的反向字符串。
  • 递归的非基础情况是,如果字符串是非空的--现在你可以将在除最后一个和第一个字符之外的所有字符上调用函数的结果连接起来,并返回结果。

然后该函数将在越来越短的字符串上递归调用自己,直到达到递归基数情况。

def recursive_reverse(s):
    if s:
        return recursive_reverse(s[1:]) + s[0]
    return ''

s = '!dlrow olleh'
print(recursive_reverse(s))
# hello world!

在Python中用一行字反转一个字符串

在一行Python代码中反转一个字符串的最简短解决方案是使用负步长-1的切片法。例如,要反转字符串'!dlrow olleh' ,你可以用方括号符号[::-1] ,从右到左,返回反转的字符串。

这里有一个例子。

print('!dlrow olleh'[::-1])

The postReverse a String in Pythonfirst appeared onFinxter.