2016-07-10 141 views
0

我不明白为什么我的if-else语句没有按预期运行。我试着创建代码来测试一个回文串。我的打印函数向我展示了反向方法的作用,但是当我进入比较阶段时,我无法让它返回True。Python比较运算符

下面是代码:

def is_palindrome(a): 
    myList = [] 

    for i in a: 
     myList.append(i) 

    print myList 
    new = myList.reverse() 
    print myList 
    print new 

    if myList == new: 
     return True 
    else: 
     return False 


print is_palindrome("radar") 

这个返回False。我也尝试将if语句更改为if myList is new:,但不幸的是它仍然返回False。

任何洞察赞赏!

回答

5

list.reverse()就地,意思是它倒过来呼叫但不返回任何东西的列表。

该行print new应该打印None,因此myList == new将是False

相反,使用[::-1]这是不是在原地,并返回一个新的,颠倒列表,或使用更简单的方法来检测一个回文,例如:

def is_palindrome(iterable): 
    return iterable == iterable[::-1] 
+0

感谢。我理解就地的概念,但为什么它不返回/将该列表保存到变量'new'?编辑:刚刚看到你的后续行动,谢谢! – arumiat

+0

@arumiat因为根据定义,当一个方法是“就地”时,它不会返回任何东西。 – DeepSpace

+0

@arumiat由于'new = myList.reverse()'行不返回任何内容,它只是改变了myList。我不确定你是否理解这个概念... – Tim