問題タブ [iterable]

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 投票する
2 に答える
27132 参照

java - getFirst(iterable)メソッドがないのはなぜですか?

Iterablesは2つの方法を提示しますgetLast

しかし、1つだけgetFirst

対称性を破る設計/実装の理由はありますか?

0 投票する
3 に答える
447 参照

ruby - 2つの配列からアイテムを織り交ぜるにはどうすればよいですか?

どうすればこれから行くことができますか?

2,3,4その後、戻り3,4,5 -> 2,3,4,3,4,5ます。これは単なる例であり、実際の使用法ではないことは明らかです。

代わりに、返してほしい2,3 3,4 4,5 -> 2,3,3,4,4,5。可能な数値のそれぞれについて、各プットを繰り返してほしい。この場合12次のプットに進む前に、「number」の2つの可能な値です。

これを行う1つの方法は、2つのリストを作成し[2,3,4]、メソッドを[3,4,5]使用しzipてそれらをのように結合することです[2,3,4].zip([3,4,5]) -> [2,3,3,4,4,5]

0 投票する
1 に答える
95 参照

python - クラスを反復可能にすると、なぜこの出力が生成されるのですか?

重複の可能性:クラスでgetitem
を定義すると、Python で反復可能になるのはなぜですか?

出力が得られます:

クラス b のインスタンスを反復処理すると、整数が出力されます。何故ですか?

( Why does defined __getitem__ on a class make iterable in python?を見ているときに上記のプログラムに出くわしました)

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

string - 文字列の反復処理の抑制

アップデート:

2006 年に python.org で、組み込み文字列を反復不可能にするアイデアが提案されました。私の質問は、この機能をたまにだけ抑制しようとしているという点で異なります。それでも、このスレッド全体は非常に関連性があります。

non-iterableを試験的に実装した Guido による批判的なコメントを以下に示します。str

[...] これを実装しました (実行するのは非常に簡単でした) が、文字列を繰り返し処理する多くの場所を修正する必要があることがわかりました。例えば:

  • sre パーサーとコンパイラーは set("0123456789") のようなものを使用し、入力正規表現の文字を反復して解析します。

  • difflib には、文字列の 2 つのリスト (ファイルの典型的な行ごとの diff)、または 2 つの文字列 (典型的な行内の diff)、または任意の 2 つのリスト (一般化されたシーケンスの diff) のいずれかに対して定義された API があります。 .

  • optparse.py、textwrap.py、string.py の小さな変更。

そして、私は regrtest.py フレームワークが機能する時点でもありません (difflib の問題により)。

私はこのプロジェクトを放棄します。パッチは SF パッチ 1471291 です。私はもはやこの考えに賛成ではありません。それは実用的ではなく、文字列を反復処理する正当な理由はほとんどないという前提は、私​​が sre と difflib の両方で見つけた使用例によって反駁されています。

元の質問:

文字列が iterable であることはこの言語の優れた機能ですが、ダック タイピングと組み合わせると、次のような問題が発生する可能性があります。

例外は発生しませんisinstance(fields, str)。無数の場所でテストする以外に、これをキャッチする簡単な方法はありません。状況によっては、このバグを見つけるのに非常に長い時間がかかります。

プロジェクト内で文字列が反復可能なものとして扱われないようにしたいと考えています。それは良い考えですか?簡単かつ安全に行うことができますか?

おそらく、オブジェクトを反復可能オブジェクトとして扱いたい場合はstr、明示的に呼び出す必要があるように、ビルトインをサブクラス化できます。get_iter()次に、文字列リテラルが必要なときはいつでも、代わりにこのクラスのオブジェクトを作成します。

接線的に関連するいくつかの質問を次に示します。

Python 変数が文字列かリストかを確認するにはどうすればよいですか?

変数が反復可能であるが文字列ではないことを伝える方法

0 投票する
2 に答える
24128 参照

c# - クラスを反復可能にするにはどうすればよいですか?

これは私のクラスです

そのクラスを反復可能にして、以下のように使用したい

myVarWordSimilaritycsWordSimilarityタイプです。intしたがって、すべてのパブリック変数を反復処理したいと考えています。csWordSimilarity上記のように反復可能にするためにクラスを変更するにはどうすればよいですか。

0 投票する
2 に答える
505 参照

python - リストの結合を格納/返すキャッシュ プロパティの作成

コンパイル済みプロパティが、最初のアクセス時に計算およびキャッシュされるプロパティである場合。私も同じことをしたいのですが、代わりに、複数のリストを取得して 1 つのマスター リストにコンパイルします。

ちょっとした背景として、私は現在 GAE/python/webapp2/jinja2 というサイトを構築しています。細かいことはさておき、ルートのリストはかなり大きくなっています。現在、静的ルート、動的ルート、およびリダイレクトをすべて 1 つのリストにマッシュアップしています。

例:

簡単にするために、次のようにグループ化したいと思います。

現在私は使用しています:

これは機能しますが、これをクラスプロパティにラップしてキャッシュ可能にする必要があると考えています。

これまでのところ、私は試しました:

しかし、「TypeError: 'type' object is not iterable」というエラーが表示されます。

だから私は2つのことが必要です:

  1. 結合されたリストをクラス プロパティとしてラップする方法
  2. プロパティをキャッシュ可能にする方法 (できればデコレータとして)

私が扱いたくないのは、すべての呼び出しでリストのコンパイルを行うことによって発生する追加のオーバーヘッドです。

キャッシュされたプロパティデコレータについて読んで使用しましたが、それらがどのように機能するか、および/またはリストを操作するために簡単に適応できるかどうかについてはよくわかりません。

注: わざとではありますが、ここでの例は単純にすることを目的としています。ここでの長期的な目標は、アプリの構成に応じて 2 つの異なるルート セットを提供することです。

0 投票する
1 に答える
3506 参照

python - Pythonは、埋め込まれたイテラブルを返すことでクラスをイテラブルにします

インスタンス変数としてイテラブルを持つPythonのクラスがあります。埋め込まれた iterable を反復処理して、クラスのインスタンスを反復処理したいと考えています。

これを次のように実装しました。

__iter__()それは特別なメソッドであるため、イテラブルでメソッドを呼び出すのはあまり快適ではありません。これは、Pythonでこの問題を解決する方法ですか、それともよりエレガントな解決策がありますか?

0 投票する
1 に答える
757 参照

generics - Hamcrest: iterableWithSize が失敗すると、「got: com.xxx.MyIterClass$1@1970ae0」のような悪いメッセージが表示されます

hamcrest (1.3.RC2、JUnit 依存関係なし) で、SpringDataNeo4j ライブラリで iterableWithSize() を使用すると失敗します。

私はこのようにIteratorパラメータ化された(の拡張)を持っていますContent

どこEndResultですか

パッケージ org.springframework.data.neo4j.conversion; public インターフェイス EndResult extends Iterable {...}

そしてContentaa @NodeEntityPojoです。

Mark Petersの助けを借りて、私はこのように呼ぶべきであることを学びました

なぜなら、 iterable 自体の具象型ではなく、iterableWithSizeあなたのコンポーネント型に型付けされているからです。Iterable

しかし、テストが実行されると、

1) 何か間違ったことをしている、または 2) hamcrest または 3) Spring Data Neo4j にバグがあるかどうかを把握しようとして、手元のオブジェクトをチェックしましたが、次のように問題ないようですIterable:

だから、ハムクレストに問題があると結論付けているのではないでしょうか。IsIterableWithSize で似たようなことを試した人はいますか?

テスト コードはhttps://github.com/anodynos/SpringDataNeo4jTrials/blob/master/src/test/java/sdnTests/test/HamcrestIteratorSizeTest.javaです。

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

java - Iterableへのコレクション

やのjava.lang.Iterableようなコレクションからを取得するにはどうすればよいですか?ありがとう!SetList

0 投票する
2 に答える
1390 参照

java - JunitはIterableを実装します

Iterableを実装するクラスでテストを実行しようとしています。hasNext()、next()などのitoratorクラスのメソッドをテストする場合。したがって、list.itorator()。Next();を呼び出すと 何も起こりません。ノードはリスト内の現在のノードであり、次のノードではありません。しかし、私がListIteratorを実行すると、itrList = new ListIterator(list); その中のコードは機能します。public Iterator iterator(){return new ListIterator(this);を呼び出しています。それで、私は正しく/把握していないのですか?助けてくれてありがとう。