为什么我不能在没有列表的情况下检查字符串的比较?
Why can I not check for comparisons on strings without them being lists?
我正在研究 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
任何有助于理解为什么会出现这种情况的帮助都会非常有帮助。
问题是 reversed("hello") returns 一个反向迭代器对象,而不是 "olleh." 这是为了节省内存,因为它不需要计算所有的字母直到你需要它们。
>>> reversed("hello")
<reversed object at 0x02A7B170>
如果这让您感到困惑,请查看什么是迭代器。
如果你想反转一个字符串,你可以这样做
s[::-1]
其中 s 是您的字符串。
我正在研究 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
任何有助于理解为什么会出现这种情况的帮助都会非常有帮助。
问题是 reversed("hello") returns 一个反向迭代器对象,而不是 "olleh." 这是为了节省内存,因为它不需要计算所有的字母直到你需要它们。
>>> reversed("hello")
<reversed object at 0x02A7B170>
如果这让您感到困惑,请查看什么是迭代器。
如果你想反转一个字符串,你可以这样做
s[::-1]
其中 s 是您的字符串。