我正在研究python中流行的回文问题。我原本以为这段代码就足够了:
def is_palindrome(input_string):
rev_str = reversed(input_string)
if rev_str == input_string:
return True
else:
return False
但是只有一些例子最终是正确的。我检查了解决方案,我不得不将字符串更改为列表以使代码正常工作,但我不明白为什么。
def is_palindrome(input_string):
rev_str = reversed(input_string)
if list(rev_str) == list(input_string):
return True
else:
return False
了解为何会出现这种情况的任何帮助都会非常有用。
答案 0 :(得分:1)
问题是reverse(“hello”)返回一个反向迭代器对象,而不是“olleh”。这是为了节省内存,因为在您需要它们之前不需要计算所有字母。
>>> reversed("hello")
<reversed object at 0x02A7B170>
如果这让您感到困惑,请查看迭代器是什么。
如果要反转字符串,可以执行
s[::-1]
其中s是你的字符串。