[解決済み] なぜ任意の(True for ... if cond)は任意の(cond for ...)よりずっと速いのですか?
2023-03-05 12:30:07
質問
リストが奇数を含むかどうかを確認する2つの類似した方法。
any(x % 2 for x in a)
any(True for x in a if x % 2)
によるタイミング結果
a = [0] * 10000000
(でのタイミング結果です(各5回ずつ、時間は秒単位)。
0.60 0.60 0.60 0.61 0.63 any(x % 2 for x in a)
0.36 0.36 0.36 0.37 0.37 any(True for x in a if x % 2)
なぜ2番目の方法はほぼ2倍の速さなのか?
私のテストコードです。
from timeit import repeat
setup = 'a = [0] * 10000000'
expressions = [
'any(x % 2 for x in a)',
'any(True for x in a if x % 2)',
]
for expression in expressions:
times = sorted(repeat(expression, setup, number=1))
print(*('%.2f ' % t for t in times), expression)
どのように解決するのですか?
最初の方法は、すべてを
any()
に送信し、2 番目のメソッドは
any()
には奇数の時のみ送信されます。
any()
は通過する要素が少なくなります。
関連
-
[解決済み] B "の印刷が "#"の印刷より劇的に遅いのはなぜですか?
-
[解決済み] 要素ごとの加算は、結合ループよりも分離ループの方がはるかに高速なのはなぜですか?
-
[解決済み] なぜC++はPythonよりもstdinからの行の読み込みが遅いのですか?
-
[解決済み] <は<=より速いのか?
-
[解決済み] Collatz予想の検証を行うC++のコードは、なぜ手書きのアセンブリよりも高速に動作するのでしょうか?
-
[解決済み] なぜPythonのコードは関数の中でより速く実行されるのですか?
-
[解決済み] なぜJavaでは2 * (i * i)の方が2 * i * iより速いのですか?
-
[解決済み] なぜ[]はlist()よりも速いのですか?
-
[解決済み】PyPyが6.3倍速いなら、CPythonよりPyPyを使うべきじゃないのか?
-
[解決済み] Ctrl-Cで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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pythonのマルチプロセッシングプールimap_unorderedの呼び出しの進捗を表示しますか?
-
[解決済み] Pythonです。未束縛のメソッドを束縛する?
-
[解決済み] Pythonのキャッシュライブラリはありますか?
-
[解決済み] Pythonのインスタンス変数とクラス変数
-
[解決済み] なぜ(0-6)は-6=偽なのか?重複
-
[解決済み] DataFrameに日付間の日数カラムを追加する pandas
-
[解決済み] 文字列のリストを内容に基づいてフィルタリングする
-
[解決済み] Django で全てのリクエストヘッダを取得するにはどうすれば良いですか?
-
[解決済み] PyQtアプリケーションのスレッド化。QtスレッドとPythonスレッドのどちらを使うか?
-
[解決済み] 新しいpip backtrackingの実行時問題の解決