私はエリクシルを学ぼうとしている。私が遭遇した他の多くの言語では、これは簡単な作業になります。エリクサー:リストの真ん中のアイテムを探す
しかし、私は私のリストの中央値の項目を見つけるために必要なElixirのインデックスでリスト項目にアクセスする方法を理解できないようです。どんな説明も大歓迎です!
私はエリクシルを学ぼうとしている。私が遭遇した他の多くの言語では、これは簡単な作業になります。エリクサー:リストの真ん中のアイテムを探す
しかし、私は私のリストの中央値の項目を見つけるために必要なElixirのインデックスでリスト項目にアクセスする方法を理解できないようです。どんな説明も大歓迎です!
Enum.at/3
を調べるとよいでしょう。
a = [1,2,3,4,5]
middle_index = a |> length() |> div(2)
Enum.at(a, middle_index)
注:それは、リストの長さを見つけるために、リスト全体をトラバースして、実際の要素が何であるかを見つけるために、リストの途中でトラバースする必要があるので、これは高価です。一般に、リスト内の項目にランダムアクセスが必要な場合は、別のデータ構造を探している必要があります。
ご返信ありがとうございます。今は、リストの中央値を見つける前に 'range 'をリストに変換していますが、あなたが指摘したように、それは高価です(特にリストが本当に大きい場合)。これを行うより効率的な方法はありますか? –
これで正確に何を解決しようとしていますか? –
私は、 "Elixir Programming Elixir 1.3"のエクササイズの1つを解決しようとしています。ユーザーが指定する範囲の中で、小さすぎる/大きすぎる入力のみに基づいてユーザーが考えている数字を推測します。私は、今質問の範囲を残しているように感じる。 –
これは、私はそれを行うだろうかです:
Enum.at(x, div(length(x), 2))
Enum.at/3
は可算の特定のインデックスの値を取得します。 div/2
は、Python 2.x /
整数部に相当します。
これは私が探していたものです。ありがとうございます。私はどのように 'Enum.at/3'を見逃したのか分かりません。 –
あなたのリストはタプルであり、リストではありません。 – Neil
変数に 'list'、' set'などの名前を付けないでください。 –
Pythonの部分は重要ではなく、私がElixirでやりたいことの概念を示すことだけでした。 –