2017-05-04 44 views
0

我正在研究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 

上理解为什么是这样的话会是很有益的任何帮助。

回答

1

问题是反转(“hello”)返回颠倒的迭代器对象,而不是“olleh”。这是为了节省内存,因为它不需要计算所有字母,直到你需要它们。

>>> reversed("hello") 
<reversed object at 0x02A7B170> 

如果这让您感到困惑,请查看迭代器是什么。

如果要扭转一个字符串,你可以做

s[::-1] 

其中S是你的字符串。

相关问题