タグ付けされた質問 「comparison」

データ比較とそれを達成するための効率的な方法に関する質問。2つの問題または概念の一般的な(メタ)比較には、このタグを使用しないでください。

12
IEEE754 NaN値に対してfalseを返すすべての比較の根拠は何ですか?
NaN値の比較が他のすべての値と異なる動作をするのはなぜですか?つまり、演算子==、<=、> =、<、>のいずれかまたは両方の値がNaNであるすべての比較は、他のすべての値の動作とは逆に、falseを返します。 これにより数値計算がある程度簡略化されたと思いますが、他の設計上の決定について詳細に説明しているKahanによるIEEE 754のステータスに関する講義ノートでさえ、明確に述べられた理由を見つけることができませんでした。 この逸脱した動作は、単純なデータ処理を行うときに問題を引き起こしています。たとえば、Cプログラムでいくつかの実数値フィールドに対してレコードのリストを並べ替える場合、NaNを最大要素として処理する追加のコードを記述する必要があります。そうしないと、並べ替えアルゴリズムが混乱する可能性があります。 編集: これまでの答えはすべて、NaNを比較することは無意味であると主張しています。 私は同意しますが、これは正解が偽であることを意味するのではなく、幸いなことに存在しないブール値ではない(NaB)です。 したがって、比較に対してtrueまたはfalseを返すかどうかの選択は、私の見解では任意であり、一般的なデータ処理では、データ構造を考慮せずに、通常の法則(==の再帰性、<、==、>のトリコトミー)に従うと有利です。これらの法律に依存するものは混乱します。 だから私は、哲学的推論だけでなく、これらの法律を破ることのいくつかの具体的な利点を求めています。 編集2: NaNを最大にすることが悪い考えになる理由が今理解できたと思います、それは上限の計算を台無しにするでしょう。 NaN!= NaNは、次のようなループで収束を検出しないようにするために望ましい場合があります。 while (x != oldX) { oldX = x; x = better_approximation(x); } ただし、絶対的な違いを小さな制限と比較することで記述します。だから私見これはNaNで反射性を壊すための比較的弱い議論です。

11
C#の文字列比較メソッドの違い
C#での文字列の比較は非常に簡単です。実際には、いくつかの方法があります。以下のブロックにいくつかリストしました。私が気になるのは、それらの間の違いと、1つを他のどれよりもいつ使用すべきかです。絶対に避けるべきですか?リストにないものはありますか? string testString = "Test"; string anotherString = "Another"; if (testString.CompareTo(anotherString) == 0) {} if (testString.Equals(anotherString)) {} if (testString == anotherString) {} (注:この例では、同等または同等以上の値を求めていますが、それ以上でも以下でも構いません)
261 c#  string  comparison 

13
2つの整数の範囲の重複をテストする最も効率的な方法は何ですか?
2つの包括的な整数範囲[x1:x2]と[y1:y2]が与えられた場合、x1≤x2とy1≤y2の場合、2つの範囲が重複しているかどうかをテストする最も効率的な方法は何ですか? 簡単な実装は次のとおりです。 bool testOverlap(int x1, int x2, int y1, int y2) { return (x1 >= y1 && x1 <= y2) || (x2 >= y1 && x2 <= y2) || (y1 >= x1 && y1 <= x2) || (y2 >= x1 && y2 <= x2); } しかし、これを計算するより効率的な方法があると思います。 操作が最も少ないという点で、どの方法が最も効率的でしょう。

25
2つの辞書を比較し、等しい(キー、値)ペアの数を確認する
私は2つの辞書を持っていますが、簡単にするために、次の2つを取り上げます。 >>> x = dict(a=1, b=2) >>> y = dict(a=2, b=2) 次に、の各key, valueペアxがで同じ対応する値を持っているかどうかを比較しyます。だから私はこれを書いた: >>> for x_values, y_values in zip(x.iteritems(), y.iteritems()): if x_values == y_values: print 'Ok', x_values, y_values else: print 'Not', x_values, y_values そして、それはa tupleが返され、次に等しいかどうか比較されるので機能します。 私の質問: これは正しいです?これを行うより良い方法はありますか?速度ではなく、コードの優雅さについて話しています。 更新:key, value等しいペアの数を確認する必要があることを言及するのを忘れていました。

11
Perl配列に特定の値が含まれているかどうかを確認するにはどうすればよいですか?
配列を反復処理せずに、配列内の値の存在を確認する方法を理解しようとしています。 パラメータのファイルを読み取っています。処理したくないパラメーターの長いリストがあります。これらの不要なパラメータを配列に配置しました@badparams。 新しいパラメーターを読み取り、それがに存在しない場合は@badparams処理します。に存在する場合は@badparams、次の読み取りに進みます。
239 perl  arrays  comparison 

10
大なり/小なりの切り替えステートメント
だから私はこのようなswitch文を使いたい: switch (scrollLeft) { case (<1000): //do stuff break; case (>1000 && <2000): //do stuff break; } これらのステートメント(<1000)または(>1000 && <2000)のいずれかが機能しないことがわかりました(さまざまな理由で)。私が求めているのは、それを行う最も効率的な方法です。私は30個のifステートメントを使用するのが嫌いなので、代わりにスイッチ構文を使用します。何かできることはありますか?

3
Pythonなしの比較:「is」または==を使用する必要がありますか?
比較するmy_var == Noneと警告が表示されますが、使用すると警告は表示されませんmy_var is None。 私はPythonシェルでテストを行い、両方が有効な構文であることを確認しましたが、私のエディターはそれmy_var is Noneが望ましいと言っているようです。 これは事実ですか、もしそうなら、なぜですか?

14
Javaで2つのXMLドキュメントを比較する最良の方法
基本的にカスタムメッセージ形式をXMLメッセージに変換し、それを相手側に送信するアプリケーションの自動テストを記述しようとしています。入力/出力メッセージのペアの適切なセットがあるので、必要なのは、入力メッセージを送信し、XMLメッセージが相手側から送信されるのをリッスンすることだけです。 実際の出力と期待される出力を比較するときが来たとき、いくつかの問題が発生しています。私の最初の考えは、期待されるメッセージと実際のメッセージで文字列比較を行うことだけでした。私たちが持っている例のデータは常に一貫してフォーマットされているわけではなく、XMLネームスペースに異なるエイリアスが使用されることがよくあります(時にはネームスペースがまったく使用されないこともあります)。 両方の文字列を解析し、各要素を調べて自分で比較できることはわかっています。これはそれほど難しくはありませんが、より良い方法や活用できるライブラリがあると感じています。 要約すると、問題は次のとおりです。 どちらも有効なXMLを含む2つのJava文字列が与えられた場合、それらが意味的に等しいかどうかをどのように判断しますか?違いを判断する方法がある場合のボーナスポイント。

5
== Integer.valueOf(String)との比較で127と128の結果が異なるのはなぜですか?
これらのコード行が異なる値を返す理由はわかりません。 System.out.println(Integer.valueOf("127")==Integer.valueOf("127")); System.out.println(Integer.valueOf("128")==Integer.valueOf("128")); System.out.println(Integer.parseInt("128")==Integer.valueOf("128")); 出力は次のとおりです。 true false true なぜ最初のものが戻ってきtrueて、2番目のものが戻ってくるのfalseですか?との間でわからないことは127あり128ますか?(もちろん、私はそれを知っています127< 128) また、なぜ3番目のものが返されるのtrueですか? 私はこの質問の回答を読みましたが、それがどのように返されるのtrueか、2行目のコードが返される理由はまだわかりませんfalse。
182 java  integer  comparison 

2
Python 2はstringとintをどのように比較しますか?リストが数値より大きいと比較し、タプルがリストより大きいとなぜですか?
次のスニペットは、出力で注釈が付けられます(ideone.comに表示されます): print "100" < "2" # True print "5" > "9" # False print "100" < 2 # False print 100 < "2" # True print 5 > "9" # False print "5" > 9 # True print [] > float('inf') # True print () > [] # True 誰かが出力がそのようなものである理由を説明できますか? …

4
Pythonでタプル比較はどのように機能しますか?
私はCore Pythonプログラミングの本を読んでいて、著者は次のような例を示しています。 (4, 5) < (3, 5) # Equals false だから、私は疑問に思っています、どのように/なぜfalseに等しいのですか?Pythonはこれら2つのタプルをどのように比較しますか? ところで、それは本で説明されていません。

7
Javaで整数ラッパーを比較するときに、128 == 128がfalseであるのに、127 == 127がtrueであるのはなぜですか?
class D { public static void main(String args[]) { Integer b2=128; Integer b3=128; System.out.println(b2==b3); } } 出力: false class D { public static void main(String args[]) { Integer b2=127; Integer b3=127; System.out.println(b2==b3); } } 出力: true 注:-128から127までの数値が当てはまります。


5
「!==」と「==!」の違い [閉まっている]
この質問が今後の訪問者を助けることはほとんどありません。それは、地理的に狭い地域、特定の瞬間、またはインターネットの世界中の視聴者に一般に適用できない非常に狭い状況にのみ関連しています。この質問の適用範囲を広げる方法については、ヘルプセンターをご覧ください。 7年前休業。 昨日、誰かが書いたPHPコードを変更したとき、私はこれにつまずきました。単純な比較(if ($var ==! " "))が期待どおりに機能しないことに困惑しました。いくつかのテストを行った後、そのコードを書いた人は誰でも比較演算子の==!代わりに使用されていることに気付きました!==。私は==!どの言語でも見たことがなかったので、このコードが一体どのように機能するのか疑問に思い、いくつかのテストを行いました。 <?php echo "int\n"; echo "1 !== 0: "; var_dump(1 !== 0); echo "1 !== 1: "; var_dump(1 !== 1); echo "1 ==! 0: "; var_dump(1 ==! 0); echo "1 ==! 1: "; var_dump(1 ==! 1); echo "bool\n"; echo "true !== false: "; var_dump(true …

19
2つのコレクション内のアイテムの順序に関係なく、等しいかどうかを比較する
2つのコレクションを(C#で)比較したいのですが、これを効率的に実装するための最良の方法がわかりません。 Enumerable.SequenceEqualに関する他のスレッドを読みましたが、私が探しているものとは異なります。 私の場合、2つのコレクションに同じアイテムが含まれている場合(順序に関係なく)、2つのコレクションは等しくなります。 例: collection1 = {1, 2, 3, 4}; collection2 = {2, 4, 1, 3}; collection1 == collection2; // true 私が通常行うことは、1つのコレクションの各アイテムをループして他のコレクションに存在するかどうかを確認し、次に他のコレクションの各アイテムをループして最初のコレクションに存在するかどうかを確認することです。(長さを比較することから始めます)。 if (collection1.Count != collection2.Count) return false; // the collections are not equal foreach (Item item in collection1) { if (!collection2.Contains(item)) return false; // the collections are not equal …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.