[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 10:23 / Filesize : 203 KB / Number-of Response : 940
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Pythonのお勉強 Part 24



1 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 01:27:53 ]
Python オフィシャルサイト
www.python.org/
日本Pythonユーザ会
www.python.jp/Zope/
FrontPage - Pythonのお勉強
python.rdy.jp/
前スレ
pc11.2ch.net/test/read.cgi/tech/1201073019/l50

◆関連スレッド
Microsoft IronPython 1.0
pc11.2ch.net/test/read.cgi/tech/1157686822/
Python の宿題ここで答えます Part 1
pc11.2ch.net/test/read.cgi/tech/1153585095/
2ch検索: [python]
find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python

◆関連リンク
Python 日本語ドキュメント - Pythonistaのお友達
www.python.jp/doc/release/

Pythonのバイブル的書籍
www.amazon.co.jp/dp/4797341815

その前編
www.amazon.co.jp/dp/4797341815


800 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 14:14:31 ]
x%y==0 は、x%y<1の方が短い
あと、(i/10==3)or(i%10==3)だったら'3'in`i`が短い

801 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 14:20:56 ]
for i in range(1,101):print(i%3<1or'3'in`i`)*'Aho'or i

802 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 14:23:20 ]
for i in range(100):print(i%3/2or'3'in`-~i`)*'Aho'or-~i

803 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 15:10:14 ]
('3'in`-~i`) == ('3'in`~i`)

804 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 16:02:03 ]
くだらね

805 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 16:06:33 ]
strと``ってどう違うの?
測ると``の方がだいぶ速いみたいだけど。

806 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 16:27:25 ]
UNARY_CONVERT と CALL_FUNCTION

807 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 16:32:14 ]
strじゃなくてreprだな

808 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 16:57:31 ]
str は、そのオブジェクトを表す適当な文字列
repr は、そのオブジェクトを表すpython 式

>>> `'a'`
"'a'"
>>> str('a')
'a'
>>> `2**32`
'4294967296L'
>>> str(2**32)
'4294967296'



809 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 18:48:30 ]
>>> [u'ほげ',u'ふが']
[u'\u307b\u3052', u'\u3075\u304c']
>>> `[u'ほげ',u'ふが']`
"[u'\\u307b\\u3052', u'\\u3075\\u304c']"
>>> `[u'ほげ',u'ふが']`.decode('unicode-escape')
u"[u'\u307b\u3052', u'\u3075\u304c']"
>>> print `[u'ほげ',u'ふが']`.decode('unicode-escape')
[u'ほげ', u'ふが']

各行の動作の違いを教えてください

810 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 19:19:51 ]
>>807>>808

なる、reprと同じだったね。
にしても不思議、何度測ってもrep()より``のが速い。

811 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 19:54:57 ]
>>810
速度は>>806が書いてあるように
`` が UNARY_CONVERT のバイトコードだけになるから

812 名前:デフォルトの名無しさん [2008/03/20(木) 20:23:06 ]
IDLEって完全にPython自身で書かれているのか・・・
ってことは自分のプログラムの途中から IDLE
を起動するなんてこともできるのか?

813 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 20:57:48 ]
import wx
app = wx.PySimpleApp(0)
frame = wx.Frame(None, -1, "Hello wxPython World!")
app.SetTopWindow(frame)
frame.Show(True)
app.MainLoop()

> AttributeError: 'module' object has no attribute 'PySimpleApp'

環境ubuntu7.10。wxPythonは入れたが上のエラーが出る。なぜ?

814 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 21:02:57 ]
他にwx.pyがあるんじゃないか?そのスクリプト自体がwx.pyとか

815 名前:813 mailto:sage [2008/03/20(木) 21:05:27 ]
うわ本当だ。。。
その通りです。ありがとう。>>814

816 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 01:58:54 ]
>>811
へー、バイトコードなんて調べた事無かったから>>806 は意味不明でしたw
ようするに最終的にreprを呼ぶコードが出来るんだけど、
``から出来たコードの方が速く処理が終わるのかな。

817 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 01:10:27 ]
wxWidgets にはさ、GUI を XML で記述するってのがあるじゃん。あれと同じ理屈で Tk を YAML で記述するってのは無いかね。。。。yaml がなければせめて XML で。最初は自力で簡単なコーディングしてて
gui_yaml = """
frame1(Frame):
 text: "Hello tk!"
 button1(Button):
  text: Exit
  command: quit
"""
て感じの yaml 形式テキストをつくって
import yaml
dict_ = yaml.load(gui_yaml)
すると、
{"frame1(Frame)": {
  "text": "Hello tk!",
  "button1(Button)": {
   "text": "Exit",
   "command": "quit"
  }}}
ていう辞書になるので、これを適当に解析して name(base_class) という項目を見つけたら指定されたクラスインスタンスを生成して、
command って項目があったら値に対応するメソッドを関連づけて…
みたいな感じで Tk GUI を構築しようとしたんだけど、辞書だと順番が保存されないんで、コントロールを生成する順番に依存する処理の場合に死ぬる事に気づいた。
packするとき、どの順番で pack する?とか。grid 使えば順番非依存になるのかも。

というわけで自分でつくるのあきらめたので、できあいのやつ教えてください。



818 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 01:19:17 ]
もしマトモに yaml -> Tk ビルダ作ったら、みんな使ってくれるかい?





819 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 01:24:56 ]
なんで今更Tkにこだわるのさ

820 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 01:35:39 ]
だって標準ライブラリにくみこまれてるじゃん

821 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 01:46:29 ]
辞書にorder項目を追加するだけじゃね?

822 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 02:13:48 ]
順番を保存するならシーケンスにするしかないよね。
てか辞書じゃ重複できないから、その例ちと変な気が。
Tkだととても軽いというのなら意味は有ると思う。

823 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 02:56:18 ]
import yaml # PyYAML from pyyaml.org/wiki/PyYAML
import Tkinter
import re

def build(parent, dic, commands):
 widget = None
 for key, val in dic.items():
  o = re.match(r"(?P<name>\w+)\((?P<base>\w+)\)", key)
  if o:
   name, base = o.group("name", "base")
   klass = getattr(Tkinter, base)
   widget = klass(parent)
   #widget.pack()
   if parent: setattr(parent, name, widget)
if isinstance(val, dict): build(widget, val, commands)
  elif key == "command":
   parent["command"] = commands[val]
  elif key == "pack":
   parent.pack(**val) if isinstance(val, dict) else parent.pack()
  elif key == "grid":
   parent.grid(**val) if isinstance(val, dict) else parent.grid()
  else:
   parent[key] = val
 return widget



824 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 02:59:55 ]
# テストコード
if __name__ == "__main__":
 gui_dict = yaml.load("""
frame(Frame):
 button1(Button):
  grid: {column: 1, row: 2}
  text: OK
 button2(Button):
  grid: {column: 2, row: 2}
  text: Cancel
 ent1(Entry):
  grid: {column: 1, row: 1}
 ent2(Entry):
  grid: {column: 2, row: 1}
 memo1(Text):
 grid:
""")
commands = {}
app = build(None, gui_dict, commands)
app.mainloop()



825 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 03:03:13 ]
823-824をそのまま貼付けて実行してください。
Entry の textvariable の扱いをどうすればよいかがさっぱり思いつかん。
一貫性を持たせるという意味で "text" でアクセスできればいいんだけど。





826 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 03:35:59 ]
標準にこだわってるくせに
pickle使わずにYAML使う愚


827 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 03:52:49 ]
だって xml より yaml のほうが編集しやすいじゃん。
まあ、たしかに yaml 表現が python の辞書リテラルとほとんど同じだから、
まんま python 式で書いてもいいんじゃ?と思ったのは事実。
だけど文字列を "" で囲まなくて良いのは地味に楽。



828 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 03:55:20 ]
class TestClass(object):
 def __init__(self, i_name):
  _name = i_name

 def __eq__(self, i_other):
  if not isinstance(i_other, TestClass):
   return False
  return self._name == i_other._name

a_key = TestClass('test')
a_dic = {}
a_dic[a_key] = 0

---------------------------------------------------
上のソースコードをPython 2.5.2で実行すると問題ないけど、
Python 2.6a1で実行すると、最後の行でエラーがでたよ。
TypeError: unhashable type: 'TestClass'

Python 2.6以降だと、object.__hash__()は実装されてないものなん?




829 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 04:06:37 ]
>>827
それならさ、
wxPythonのXRCedが吐き出すXMLをYAML化してよ


830 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 04:11:50 ]
>>823
GJ!!
インデント崩れてない?

831 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 04:46:11 ]
# インデント修正+コメント加筆

def build(parent, dic, commands):
 widget = None
 for key, val in dic.items():
  o = re.match(r"(?P<name>\w+)\((?P<base>\w+)\)", key)
  if o: # name(base_class_name) にマッチした場合は新規にウィジェット生成する
   name, base = o.group("name", "base") # 名前とクラス名を取り出す
   widget = getattr(Tkinter, base)(parent) # ウィジェット生成
   if parent: setattr(parent, name, widget) # 親の属性としてウィジェットを追加
   if isinstance(val, dict): build(widget, val, commands) # ウィジェットの設定
  elif key == "command":
   parent["command"] = commands[val] # 呼び出し可能なオブジェクトをコマンドに指定
  elif key == "pack":
   parent.pack(**val) if isinstance(val, dict) else parent.pack()
  elif key == "grid":
   parent.grid(**val) if isinstance(val, dict) else parent.grid()
  else:
   parent[key] = val
  return widget # 最後に生成したウィジェットを返す



832 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 04:50:23 ]
# テストコード
gui_dict = yaml.load("""
frame(Frame):
 button1(Button):
  grid: {column: 1, row: 2}
  text: OK
 button2(Button):
  grid: {column: 2, row: 2}
  text: Cancel
 ent1(Entry):
  grid: {column: 1, row: 1}
 ent2(Entry):
  grid: {column: 2, row: 1}
 memo1(Text):
 grid:
 """)
commands = {}
app = build(None, gui_dict, commands)
app.mainloop()



833 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 20:58:33 ]
このまま進歩してって、数日したらちょっとしたフレームワークが出来上がってそうだ。

834 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 23:40:58 ]
             ____
           /      \
          / ─    ─ \
        /   (●)  (●)  \   ない ない
        |      (__人__)     |
         \     ` ⌒´    ,/
 r、     r、/          ヘ
 ヽヾ 三 |:l1             ヽ
  \>ヽ/ |` }            | |
   ヘ lノ `'ソ             | |
    /´  /             |. |
    \. ィ                |  |
        |                |  |

835 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 23:42:14 ]
思いつきだけで始めたことはたいてい早晩ポシャる
失敗するのはいいのだが、問題なのは、
一度や二度の失敗で学ばない人間がいかに多いかということだ

836 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 00:10:21 ]
Pythonを選んだこと自体が失敗だからなぁ

837 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 00:13:51 ]
歴史から学べるのはただ一つ、
人は歴史から学ばないということだけ
だとばっちゃが言ってた

838 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 01:22:16 ]
つまり韓国に関わっていたら日本は不幸になるってことですね!
さすがばっちゃ!頭いいや!



839 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 01:47:02 ]
>>835
一度や二度の失敗で投げてたら何も作れんぞ。
大事なのは、捨てて作り直す勇気だ。

840 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 03:04:52 ]
自作してる時点でTkの負けだと思いました><
xml使ってないけど。

841 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 03:22:33 ]
出来あがった物が思いの外ショボいと
モチベーションが続かないんだよなぁ

842 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 03:33:50 ]
>>837
φ(..。 )メモシテオコウ

843 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 03:40:18 ]
こういうのは衝動が肝心だと思うんだ。
ガーッと書いて結局没になる、そういう自己満足って大事よ。
あんまりはまるとPC恐怖症になるけど。

844 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 07:13:06 ]
何度やっても同じだよ。
そもそもセンスがないんだから。一生ドカタ暮らし。

845 名前:デフォルトの名無しさん [2008/03/23(日) 09:23:21 ]
一生ドカタできるならまだいいさ。
俺なんかすら干されそうだ。
マァ無能だから仕方ない。
結構なんてするんじゃなかった。
自殺すらできない。保険増額しておこう。

846 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 11:28:05 ]
なんだこの流れ

847 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 11:39:22 ]
流れなのかこれは。

848 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 12:50:59 ]
春は色々湧く季節



849 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 13:28:31 ]
PythonにRubyのPathnameみたいなクラスってないですか?
os.path.hoge(path); os.path.huga(path)が面倒なので
p = Path(path)などとしておいて
p.hoge(); p.huga()とできるような感じのものでいいんですが…
自分でつくるしかないですかね?

850 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 13:37:35 ]
よく意味が分からんがimport os.path as pって意味ではなくて?
別にimport os.pathしてからp = os.pathでもいいけど。

851 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 13:47:44 ]
すまん。Rubyしらんのに適当いうもんじゃなかった

852 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 13:57:32 ]
>>849
標準ではないけど ttp://www.jorendorff.com/articles/python/path/ とか

853 名前:849 mailto:sage [2008/03/23(日) 14:19:38 ]
>>850
>>852
いろいろ検索しても見つからなかったのでないのかと思っていましたが
あるんですね。探し方が悪かっただけで。ありがとうございます!


854 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 14:27:19 ]
>>853
今後もPythonと付き合っていくなら可能な限り標準モジュールを利用した方がいいよ

855 名前:850,851 mailto:sage [2008/03/23(日) 14:46:12 ]
>>853
いや、俺のは違うから。スマン。
RubyのPathnameオブジェクトってのを知らなかったんで
勘違いしたんだよ。

856 名前:849 mailto:sage [2008/03/23(日) 15:07:30 ]
>>854
そういうものなんですかね?
os.pathは使うとき逐一引数にパス名指定しないといけないので面倒なんですよね…
>>852さんに紹介していただいたようなクラスが標準に入ればいいのですが

>>855
ああ、すいません。書き方が悪かったみたいです
>>855さんの回答は今回はちょっと希望に沿うものではなかったのですが
質問したときは回答していただいた方全員にお礼を言いたいと思っているので…


857 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 18:13:25 ]
「できるだけ標準モジュールを使え」はGuideの言葉だっけ?

858 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 19:29:53 ]
>>849
os.stat()を使えば解決しそうだけど



859 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 20:17:05 ]
lambdaで逃げるって手も...ないか。





860 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 21:26:23 ]
Guideって誰?
それどんな道案内?

861 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 22:15:43 ]
>>860
かわいそうなPython使いを
ジョセフ様に認められた清く正しい言語Rubyへの
改宗を促すGuideです。

Pythonを作られたGuidoさんとは別です。

862 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 22:20:26 ]
カルト言語逝ってよし。

863 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 11:42:31 ]
ruby使いは正確悪いことで有名

864 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 13:56:51 ]
お前の性格の悪さも分かった

865 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 14:33:40 ]
>>863
たまには変換候補のことも思い出してあげてください。

866 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 14:37:14 ]
pythonで数値計算はnumpyだけど数式処理は何かあるの?

867 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 17:54:39 ]
しらない

868 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 19:00:16 ]
他人を敬えない人は、他人から敬われることはありません。
日本語が不自由ならなおさら。
良くて一生ドカタ。
たいていはいい年になってから路頭に迷う。
本当にありがとうございました。



869 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 19:10:30 ]
経験者の話は説得力がありますね

870 名前:デフォルトの名無しさん [2008/03/24(月) 23:36:43 ]
なんといつのまにか wxVCLなるものがあるみたいじゃないか。VCLの使い勝手が忘れられない俺がまちのぞんだもの。
だれかpythonバインディング作って

871 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 02:20:38 ]
C++スレにも書いたけど、こっちにもネタ投下してみる。
なるべく短いプログラム書いてみようぜ。

基本問題:
例えば N = 8 としたときに
「この文章には0が1個、1が5個、2が3個、3が2個、
4が1個、5が2個、6が1個、7が1個含まれています」
という文章が生成されるとして、9以下の任意の自然数Nについて
もこのような文章を生成するプログラムを作れ。
解がない場合は「解なし」とする。

発展問題:
Nが10以上の時、解はあるだろうか?



872 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 02:28:43 ]
一応自分の答え(うろ覚え)さらしとく
X = 8
S = ["" for i in range(X)]
found = False
def count(num):
 ret = 0
 for i in S:
  ret += i.count(str(num))
 return ret
def check():
 for i in range(X):
  if count(i)+1 != int(s[i]): return
 found = True
 print "数字の数は", [str(i)+"が"+str(s[i])+"個" for i in range(X)]
def find(depth):
 if depth < 0:
  check()
 else:
  for i in range(X):
   s[depth] = i
   find(depth - 1)
 if not found:
  print "解なし"
 print "終了"

find(X-1)



873 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 02:47:48 ]
ごめん、問題の意味がわからない

874 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 02:53:15 ]
短くしようとしたら総当りになると思う。
それよりもスマートな解き方を探すほうが面白そうだな

875 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 02:58:37 ]
>発展問題:
>Nが10以上の時、解はあるだろうか?

10がn個あります、と言った時の意味がわからない

876 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 03:01:55 ]
どっかの課題丸投げ乙

877 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 03:07:32 ]
変数Nは「」内に影響しないため、Nがどのような値でも
「この文章には0が1個、1が5個、2が3個、3が2個、
4が1個、5が2個、6が1個、7が1個含まれています」
という文章が生成されます。

878 名前:871 mailto:sage [2008/03/25(火) 03:19:09 ]
丸投げじゃないよ。今日仕事中に思いついた問題。

ちなみにNが4のときの解。ようするに N 以上の数を使わない。

「0が1個、1が2個、2が3個、3が2個」

Nが10のときは "10" という部分文字列がいくつ含まれるかって解釈にしようと思う。





879 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 03:57:45 ]
0-2

1-8

2-3

3-3

4-1

5-1

6-1

7-1

8-2

9-1

10-1

880 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 09:57:56 ]
ドウカクカクカク。

881 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 10:34:00 ]
ブラック民パイ読んで、練習でHP作ってるんだけどさあ・・・・HTMLのテンプレートを簡単につくるソフトでいいのってないの?
ホームページビルダー(バージョンふるいのしか持ってない)で作って、置き換え文字を書き加えるとかじゃ・・・・ちょっと使いづらいぜ。

882 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 10:43:31 ]
>>881
HTMLかくんだったら、テキストエディタでおk。
入力補助がついてるのもあるし、なんだったらメモ帳やワードパッドでもいける。

883 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 11:31:43 ]
>>871が基地外にしか見えない

884 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 11:41:05 ]
>881
Nvu
nvudev.com/



885 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 11:42:58 ]
>>883
>>871が見えるおまえは基地外認定

886 名前:866 mailto:sage [2008/03/25(火) 12:03:30 ]
>>866-867
ないのならmaximaのあるcommon lispに乗り換えを決意した

887 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 13:45:09 ]
お昼に見てからやっと >>871 の意味が分かったわ
ちょっと仕事の合間に考えて見るか

888 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 19:05:30 ]
>>871をN<=10(二桁にならない)までで高速化してみた
codepad.org/m5o71GS1



889 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 20:54:01 ]
C++は老害言語。

890 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 22:00:41 ]
>>884
Nvuは開発止まってるから後継ソフトにしようね
KompoZer: kompozer.net/

891 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 23:21:00 ]
回転座標求めるのに
def rot(x, y, radian):
 c = math.cos(radian)
 s = math.sin(radian)
 return x*c - y*s, x*s + y*c

def rot(x, y, radian):
 return math.hypot(x, y) * cmath.exp(radian*1j)
の速度を比べてみると、明らかに複素数使った方が速い。。。が
X, Y成分を取り出す処理を入れると結局始めから三角関数使った方が速い。なんかくやしい。




892 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 23:48:33 ]
x,yはc.real と c.imag で取り出してる?

893 名前:891 mailto:sage [2008/03/26(水) 00:16:01 ]
>>892
ttp://codepad.org/e53Ole56
あれ? デスクトップでやった時と結果が違う。。。。

894 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 03:32:48 ]
rpy.sourceforge.net/
Rをpythonから呼べる
便利そうだがnumpyで直接計算するのと比べてどうなんだ

895 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 03:38:08 ]
modular.math.washington.edu/sage/
pythonの数式処理っぽいのあった

896 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 03:44:09 ]
python -> sage -> maxima -> common lisp
でcommon lispをpythonから呼べるね
もっと単純な方法ありそうな気もするけど


897 名前:デフォルトの名無しさん [2008/03/26(水) 10:45:12 ]
py2exe 使うと使っている標準モジュールが自動的に
同梱されますが、これも丸ごと配布してしまっていいん
でしょうか?というか、py2exe で実行ファイル形式にして
配布するときってライセンス的にどんな制約があるんでしょう?

自分が作ったプログラムも含めてPSFに従わないとだめ?


898 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 13:25:01 ]
PSFはGPLじゃないのでちゃんとPythonの著作者表示があれば自由だったはず



899 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 14:22:28 ]
PSFはライセンスじゃない。

それはそれとして、っ ttp://www.python.jp/pipermail/python-ml-jp/2007-May/004044.html

900 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 14:31:13 ]
>>894
・統計屋の中で流行っている統計手法はいち早くRで誰か実装するので、
自分で書き直す手間は省ける。
・Rになれている人に使いやすい。
・グラフなんかをプロットするとよく落ちる。

ってところかな。

901 名前:デフォルトの名無しさん [2008/03/26(水) 15:45:42 ]
すまんが、cgiのGETとPOSTって両方一度にはつかえないの???

902 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 15:51:19 ]
仕様書嫁

903 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 16:04:25 ]
実装依存で使える場合もあるかもしれないけど、
どこでも動く保証はないっていう感じだったきがする<GET、POST同時
まあ、普通にやめといた方がいいと思う

904 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 19:07:01 ]
>>901
os.environ['QUERY_STRING']に入ってない?

905 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 23:25:33 ]
GET,POSTはHTTPのメソッドの名前。当然どっちかしか使えん。
HTTPの仕様上はPOSTで「?」付URLを呼び出せる。
>>904 の言う通り cgi.parse_qs(os.environ['QUERY_STRING']) でよかったとオモ
POSTされたデータは cgi.parse(sys.stdin) か cgi.FieldStorage()


906 名前:デフォルトの名無しさん [2008/03/26(水) 23:27:08 ]
ttp://www.openplans.org/projects/plone-summer-of-code-2008/project-ideas

ふるって応募を!

907 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 23:31:48 ]
POSTのときにQUERY_STRINGとれない環境もある

908 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 08:08:23 ]
panel = wx.Panel(frm,-1)

こんなんがあって、panelをデストラクタするにはどうすれば良いんでしょうか。
ある状況でパネルを削除したいんですが。



909 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 08:24:14 ]
panel.Destroy()
del panel
じゃね

910 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 08:27:21 ]
おお!できました。
ありがとうございます。

911 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 18:49:43 ]
297 :デフォルトの名無しさん:2007/12/23(日) 02:11:55
>>294=269 か?
メソッドオーバーロードはrubyではできない。こんな感じで自分で処理しなさい
def meth(arg)
 if arg.kind_of?(String)
  puts '文字列'
 else
  case arg
  when Array then puts '配列'
  else puts 'その他'
  end
 end
end

それとrubyの配列(Array)に次元なんて無い。配列が入れ子になってるだけ。

python だと、どう処理を描けば良いですか?

912 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 18:56:45 ]
Pythonでも同じだよ
引数の型とか数を調べて分岐するだけ
というかrubyスレの話題を持ってこられると色々勘ぐりたくなるんだが

913 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 19:27:49 ]
>>912
メソッドオーバーロード python
www.google.co.jp/search?q=%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC%E3%83%AD%E3%83%BC%E3%83%89%E3%80%80python&hl=ja&lr=lang_ja&start=20&sa=N

たまたまググッたら、それらしいコードが見つかったので
張ってみますた。深い意味はありませんです。。。

def mes(arg):
 if isinstance(arg, str):
  print '文字列'
 elif isinstance(arg, list):
  print '配列'
 else:
  print 'その他'

とか。引数に文字列渡して if arg == '文字列': elif arg == 'リスト': else:
みたいにするのとか。これくらいしか思い浮かばない罠。ご飯食べてくる

914 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 20:30:09 ]
とりあえず思いついた適当なコード
import sys

class OverloadMethod(object):
    functions = []
    def __call__(self, *args, **kwargs):
        for function in self.functions:
            if len(args) == function.func_code.co_argcount:
                return function(*args)
        raise NotImplementedError

def overload(function):
    obj = sys._getframe(0).f_globals.get(function.__name__)
    if obj is None:
        obj = OverloadMethod()
    obj.functions.append(function)
    return obj

if __name__ == '__main__':
    @overload
    def foo(a):
        print a

    @overload
    def foo(a, b):
        print a + b

    foo(1)
    foo(1, 2)

915 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 20:55:23 ]
Guido謹製
www.artima.com/weblogs/viewpost.jsp?thread=101605

916 名前:914 mailto:sage [2008/03/27(木) 21:02:19 ]
スゲーGuidoパパとほとんど一緒じゃん

917 名前:913 mailto:sage [2008/03/27(木) 21:16:33 ]
>>914
def overload(function):
    obj = sys._getframe(0).f_globals.get(function.__name__)
    if obj is None:
        obj = OverloadMethod() # コンストラクタみたい
    obj.functions.append(function) # 関数をストックしてく
    return obj

>>> foo(1) # ストックした関数をポップする
>>> foo(1,2)
>>> foo(1,2,3) <class exceptions.NotImplementedError at 0x000000000000002C>

sys._getframe(0).f_globals のところを globals() にしたら
ironpython でも動作確認取れますた。
dir()で表示されるけど, まだ実装されてないのね…_getframe
ValueError: _getframe is not implemented

annotation で潜らしてポップするか…
勉強になりますた。dくす♪

918 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 02:15:51 ]
>>913
キーワード引数



919 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 03:54:18 ]
www.linux-foundation.jp/modules/tinyd3/index.php?id=20
何か意図的に抜いてるような…

920 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 09:23:04 ]
Pythonだけに見事にハブられてますね

921 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 09:34:12 ]
うわぁ・・・^^;

922 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 12:41:32 ]
エーとおもたがperlも入ってなくね?
どういう基準かよくわからんな


923 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 12:43:15 ]
Perl/PHP/Rubyは二重丸じゃないか

924 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 12:55:46 ]
Pythonの擬似スレッドって、いずれちゃんとしたスレッドになる予定とかってないんですか?

925 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 13:03:26 ]
GILのことなら多分とれないよ

926 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 14:53:41 ]
以前にここに貼ってあったpython チートシートのリンクがみつからない

927 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 16:04:50 ]
www.google.co.jp/search?&q=python+cheat+sheet
www.google.co.jp/search?&q=python+cheat+pdf


928 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 17:01:20 ]
バイナリデータをファイルに書きたく思っています。
例えば4バイト整数10ならば、f.write('\x00\x00\x00\x0a') というように。

上記を、例えば f.write(hoge(10, 4)) で実現できるような
既存の関数hogeのようなものがあれば、ご教示頂けないでしょうか?
IEEE浮動小数点についても同様なものがあれば教えて頂きたいです。




929 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 17:02:41 ]
www.python.jp/doc/release/lib/module-struct.html

930 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 05:46:36 ]
pythonのワンライナーは超絶美的

931 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 08:24:23 ]
urllib2のmultipart/form-dataサポートマダー


932 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 10:05:49 ]
>>931
ドキュメントにツカエネーヨって書いてあるし今更機能仕様を変える気もないんじゃね?
これはもう自分でurllib3を作るしか

933 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 10:08:34 ]
urllib2ってメモリリークするよね?

934 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 15:02:28 ]
python で 宣言できる関数の上限値とかどれくらいなんだろうか?
1万-10万…

10万くらいなら動きそう? メモリ上に保持できる辞書としての
要素数の限界値? (よくわからん)

935 名前:928 mailto:sage [2008/03/29(土) 15:12:30 ]
>>929
おー、これですこういうのです。超速レスありがとうございました!

936 名前:デフォルトの名無しさん [2008/03/29(土) 15:43:27 ]
>>934
import sys

def mksrc(n):
  print """
def %s():
  return %d
""" % ('func%d' % n, n)

if len(sys.argv) < 2 or not sys.argv[1].isdigit():
  print 'usage: hoge.py N'
else:
  for i in range(int(sys.argv[1])):
    mksrc(i)
  for i in range(int(sys.argv[1])):
    print 'print func%d()' % i


$ hoge.py 100001 > fuga.py
$ fuga.py
とりあえず10万は楽勝みたいだ
あとは任せた


937 名前:デフォルトの名無しさん [2008/03/29(土) 16:00:39 ]
100万は死んだ
ファイルサイズにワロス

938 名前:デフォルトの名無しさん [2008/03/29(土) 16:03:39 ]
100万通過

>>937
OSとかメモリ容量とかによるんで内科医




939 名前:デフォルトの名無しさん [2008/03/29(土) 16:18:24 ]
おまいら阿呆だな

まで読んだ







[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<203KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef