2016-07-10 18 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 == newFalseあろう。

代わりに、ではありませんインプレースと新しい、逆のリストを返します[::-1]を使用し、または例えば、回文を検出するための簡単な方法を使用します。

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

感謝を。インプレースのコンセプトを理解していますが、そのリストを変数newに戻したり保存したりするのはなぜですか?編集:あなたのフォローアップを見た、ありがとう! – arumiat

+0

@arumiat定義上、メソッドが "インプレース"のときは、何も返されません。 – DeepSpace

+0

@arumiat 'new = myList.reverse()'行は何も返さないので、myListが変更されただけです。私はあなたがコンセプトを理解しているとは確信していません... – Tim