我写了两个简单的函数来确定字符串是否是回文结构。我认为它们是等价的,但是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
答案 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"]))