[解決済み] なぜPythonにはfirst(iterable)という組み込み関数がないのですか?
2023-07-17 18:57:47
質問
がないのは、何か理由があるのでしょうか?
first(iterable)
がないのはなぜでしょうか。
any(iterable)
と
all(iterable)
(にはありません(stdlib モジュールのどこかに隠されているかもしれませんが、私は
itertools
).
first
は短絡的なジェネレータ評価を行うので、不必要な(そして無限に続く可能性のある)操作を避けることができます;すなわち
def identity(item):
return item
def first(iterable, predicate=identity):
for item in iterable:
if predicate(item):
return item
raise ValueError('No satisfactory value found')
このように表現することができます。
denominators = (2, 3, 4, 5)
lcd = first(i for i in itertools.count(1)
if all(i % denominators == 0 for denominator in denominators))
明らかに、あなたは
list(generator)[0]
を実行することはできません。なぜなら、ジェネレータは終了しないからです。
あるいは、マッチさせたい正規表現がたくさんある場合 (それらがすべて同じ
groupdict
インターフェースを持つ場合に便利です)。
match = first(regex.match(big_text) for regex in regexes)
を避けることで、不要な処理を大幅に削減できます。
list(generator)[0]
を避け、正の一致で短絡することで、多くの無駄な処理を省くことができます。
どのように解決するのですか?
で
Python 2
では、イテレータがある場合、単にその
next
メソッドを呼び出すだけです。みたいな感じ。
>>> (5*x for x in xrange(2,4)).next()
10
で
Python 3
を使用すると
next
組み込み
をイテレータで指定します。
>>> next(5*x for x in range(2,4))
10
関連
-
[解決済み] Pythonで、あるオブジェクトが反復可能かどうかを判断するにはどうしたらいいですか?
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] AndroidでPythonを実行する方法はありますか?
-
[解決済み] なぜC++はPythonよりもstdinからの行の読み込みが遅いのですか?
-
[解決済み] Pythonのクラスはなぜオブジェクトを継承するのですか?
-
[解決済み] print関数の出力をフラッシュする(pythonの出力をバッファリング解除する)にはどうすればよいですか?
-
[解決済み] Pythonで複数行のコメントを作成する方法はありますか?
-
[解決済み] オブジェクトの現在のプロパティと値をすべて表示する組み込み関数はありますか?
-
[解決済み】なぜPythonはこのJSONデータをパースできないのですか?[終了] PythonがこのJSONデータをパースできないのはなぜですか?
-
[解決済み] PyQtアプリケーションのスレッド化。QtスレッドとPythonスレッドのどちらを使うか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】述語にマッチするシーケンスの最初の要素を探す
-
[解決済み] SQLAlchemy: セッションの作成と再利用
-
[解決済み] Spyderを仮想環境で動作させるには?
-
[解決済み] Pythonの要素別タプル演算(sumなど
-
[解決済み] タプルのリストを複数のリストに変換するには?
-
[解決済み] 値で列挙名を取得する [重複]。
-
[解決済み] 古いバージョンのPythonにおける辞書のキーの並び順
-
[解決済み] Pandasを使って、既存のExcelファイルに新しいシートを保存する方法は?
-
[解決済み] Flaskで非同期タスクを作る
-
[解決済み] virtualenvsはどこに作成するのですか?