Python的str对象没有内置的反向函数。实施此方法的最佳方式是什么?

如果提供一个非常简洁的答案,请详细说明其效率。例如,str对象是否转换为其他对象等。


当前回答

def reverse_string(string):
    length = len(string)
    temp = ''
    for i in range(length):
        temp += string[length - i - 1]
    return temp

print(reverse_string('foo')) #prints "oof"

这通过循环一个字符串并将其值按相反顺序分配给另一个字符串来实现。

其他回答

def reverse_string(string):
    length = len(string)
    temp = ''
    for i in range(length):
        temp += string[length - i - 1]
    return temp

print(reverse_string('foo')) #prints "oof"

这通过循环一个字符串并将其值按相反顺序分配给另一个字符串来实现。

这里有一个不花哨的:

def reverse(text):
    r_text = ''
    index = len(text) - 1

    while index >= 0:
        r_text += text[index] #string canbe concatenated
        index -= 1

    return r_text

print reverse("hello, world!")
def reverse(input):
    return reduce(lambda x,y : y+x, input)

1.使用切片表示法

def rev_string(s): 
    return s[::-1]

2.使用reversed()函数

def rev_string(s): 
    return ''.join(reversed(s))

3.使用递归

def rev_string(s): 
    if len(s) == 1:
        return s

    return s[-1] + rev_string(s[:-1])

使用切片:

>>> 'hello world'[::-1]
'dlrow olleh'

切片符号采用[start:stop:step]的形式。在这种情况下,我们省略了开始和停止位置,因为我们需要整个字符串。我们还使用step=-1,意思是“从右到左重复一个字符”。