タグ

ブックマーク / lab.hde.co.jp (2)

  • Python文字列バッファいろいろ  〜一番速い奴連れてこいシリーズ〜  - HDEラボ

    Pythonの文字列は、Java等と同様にImmutableであり、頻繁に文字列を操作する場合においては、気をつけないと思わぬパフォーマンスの低下を招きます。 代表的なケースとしては、文字列に新たな文字列をどんどん連結していくケース。 s = s + "新たな文字列1" s = s + "新たな文字列2" s = s + "新たな文字列3" . . . . . . とせずに、配列を使って、 L = [] L.append("新たな文字列1") L.append("新たな文字列2") L.append("新たな文字列3") . . . . . . s = ''.join(L) とするのが定石イディオムとされています(最初の例では、毎回新たな文字列が生成されるオーバーヘッドがあるとされる。参考:「Pythonクックブック」)。 これは当に正しいのでしょうか。また、mutable文字列っぽいア

  • PythonのUnicodeEncodeErrorを知る - HDEラボ

    Pythonにはじめて触って、いつのまにか1年が過ぎたのですが、一番はまったのは、やっぱりunicodeの扱いだったと思います。 特に、 UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-12: ordinal not in range(128) のようなエラーにはさんざん悩まされました。ここがたとえばrubyなど他の言語と比べてわかりにくいために、Pythonが取っつきにくい言語になっているのではないか、と個人的には思います。 そこで、このエラーに関係するはまりどころとTipsをいくつか列挙してみました。これからPythonに触れられる方の参考になればと思います。 なお、環境はUNIX上のPython 2.4, 2.5を想定しています。 u1はunicode型で、s1はstr型です。s1にどのよ

  • 1