确定字符串是否为回文结构

时间:2015-02-02 01:28:59

标签: 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

4 个答案:

答案 0 :(得分:10)

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

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

因此,字符串'radar'不会与对象reversed('radar')进行比较。要使其工作,您需要确保实际评估reversed对象:

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

u''.join(reversed(string))在字符串中的每个字符之间插入u'',这会导致反向字符串变为字符串对象。

答案 1 :(得分:1)

在第二个中,您需要从str类型实例中创建reversed - 这并不难:

if string == ''.join(reversed(string)):

答案 2 :(得分:0)

对于字符串:

def is_palindrome(s):
    """Return True if a string is a palindrome."""
    return s == s[::-1]

对于一般的迭代(包括字符串):

def is_palindrome(iterable):
    """Return True if an iterable is a palindrome."""
    if list(iteable) == list(reversed(iterable))

答案 3 :(得分:0)

str = input("Enter a string")
print("\n".join(["Inserted string is" + "NOT"*((str[::-1])!=str)+ " a palindrome"]))