我编写了两个简单的函数来确定字符串是否是回文。我以为它们是等效的,但是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
reversed 不会创建字符串,而是创建“反向”对象:
reversed
>>> reversed('radar') <reversed object at 0x1102f99d0>
因此,字符串'radar'不等于object reversed('radar')。为了使它起作用,您需要确保reversed实际评估了该对象:
'radar'
reversed('radar')
def is_palindrome(string): if string == u''.join(reversed(string)): return True else: return False
所述u''.join(reversed(string))插入件u''在每个字符串中的字符,并且这导致反转串之间正在变成一个字符串对象。
u''.join(reversed(string))
u''