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


6
クラスをそれ自体のリストのサブクラスとして定義することの欠点は何ですか?
私の最近のプロジェクトでは、次のヘッダーを持つクラスを定義しました。 public class Node extends ArrayList<Node> { ... } しかし、私のCS教授と話し合った後、彼はこのクラスは「記憶にとって恐ろしい」と「悪い練習」の両方になるだろうと述べました。前者は特に真実であり、後者は主観的であるとは思っていません。 この使用法の理由は、インスタンスの動作をカスタム実装または相互作用する複数の同様のオブジェクトの動作のいずれかによって定義できる、任意の深さを持つことができるものとして定義する必要があるオブジェクトのアイデアがあったことです。これにより、物理的な実装が相互作用する多くのサブコンポーネントで構成されるオブジェクトの抽象化が可能になります。¹ 一方で、これがいかに悪い習慣になるかがわかります。何かをそれ自体のリストとして定義するという考えは、単純でも物理的にも実装可能ではありません。 私がなぜ任意の有効な理由があるべきではない、それは私の使用を考慮すると、私のコードでこれを使うには? ¹これをさらに説明する必要がある場合、私は喜んでいるでしょう。この質問を簡潔にしようとしています。

5
C#List <>での.Any()の使用法は何ですか?
私は同僚とこれについて議論してきましたが、C#で、.Any特定のの使用が何であるかを理解できませんでしたList&lt;&gt;。 次のステートメントのように、配列内の要素の有効性を確認できます。 if (MyList.Any()){ ...} //Returns true or false これはまったく同じです if (MyList.Count() != 0) { ... } if声明の意図についてより一般的で読みやすく明確です。 最終的に、私たちはこの考えに固執しました: .Any() 使用することもできますが、同様に機能しますが、プログラマの意図についてはあまり明確ではなく、その場合は使用しないでください。 しかし、これは正しくないように感じます。私たちは何かを見逃しているに違いありません。 私たちは?
40 c#  array  list 

6
Pythonがリストを繰り返すときに個々の要素のコピーのみを作成するのはなぜですか?
Pythonで次のように書けば for i in a: i += 1 a変数iはの元の要素のコピーであることが判明したため、元のリストの要素は実際にはまったく影響しませんa。 元の要素を変更するには、 for index, i in enumerate(a): a[index] += 1 必要になります。 この振る舞いには本当に驚きました。これは非常に直感に反し、他の言語とは一見異なるように思われ、今日は長い間デバッグしなければならなかったコードにエラーが生じました。 以前にPythonチュートリアルを読んだことがあります。念のため、この本をもう一度チェックしましたが、この動作についてはまったく言及していません。 この設計の背後にある理由は何ですか?チュートリアルが読者が自然にそれを手に入れるべきであると信じるように、それは多くの言語の標準的な実践であると予想されますか?繰り返しで同じ動作が存在する他の言語は何ですか?将来的に注意する必要がありますか?
31 python  list  iterator 

3
リストまたは配列を使用する必要がありますか?
アイテム番号のUPCを計算するために、Windowsフォームで作業しています。 一度に1つのアイテム番号/ UPCを処理するものを正常に作成しました。次に、複数のアイテム番号/ UPCに対して拡張および実行したいと思います。 リストを使い始めてみましたが、行き詰まってしまいます。ヘルパークラスを作成しました。 public class Codes { private string incrementedNumber; private string checkDigit; private string wholeNumber; private string wholeCodeNumber; private string itemNumber; public Codes(string itemNumber, string incrementedNumber, string checkDigit, string wholeNumber, string wholeCodeNumber) { this.incrementedNumber = incrementedNumber; this.checkDigit = checkDigit; this.wholeNumber = wholeNumber; this.wholeCodeNumber = wholeCodeNumber; this.itemNumber = …
22 c#  array  winforms  list 

5
短所リストが関数型プログラミングに関連付けられているのはなぜですか?
ほとんどの関数型言語は、最も基本的なリストタイプとして、一重リンクリスト(「コン」リスト)を使用していることに気付きました。例には、Common Lisp、Haskell、およびF#が含まれます。これは、ネイティブリストタイプが配列であるメインストリーム言語とは異なります。 何故ですか? Common Lisp(動的に型指定される)の場合、短所はリスト、ツリーなどのベースにもなるほど十分に一般的であるという考えがあります。これは小さな理由かもしれません。 ただし、静的に型付けされた言語の場合、正当な理由を見つけることができず、反論さえ見つけることができます。 機能的なスタイルは不変性を促進するため、リンクリストの挿入の容易さはあまり利点ではありませんが、 機能的なスタイルは不変性を促進し、データ共有も促進します。配列はリンクリストよりも「部分的に」共有しやすいため、 同様に、通常の配列でパターンマッチングを行うこともできますし、さらに優れています(たとえば、右から左に簡単に折りたたむことができます)。 さらに、ランダムアクセスが無料で得られます。 そして(実用的な利点)言語が静的に型付けされている場合、通常のメモリレイアウトを使用して、キャッシュの速度を上げることができます。 では、なぜリンクリストを好むのでしょうか?

8
数字のリストで「穴」を見つける
並べ替えられていない整数のリストに存在しない(リストの最小値より大きい)最初の(最小の)整数を見つける最も速い方法は何ですか? 私の基本的なアプローチは、それらをソートしてリストをステップすることです、より良い方法はありますか?

1
Scalaでリストに追加するのにO(n)時間の複雑さがあるのはなぜですか?
List(:+)の追加操作の実行時間は、のサイズに比例して増加することを読みましたList。 に追加することListは、かなり一般的な操作のようです。なぜこれを行う慣用的な方法がコンポーネントを前に付けてからリストを逆にする必要があるのですか?実装はいつでも変更される可能性があるため、設計の失敗にもなりません。 私の観点からは、先頭と末尾の両方がO(1)である必要があります。 これには正当な理由がありますか?

1
高次リスト関数のC ++ 11サポート
などなど、ほとんどの関数型プログラミング言語(例えばCommon Lispの、スキーム/ラケット、Clojureの、ハスケル、スカラ座、OCamlで、SML)リスト上のいくつかの一般的な高階関数をサポートするには、map、filter、takeWhile、dropWhile、foldl、foldr(例えば参照、Common Lispの、スキーム/ラケットをClojureの並列リファレンスシート、Haskell、Scala、OCaml、およびSMLドキュメント。 C ++ 11には、リストに同等の標準メソッドまたは関数がありますか?たとえば、次のHaskellスニペットを考えます。 let xs = [1, 2, 3, 4, 5] let ys = map (\x -&gt; x * x) xs 最新の標準C ++で2番目の式をどのように表現できますか? std::list&lt;int&gt; xs = ... // Initialize the list in some way. std::list&lt;int&gt; ys = ??? // How to translate the Haskell expression? 上記の他の高階関数はどうですか? C …

1
一般的なリスト処理関数名の由来
リストまたは配列を操作するためのいくつかの高階関数が繰り返し採用または再発明されました。関数map、fold [ l | r ]とfilterは、Scheme、ML、Pythonなど、共通の祖先を持たないように見えるいくつかのプログラミング言語で一緒に見つかります。質問を集中させるために、これら3つの名前を使用します。 名前が普遍的ではないことを示すために、他の言語での同等の機能の名前のサンプルを以下に示します。C ++はい変換するのではなく、マップやremove_ifの代わりに、フィルタ(述語の意味を反転させます)。Lispは持っているでmapcarの代わりに、マップを、削除-IF-ない代わりに、フィルタ、および軽減の代わり倍(一部現代のLispが持っているバリアントマップが、これが表示されますがために派生形。)C#の用途は選択の代わりにマップし、どこの代わりに、フィルター。C#の名前はLINQを介してSQLに由来し、名前の変更にもかかわらず、それらの機能はMLの影響を受けたHaskellの影響を受けました。 map、fold、およびfilterという名前は広く普及していますが、普遍的ではありません。これは、彼らが有力な情報源から他の現代の言語に借用されたことを示唆しています。これらの関数名はどこから来たのですか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.