一尘不染

确定字符串是否是回文

python

我编写了两个简单的函数来确定字符串是否是回文。我以为它们是等效的,但是2不起作用。为什么是这样?

1个

def is_palindrome(string):
    if string == string[::-1]:
        return True
    else:
        return False

2

def is_palindrome(string):
    if string == reversed(string):
        return True
    else:
        return False

阅读 150

收藏
2021-01-20

共1个答案

一尘不染

reversed 不会创建字符串,而是创建“反向”对象:

>>> reversed('radar')
<reversed object at 0x1102f99d0>

因此,字符串'radar'不等于object reversed('radar')。为了使它起作用,您需要确保reversed实际评估了该对象:

def is_palindrome(string):
    if string == u''.join(reversed(string)):
        return True
    else:
        return False

所述u''.join(reversed(string))插入件u''在每个字符串中的字符,并且这导致反转串之间正在变成一个字符串对象。

2021-01-20