問題タブ [list-comprehension]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
6 に答える
227501 参照

python - リスト内で最長の文字列を選択するPythonの最も効率的な方法は?

可変長のリストがあり、現在評価されているリスト項目がリストに含まれている最長の文字列であるかどうかをテストする方法を見つけようとしています。そして私はPython2.6.1を使用しています

例えば:

確かに、私が見落としている短くてエレガントな単純なリスト内包表記はありますか?

0 投票する
7 に答える
51716 参照

java - Java での Python のようなリスト内包表記

Java ではメソッドをパラメーターとして渡すことができないため、Python のようなリスト内包表記を Java で実装するには、どのようなトリックを使用しますか?

文字列のリスト (ArrayList) があります。別のリストを取得するには、関数を使用して各要素を変換する必要があります。String を入力として受け取り、別の String を出力として返す関数がいくつかあります。リストと関数をパラメーターとして指定できる汎用メソッドを作成して、各要素が処理されたリストを取得できるようにするにはどうすればよいですか。文字通りの意味では不可能ですが、どのようなトリックを使用すればよいですか?

もう 1 つのオプションは、小さな文字列処理関数ごとに新しい関数を作成することです。この関数は、単純にリスト全体をループしますが、これはあまりクールではありません。

0 投票する
7 に答える
1986 参照

python - リスト内包表記と例外を使用していますか?

リストがあるとしましょう。そのリストが別のリスト内に存在するかどうかを確認したいと思います。私はこれを行うことでそれを行うことができます:

これは問題なく動作しますが、必要な値が欠落しているときに例外を発生させ、その値が欠落しているとしましょう。リスト内包表記を使用してそれを行うにはどうすればよいですか?

私は多かれ少なかれ興味があります、すべての兆候はノーを指しているようです。

編集ああ私はこれを意味しました:

それらを見ると、エラーが発生した値を見つける方法がわかりません

0 投票する
4 に答える
6159 参照

c# - C# リスト内包表記 = 純粋な構文シュガー?

次の C# コードを検討してください。

forこれは、 orforeachループをワンライナーとして記述できるようにするための純粋な構文糖ですか? 上記のリスト内包表記をループ構成よりも効率的にするコンパイラーの最適化が隠れてありますか? これは内部でどのように機能しますか?

0 投票する
5 に答える
1731 参照

python - Python リスト内包表記で値をキャッシュする

次のリスト内包表記を使用しています。

if ステートメントでチェックされたときの値を「キャッシュ」して、戻りリストを生成するときに obj を再度obj.get("file")呼び出す必要がないようにする方法はありますか?get

0 投票する
4 に答える
388 参照

python - これを1行でどのように書くことができますか?

以前にいくつかのPythonリスト内包表記を見たことがありますが、これはPythonの1行で実行できますか?

0 投票する
4 に答える
1330 参照

python - リスト内包表記を使用してリンクされたリストを上に移動する方法は?

リスト式を使用して、リンクされたリストのような階層構造をトラバースする方法を考えてみましたが、うまくいくと思われるものは何も思いつきませんでした。

基本的に、このコードを変換したい:

次のようなワンライナーに:

???ただし、その部分でトラバーサルを一般的な方法で行う方法がわかりません(可能であれば)。同様.parentの型属性を持つ構造体がいくつかありますが、それぞれに生成関数を記述したくありません。

編集:

__iter__オブジェクト自体に含まれる値を反復処理するために既に使用されているため、オブジェクト自体のメソッドを使用することはできません。liori を除く他のほとんどの回答では、属性名がハードコーディングされていますが、これは避けたいことです。

lioriの答えに基づく私の適応は次のとおりです。

0 投票する
4 に答える
3781 参照

python - Pythonのheapify()は、リスト内包表記とスライスでうまく機能しませんか?

やや怠惰に実装したプログラムに興味深いバグを見つけ、それを正しく理解しているかどうか疑問に思いました。短いバージョンでは、Pythonのheapq実装は実際にはリストを並べ替えず、ヒープ中心の方法でリストを作成するだけです。具体的にはheapify()、順序付けられた方法でリストの理解を容易にする順序付けられたリストになることを期待していました。

Pythonのドキュメントのように、優先度キューの例を使用します。

結果は

これは、リストの元の順序ではなく、ここで説明するヒープ中心の順序であることに注意してください。私はこれが完全に注文されることを怠惰に期待していました。

テストとして、heapify()を介してリストを実行しても、変更はありません(リストはすでにヒープのように順序付けられているため)。

関数を使用してリストを反復処理すると、heappop()期待どおりの順序になります。

したがって、heapq(少なくとも人間の意味では)リストを順序付けないように見えますが、heappush()andheappop()関数はヒープのように順序付けられたリストを取得できます。

結果:ヒープリストに対するスライスおよびリスト内包演算は、順序付けされていない結果になります。

これは本当ですか、そしてこれは常に本当ですか?

(BTW:WinXPシステム上のPython 3.0.1)