タグ

ProgrammingとPythonに関するagwのブックマーク (766)

  • OrderedSet « Python recipes « ActiveState Code

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 import collections class OrderedSet(collections.MutableSet): def __init__(self, iterable=None): self.end = end = [] end += [None, end, end] # sentinel node for doubly linked list self.map = {} # key --> [key,

    agw
    agw 2010/03/16
    本家ドキュメントより参照されているMutableSetのサンプル例。
  • PythonRecipe

    このページは、Rubyレシピブック (詳細) をPythonで書こうというたくらみです。内容は当たり前のことばかりですが、たまにしかコードを書かない人間は、こうしたことがわからなくてイライラしてしまいます。10行くらいのプログラムならさっと見てさっとかけるようにするのが目標です。 2008年1月21日19:00 ロボットによる荒らし対策を施しました。 レシピブック作成にご協力いただける方がいらっしゃいましたら、最初にユーザー登録をお願いします。 レシピブックを修正する際は、一度ログインをしてください。ログインすると右肩の部分に編集の項目が現れます。 記述方法は、structuredText もしくはreStructuredText でお願いできればと思います。 WEB上の情報 Python クイックリファレンス日語訳 pythonライブラリリファレンス pythonチュートリアル Per

  • Python が好きな理由を思い出してみる - 銀月の符号

    Python を好きになったきっかけってなんだったっけ? 好きに理由は要らないと思ってはいるものの、言葉にできないと人に伝えるときにすごく不便だと思ったのでまとめようとしてみる。 インデント? ダックタイピング? itertools ? functools ? unittest ? 標準ライブラリの充実? サードパーティ製ライブラリの充実? Django ? GAE ? なんか違う、でもすぐにでてこなくてもやもやしている。 Python に出会った当時の記憶を引き出してみる…。 明文化だ (1時間後)理由出てきた。「Python コミュニティでは明文化することが奨励されている」という内容の文章を見かけたからだ! *1 「いろいろ明示的に書く文化」! 文法で強制されていることもあるけれど。 「docstring」。メソッド、関数、モジュールの使い方がよくわかる。いや、 docstring そ

    Python が好きな理由を思い出してみる - 銀月の符号
  • Ordered Set « Python recipes « ActiveState Code

  • Pythonでの日付関連処理

    pythonの日付関連の操作メモです。 pythonは、標準でdatetimeモジュール、calendarモジュール、timeモジュールに日付関連の操作が提供されています。まずは、pythonの標準モジュールでの日付処理をまとめてみます。 1.標準モジュールを使った日付処理 現在の日付を得る from datetime import date date.today() # datetime.date(2009, 7, 8) from datetime import date import time date.fromtimestamp(time.time()) # datetime.date(2009, 7, 8) 現在日時を得る from datetime import datetime datetime.now() # datetime.datetime(2009, 7, 8, 22,

    Pythonでの日付関連処理
  • Python高速化テクニック - atsuoishimoto's diary

    ここ2〜3日、InfoPileのパフォーマンスチューニングをしており、ちょっともたつきを感じるような部分をほとんど解消することができた。InfoPileで使用した高速化テクニックの中で効果が大きく、よくつかわれそうなものを紹介しよう。尚、以下のスクリプトはPython 2.6.4で実行した。 listよりtupleを使う 可変長である必要のないシーケンスは、できるだけlistではなくtupleを使って構築しよう。listの生成/解放コストは意外と大きいのだ。 import time def run1(): for i in xrange(1000000): [i, i+1, i+2, i+3, i+4, i+5, i+6, i+7, i+8] def run2(): for i in xrange(1000000): (i, i+1, i+2, i+3, i+4, i+5, i+6, i+

    Python高速化テクニック - atsuoishimoto's diary
    agw
    agw 2010/02/27
    __slots__についての記載あり。
  • Pythonは後方互換性を大事にするけど変わらないわけではない | TRIVIAL TECHNOLOGIES 4 @ats のイクメン日記

    みんなのIoT/みんなのPythonの著者。二子玉近く160平米の庭付き一戸建てに嫁/息子/娘/わんこと暮らしてます。月間1000万PV/150万UUのWebサービス運営中。 免責事項 プライバシーポリシー 「Pythonチュートリアル」 の翻訳者,鴨澤さんからmixiに お返事 いただいたのを読んで,ホントにそうだよなあ,と思った。なににか,っていうと,Python 3.0って機能がすっきりまとめられていて,説明が少なくて済むんだよなあ。 Pythonは確かに, Rubyに比べる と 変化を嫌う言語 何だけど,実は細かく変わっている。たとえば型の実装について,バージョンを横断して見てみると,面白いことが分かる。 例えば「int」の実装についてみてみようか。 Python1.5では,intは関数として実装されている。実装としては関数で,返り値としてintオブジェクトを返していたのね。 >>

  • Pythonの配列操作 - methaneのブログ

    いまさらだけど、 http://0xcc.net/blog/archives/000043.htmlPython の部分を添削。 len(a) == 0 は、 if a: のようにリスト自体が空の時に偽になるので使わない。 a.pop(0) は del a[0] とも書ける。どちらでも良いが、多分属性参照が無い分 del の方が高速 a[:] = [] も同じく del a[:] a.remove(x) ※最初の一つしか削除されない は、すべてのxを削除したいなら a = [y for y in a if y != x] del(a[i]) は、 del が関数ではないので del a[i] と書く。 Ruby の a.uniq は、ソート済みに対する操作じゃないよね? 重複を削除するだけなら set(a) でいけるけど、順序の保存が必要なら z = []; for x in a:

    Pythonの配列操作 - methaneのブログ
  • PythonSpeed

    PythonSpeed 多くの人がPythonプログラムの速度について心配を持っています。でもPythonを使わないと、堪らないくらい実行速度上のロスがありますよね? 中には「なんだ、インタプリタのスクリプト言語か、まるっきり遅いや」なんて結論づける人もいます。また、Pythonを実際に試してみて、実行効率が十分なことに気づく人もいます。でも時には、 とっても遅いプログラムができあがることもあります。 実行速度がそんなに重要?ホントに? 多くの人が必要以上に速度に取りつかれていて、このような種類の問題では、Cが優れた実績を示していることから、全ての面で優れた言語だと考えています。別の人々は、開発の速度がより重要で、Pythonを選ぶのはそのような時に限り、まあそれなりの速度だろうと考えています。そして頻繁に、期待を超えた速度で動いていることに驚かされています。時には、同じ開発時間を費やした

    agw
    agw 2010/02/25
    大変参考になる。
  • Note (Python Faster)

    Pythonの高速化 Pythonは非常に使い易い優れたスクリプト言語であるが、大きなプログラムになると やはり、スクリプト言語としての宿命か、処理速度が気になる。 ctypesモジュールはシェアドライブラリの関数をPythonから直接使用可能にするもので、 従来より高速化が容易になる。 2006年8月にバージョン1.0がリリースされ、Python2.5からは標準で組み込まれる。 スクリプト全体を高速化 Psycoは Just-In-Time(JIT) compiler方式で数倍から、運が良ければ数十倍高速になる 但し Psycoは64ビットマシンには対応していない、64ビットマシンには開発途上のPyPyがある 部分高速化 ループなど時間の掛かる部分にC言語をinlineで使用する方法 1:weave   Scipyに含まれているモジュール 2:instant swigを利用する  モジュ

  • asyncoreできみにも書けるSMTPサーバ - スコトプリゴニエフスク通信

    携帯Webでよくある、「空メールを送信してください」というのを実装するには、ぱっと思いつく限り、 コマンドへのメッセージ配信 別のSMTPサーバへトランスポートという方法があって、トランスポートを使った方法を試してみたくて、次のようなコードを書いてみた。 import asyncore import smtpd from email import message_from_string class MySMTPServer(smtpd.SMTPServer): def process_message(self, peer, mailfrom, rcpttos, data): print '---------- MESSAGE FOLLOWS ----------' msg = message_from_string(data) print 'From:', mailfrom print m

  • (訂正)Pythonの__future__ - 西尾泰和のはてなダイアリー

    昨日、四月一日に公開したPythonの__future__には一部誤りがありましたので訂正してお詫びします。 まず以下の記述について: たとえば1 / 2は現状では0になります。整除ですね。でもfrom __future__ import divisionするとJavaScriptと同じ「整数同士の割り算でも割りきれない場合は実数にする」というモードに切り替わります。 これは当です。Python2.5でも下の通りの挙動をします。 >>> 1 / 2 0 >>> from __future__ import division >>> 1 / 2 0.5 問題はここからです。 他にも、たとえば現在アルファ版が公開されているPython2.6ではfrom __future__ import bracesでブロックの表現方法を切り替えることができます。 と書いていましたが、サンプルコードを実際に

    (訂正)Pythonの__future__ - 西尾泰和のはてなダイアリー
  • GitHub - giampaolo/pyftpdlib: Extremely fast and scalable Python FTP server library

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - giampaolo/pyftpdlib: Extremely fast and scalable Python FTP server library
  • __builtins__ はモジュール? 辞書? - kなんとかの日記

    __builtins__ って必ずモジュールだと思ってたけど、そうでもないらしい。 foo.py: import sys print "(foo.py): __builtins__: ", type(__builtins__) print "(foo.py): sys : ", type(sys) bar.py: import foo import sys print "(bar.py): __builtins__: ", type(__builtins__) print "(bar.py): sys : ", type(sys) 実行結果: $ python -V Python 2.5.4 $ python foo.py (foo.py): __builtins__: <type 'module'> (foo.py): sys : <type 'module'> $ python bar

    __builtins__ はモジュール? 辞書? - kなんとかの日記
  • 続: Python での組み込み型をより自然な名前にする - kなんとかの日記

    なんかしらんけど、前のエントリはPythonistaをたいへん刺激してしまったようだ。べつにもとの名前を使えなくするわけじゃなく、単にエイリアスを追加するだけなのに! そこで、Pythonistaのお怒りを沈静化するべく、__builtins__を汚染しないように改造してみた。 ## utypes.py __all__ = ( 'Str', 'List', 'Dict', 'Tuple', 'Set', 'Object', 'Type', 'Int', 'Long', 'Float', 'Complex', 'Bool', 'Unicode', 'File', ) Str = str List = list Dict = dict Tuple = tuple Set = set Object = object Type = type Int = int Long = long Float

    続: Python での組み込み型をより自然な名前にする - kなんとかの日記
  • ローカル変数で「L」や「D」を使うのはダメプログラマ - kなんとかの日記

    pashango_pさん曰く: 当にローカル変数でlistやdictを表すために「L」とか「D」を使っていたとしたら、相当なダメプログラマですよ。 わたしはそこまでは思いませんが、pashango_pさんによると、ローカル変数名として「L」や「D」を使うのはダメプログラマだそうです。 いっときますけど、わたしの意見じゃないですよ? あくまでpashango_pさんの言ったことなんで、そこは勘違いするのは勘弁してね。 ところで、Python標準添付であるurllib2.pyより: def randombytes(n): """Return n random bytes.""" # Use /dev/urandom if it is available. Fall back to random module # if not. It might be worthwhile to extend

    ローカル変数で「L」や「D」を使うのはダメプログラマ - kなんとかの日記
  • Python での組み込み型をより自然な名前にする - kなんとかの日記

    あと10枚ぐらいスライドを減らさないとまずいことになりそうなのに、なぜかPythonネタを投下してみる。 Ruby での String, Array, Hash に相当するのは、Python では str, list, dict になる (小文字であることに注意)。 困ったことに、これらは変数名としても実にポピュラーなので、同名の変数名を定義してしまうとこれらが使えなくなってしまう。 ## Python でこうすると、組み込みの str, list, dict が ## shadowing されてしまう str = "foo" list = [1, 2, 3] dict = {"one": 1, "two": 2} RubyJava ではクラス名は大文字から始まるので、変数名とバッティングすることはほぼない*1。素晴らしい。 string = "foo" # クラス名 String

    Python での組み込み型をより自然な名前にする - kなんとかの日記
  • それモジュールで - odz buffer

    ref:http://d.hatena.ne.jp/kwatch/20090713/1247498972 慣習に従わないことによる弊害というものは理解しにくいものかな。 てか、やるならもう少しうまいやり方があるだろう。 typealias.py Str = str List = list Dict = dict Tuple = tuple Set = set Object = object Type = type Int = int Long = long Float = float Complex = complex Bool = bool Unicode = unicode File = file % python Python 2.5.1 (r251:54863, Feb 6 2009, 19:02:12) [GCC 4.0.1 (Apple Inc. build 5465)] on

    それモジュールで - odz buffer
  • Re: ローカル変数で「L」とか「D」の変数名を使うやつ! - kengpong

    コメント欄に書くには長くなりそうだったので、エントリ立ててみた。 ローカル変数で「L」とか「D」の変数名を使うやつ! - Pashango’s Blog PythonだってUPPERCASEは定数なのは暗黙の了解です(怒られないけどね)、なんでそれをわざわざ使うのかということです。 ここに関する認識の違いですね。では、以下にずらずら書いていきましょう。 Python での定数(的なるもの) 僕が*1 Python で書かれたコードを読む時に、識別子を定数だと認識するには二つ条件があります。 UPPERCASE である事 モジュールレベルで定義された変数である事 この二つを満した識別子を見つけた時に、僕はそれが定数である事を意図して書かれたコードだと思います。 ローカル変数が UPPERCASE で書かれていたとしても、それは定数を意図したのでは無いであろうと考えますので、 Ruby の定数

    Re: ローカル変数で「L」とか「D」の変数名を使うやつ! - kengpong
  • python3.1の新機能が良い・・・(´Д`;)ハアハア - Pashango’s Blog

    Python3.1の新機能がなかなか良いですね・・・ ■What’s New In Python 3.1 http://docs.python.org/dev/py3k/whatsnew/3.1.html 細かいところがいろいろ改善されています、嬉しかった機能をあげてみました。 順序付き辞書機能 今までの辞書は順序は保証されていなかったのですが、collections.OrderedDictを使うと順序が保証されます。 >>> from collections import OrderedDict >>> d = OrderedDict() >>> d['a'] = 1 >>> d['b'] = 2 >>> d['c'] = 3 >>> d.items() >>> for key, value in d.items(): ... print key, value ... a 1 b 2 c

    python3.1の新機能が良い・・・(´Д`;)ハアハア - Pashango’s Blog