タグ

2022年5月2日のブックマーク (12件)

  • Pythonのtimeitモジュールで処理時間を計測 | note.nkmk.me

    Pythonファイル内で計測: timeit.timeit(), timeit.repeat() 例として、連続したn個の数値の合計値を算出するシンプルな関数test(n)の処理時間を測定する。 import timeit def test(n): return sum(range(n)) n = 10000 loop = 1000 result = timeit.timeit('test(n)', globals=globals(), number=loop) print(result / loop) # 0.0002666301020071842

    Pythonのtimeitモジュールで処理時間を計測 | note.nkmk.me
  • 【Python】リスト内包表記は本当に速いのか | スキルシェアリング.info

    はじめに どうもMizokeiです。 最近Pythonにハマっており、Python中心の生活を送っているMizokeiです。 Pythonのコーディングに関するを読んでいますと、「リスト内包表記」で書くと処理が速くなりエレガントであるという内容の記載がありました。 その日読んだに限らず、その他のやネットでも、同様な話がありますが、単純に、 …当に速いの? と疑問になりました。几帳面な人が 1ナノ秒くらい速いだけで言ってるんじゃないの? とも思いました。そりゃまあ、速いのは速いですけど・・・。みたいな。factベースですけど。みたいな。 そこで検証してみることにしました。記事の実行環境は以下です。 実行環境 Windows10 64bitPython 3.7 リスト内包表記とは? 検証に入る前に、「リスト内包表記」の説明を極めてザックリしておきます。初めて知ったり、分からなかったり

  • Python内包表記のまとめ(そして闇堕ち) - Qiita

    内包表記で遊んでたらいろいろと思うところがあったので、勉強ついでにまとめていきたいと思います 内包表記とは コンテナオブジェクト等がイケイケに書けるPython独自の記法 リスト操作をなかなか速く実装できるので、Pythonista必須能力 諸注意 対話モードでの実行を想定 Python3.7.4 出力結果は、見やすいように加工される場合があります(内容に変化はないです) まずは基から 内包表記の基

    Python内包表記のまとめ(そして闇堕ち) - Qiita
  • 結局pythonのforループはどのように書けば早いのか - Qiita

    結局pythonのforループはどのように書けばいいのか悩むことが多く、個人的に少し試してみましたので備忘録として書いておきたいと思います。 forループを高速にするための記法としては、「リスト内包表記」が有名ですが、ジェネレータを使った書き方も試してみます。 三重forループを以下4つの書き方を試してみます 愚直にforループを回す リスト内包表記 ジェネレータ内包表記 愚直にforループを回しつつyieldで返す(ジェネレータを作る) 比較してみる 愚直にforループを回す N = 300 lst=[] for X in range(N): for Y in range(N): for Z in range(N): lst.append(X+Y+Z) ans = sum(lst)

    結局pythonのforループはどのように書けば早いのか - Qiita
  • for処理とリスト内包表記とmapとnumpy(とついでにC++)での速度比較 - Qiita

    結論 数値計算はnumpyを使うと圧倒的に速い。リスト内包表記を使ったデータ処理は、可読性が悪くなるかもしれないが、コードが短くなり、forループを回すよりも高速になるので、メリットが多い。 論 プログラムにおいて計算速度は極めて重要です。あるリストに対して一括して処理を行いたい、という場面は多くあると思いますが、例えばリストの生成についてはforループで逐次処理するよりもリスト内包表記を使う方が速いという報告があります。一括処理の場合はどうでしょうか。 ここで、0以上1000000未満の整数に対し、500000を引いた後絶対値を取る、という操作を想定し、実際に計算させてみることにします。 limit = int(1e6) numbers = list(range(1, limit)) np_numbers = np.array(numbers) #numpy用にも

    for処理とリスト内包表記とmapとnumpy(とついでにC++)での速度比較 - Qiita
  • pythonの内包表記を少し詳しく - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    pythonの内包表記を少し詳しく - Qiita
  • 内包表記のあれやこれ。 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    内包表記のあれやこれ。 - Qiita
  • リスト内包表記入門 - Qiita

    TL;DR リスト内包表記、Pythonを使っていて知らない人はあまりいないかとは思いますが、実は無限の可能性を持っていたりします。 そもそも、リスト内包表記とはこんな感じでリストの初期化ができる機能です: # Equivalent to [0, 2, 4, 6, 8] [i*2 for i in range(5)] # 辞書も初期化 {chr(k): k for k in range(128)} # これはタプルじゃなくてジェネレータになる (i*2 for i in range(5)) # 引数が一つの場合はかっこを省略できる。 enumerate(chr(i) for i in range(128)) # こう書いても同じ enumerate((chr(i) for i in range(128))) # こう書くとリストに展開されるので非効率的 enumerate([chr(i)

    リスト内包表記入門 - Qiita
  • Pythonの内包表記はなぜ速い? : DSAS開発者の部屋

    「エキスパートPythonプログラミング」の発売が、Amazonや一部の書店で始まりました。 エキスパートPythonプログラミング 著者:Tarek Ziade 販売元:アスキー・メディアワークス 発売日:2010-05-28 クチコミを見る 今回は、「エキスパートPythonプログラミング」の2章から、リスト内包表記について補足します。 書で、リスト内方表記が速い理由について、次のような訳注を書きました。 訳注:リストに要素を append() する場合、インタプリタは「リストから append 属性を取り出してそれを関数として呼び出す」という処理をしなければなりません。 それに対して、リスト内包表記を使うと、インタプリタに直接「リストに要素を追加する」という処理をさせることができます。インタプリタが解釈する命令数が減る、属性の取り出しが不要になる、関数呼び出しが不要になる、という3

    Pythonの内包表記はなぜ速い? : DSAS開発者の部屋
  • Pythonのリスト内包表記の速度 - Qiita

    リスト内包表記は速いのか Python 2.6.6にて、10,000,000個の整数をappendするのに、以下の1,2,3の方法の実行時間を比較しました。 結論だけ言うと、3のリスト内包表記が期待通り高速でした。 追記にも書きましたが、ここで述べた内容はPython2.7系, 3.3系にも適用できます。 testfunc1: 空リストを用意してappend testfunc2: 1 + appendをオブジェクト化 testfunc3: リスト内包表記 準備 # 1. testfunc1: 空リストを用意してappend def testfunc1(rangelist): templist = [] for temp in rangelist: templist.append(temp) # 2. testfunc2: 1+appendをオブジェクト化 def testfunc2(ran

    Pythonのリスト内包表記の速度 - Qiita
  • Pythonでループ内の最大値を求める場合の速度比較[if, max, list, set, numpy] - Qiita

    Pythonでループ内の最大値を求める場合の速度比較[if, max, list, set, numpy]PythonnumpylistPython3速度比較 はじめに Project Eulerの問題を解いていると、ある条件下で答えが最大となるものを解答することが多いと感じました。 大体forやwhileのループで回した中で最大を出すのですが、毎ループごとにifで比較するのとlistなどに追加して最後にmax()で最大値を取得するのどっちが早いのだろうと疑問に思ったので試してみました。 試したもの ループごとにifで判定する ループごとにmax()で判定する listに追加していき、ループ後にmax() setに追加していき、ループ後にmax() numpy.ndarrayにnumpy.appendで追加していき、ループ後にmax() 追記:numpy.appendはこれまでlist.a

    Pythonでループ内の最大値を求める場合の速度比較[if, max, list, set, numpy] - Qiita
  • 競技プログラミングにおけるPython定数倍高速化Tips - Qiita

    想定読者 Pythonを(特にAtCoderなどの競技プログラミングで)使っていて、実行速度を改善したい方 計算量に関する初歩的な知識を持っている(ないしは他の記事などで補いながら読める)方 特に「計算量は正しいはずなのにPythonの遅さのせいでTLEしてしまう!」という方 はじめに 言語によって実行速度は異なります。全く同じ処理を書いたとしてもC++では10msで実行できたのにPythonだと100ms、みたいなことはよくあります。実行時間制限が言語問わず一定の競技プログラミングにおいては、実行速度が遅い言語は不利にもなりかねません。Pythonはそんな、実行速度が遅い言語の一つであり、不利な選択肢と言われることも多いです。 しかし! Pythonはなんと言っても書きやすい。簡潔に記述できるし読みやすい。どうにかPython競技プログラミングを戦いたい...ということで、少しでも処理

    競技プログラミングにおけるPython定数倍高速化Tips - Qiita