2016-09-21 3 views
0

Pythonの初心者で、コードが入力1 - > 0以外のすべてのテストケースを渡しています。これは1 - > 0ではなく何も返しません。これはNoneの値と関係がありますか?リンクリストから重複を削除するコードに問題がありますか?

def RemoveDuplicates(head): 
    if head == None or head.next == None: 
     return 
    else: 
     temp = head 
     while(temp.next != None): 
      if temp.data == temp.next.data: 
       temp.next = temp.next.next 
      else: 
       temp = temp.next 
     return head 
+0

"私のコードに何が間違っていますか?"まず第一に - インデントが壊れた – user3159253

+1

私は、 'return'ではなく' return'の代わりに 'return head'を返すべきだと考えています。これは' None'を返すことと同じです。 – Karin

+1

また、side-note: '== None'または'!= None'をテストしないでください。 'None'はシングルトンであり、充実した比較エンジンを呼び出すのは無駄です。 ( 'Pythonバージョンに依存する)' __coerce__'のいくつかの組み合わせに対する複雑な呼び出しのセットではなく、C層でのポインタ比較のようなアイデンティティテストである '' None'または '' None ' '__cmp__'、' __eq__'および/または '__ne__'です。 – ShadowRanger

答えて

0

== Noneの代わりにis Noneを試してください。シングルトンとの比較は、isまたはis notを使用して行う必要があります。

+1

これは良いアドバイスですが、問題とはほとんど関係がありません。ほとんどの場合、パフォーマンスとスタイルの修正が行われます(正確性に影響を与える時間はほとんどありません) 。 OPの問題を実際に解決したり解決したりすることはありません。 – ShadowRanger

0

私たちは頭部のクラスを見ることができませんし、それが定義した操作は、__eq__そのクラスに定義されている魔法の機能ですか?

head.next == Noneは、クラスについてはhead.next.data == Noneと評価される可能性がありますか?この場合、0 == NoneはTrueと評価されます。他の人がhead.next is None

を使用することによって、これは固定されて述べてきたように

私はあなたが関係なく、最初のケースでreturn headことになっているが、それは、この場合にトリガされなければならないように、それはいないようだ疑い評価しない限り、I上記のことが起こっている。

関連する問題