タグ

ブックマーク / atsuoishimoto.hatenablog.com (3)

  • Pythonのfor文は遅い? - atsuoishimoto's diary

    bicycle1885.hatenablog.com こちらの記事を拝見していて、ちょっと気になったので注釈。 PythonやRを使っている人で、ある程度重い計算をする人達には半ば常識になっていることとして、いわゆる「for文を使ってはいけない。ベクトル化*1しろ。」という助言があります。 これは、PythonやRのようなインタープリター方式の処理系をもつ言語では、極めてfor文が遅いため、C言語やFortranで実装されたベクトル化計算を使うほうが速いという意味です。 昔からよくこういう言い方がよくされるが、当にPythonのfor文は遅いのだろうか。 聞くところによるとRのfor文はガチで遅いそうだが、Pythonの計算が遅いのはインタープリタ方式だからでも、for文が遅いからでもない。もちろん、Pythonはインタープリタなので遅いし、for文だって極めて遅い。しかし、これはPyt

    Pythonのfor文は遅い? - atsuoishimoto's diary
    mooz
    mooz 2018/01/07
    面白かった。
  • Python3 Advent Calendar 二十日目 PEP 380 -- Syntax for Delegating to a Subgenerator - atsuoishimoto's diary

    Python3 Advent Calendarとやらに参加しろ、なんか書けと言われて泣く泣くキーボードを叩くatsuoishimotoです。 書けと言われてもネタがないのでどっかからパクろうと Python3 Advent Calendar を最初から目を通してみると、しょっぱなから良いネタがあった。何と初日の @shomah4aさんの エントリ。これをパクってしまおう。私のように清く正しい振る舞いを日頃から心がけてさえいれば、このようにあっさりとパクリの元ネタを見つけることが出来るのです。 元ネタの Python とジェネレータ関数 では Python 3.3に組み込まれる予定の PEP 380 -- Syntax for Delegating to a Subgenerator が紹介されているが、これをもうちょっと詳しく説明してみよう。 イテレータの委譲 これまでの Python

    Python3 Advent Calendar 二十日目 PEP 380 -- Syntax for Delegating to a Subgenerator - atsuoishimoto's diary
    mooz
    mooz 2012/03/06
    yield from 構文
  • Python2のstrは死んだ - atsuoishimoto's diary

    Python3の概略をざっと聞くと、Python3ではPython2のユニコード型が文字列型になり、文字列型はバイト文字列型になった、というイメージを持ってしまう人も多いだろう。Python2の s="spamspamspam" は、Python3の s=b"spamspamspam" と同じだ、と。 しかし、Python3に"バイト文字列"なんて存在しない。あるのは "bytes"だ。複数形を示す "s"に注意しよう。bytesはバイトのコンテナであり、バイトとは整数値だ。バイトは文字ですらないのだ。 そう、だからもう認めよう。Python2のstrは死んだ。Python3にはもう存在しない。strは消え去った。お亡くなりになった。お隠れになった。成仏した。主の御許に召された。バージョン履歴に残るゴミクズとなった。その生涯は幕を閉じ、アンコールに応じることもないのである。 strとbyt

    Python2のstrは死んだ - atsuoishimoto's diary
    mooz
    mooz 2011/04/25
  • 1