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


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

Pythonのお勉強 Part 27



1 名前:デフォルトの名無しさん [2008/06/13(金) 04:22:02 ]
Python オフィシャルサイト
ttp://www.python.org/
ttp://www.python.org/doc/
日本Pythonユーザ会
ttp://www.python.jp/Zope/
ttp://www.python.jp/doc/
FrontPage - Pythonのお勉強
ttp://python.rdy.jp/
前スレ
pc11.2ch.net/test/read.cgi/tech/1209480428/
◆関連スレッド
Microsoft IronPython 1.0
pc11.2ch.net/test/read.cgi/tech/1157686822/
Python の宿題ここで答えます Part 1
pc11.2ch.net/test/read.cgi/tech/1153585095/
Python Challengeをやろう!
pc11.2ch.net/test/read.cgi/tech/1175919288/
Pythonについて(アンチ専用)
pc11.2ch.net/test/read.cgi/tech/1203557046/
Pythonに見られるインデントによる制御構造の是非
pc11.2ch.net/test/read.cgi/tech/1169473442/
pythonがこの先生きのこるには
pc11.2ch.net/test/read.cgi/tech/1167996371/
Eclipse統合M25【Java/C/PHP/Ruby/Python/Perl】(PyDev)
pc11.2ch.net/test/read.cgi/tech/1211505494/
【Perl,PHP】LLバトルロワイヤル2【Ruby,Python】
pc11.2ch.net/test/read.cgi/tech/1209289408/
デザパタ + Python/Ruby/Smalltalk part2
pc11.2ch.net/test/read.cgi/tech/1175959706/
2ch検索: [python]
find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python

2 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 04:24:16 ]
2

3 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 04:32:26 ]
>>3
スレ建て乙

4 名前:デフォルトの名無しさん [2008/06/13(金) 08:25:36 ]
スレ住民全員一致のPython本のバイブル
困った時にはこの本を注文しよう。

www.amazon.co.jp/dp/4839922829/

5 名前:デフォルトの名無しさん [2008/06/13(金) 08:27:31 ]
>>4
勝手に疎外感を感じてしまいがちなボクチムは
寂しい気持ちを慰めるためにキャバクラに通います
最近はお金がないので,もっぱらイケメンのあの人を思い浮かべながら
単三電池や角電池で自分を慰めているかもしれません

そんな毎日なのでずっと万年厨房の日陰者です

6 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 10:18:32 ]
>1 乙py

7 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 12:24:56 ]
関連スレッドに加えておいた方がよさそう
くだすれPython(超初心者用)
pc11.2ch.net/test/read.cgi/tech/1207878910/
【pygame】pythonでゲーム製作【ぱいがめ】
pc11.2ch.net/test/read.cgi/gamedev/1126605105/

8 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 13:27:17 ]
この言語の読み方ずっと「ふぃとん」だと思ってたんだよね。
とうぜん綴りも「phyton」だと思ってた。
それだけ。

9 名前:デフォルトの名無しさん [2008/06/14(土) 00:00:49 ]
はやくpygameの和訳作業やれどんけつども

10 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 00:01:51 ]
イケメンハッカーが温泉で自己翻訳しましたアッー!



11 名前:前スレ964 mailto:sage [2008/06/14(土) 00:35:09 ]
>>前スレ967
Thanx!!
まさに求めていたドキュメントです!!!
やっぱり日本語ドキュメントだけじゃダメですね。py2.4のままだし。。。



12 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 05:01:44 ]
前スレの>>994

英語を日本語にする事を考えたときは英々辞書引いたほうがいい。
たとえば↓みたいな。
dictionary.reference.com/browse/comprehension

で、↑にもあるようにcomprehensionはcomprehendの名詞な
ので、comprehendの説明挙げておく
1.to understand the nature or meaning of; grasp with
the mind; perceive: He did not comprehend the significance
of the ambassador's remark.

2.to take in or embrace; include; comprise: The course
will comprehend all facets of Japanese culture.

↑の2見てわかるように、やっぱりリスト内包でいいんじゃね?
表記はいらんでしょ。

13 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 05:37:08 ]
>>12
英語で覚えるのが理想だよね

概念や用語を日本語に置き換えるのに無理があるし、意味がわかりにくくなる

14 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 08:39:25 ]
PythonでCGIプログラムを作ってるんだけど、printで出力するときUTF-8にするにはどうすればいいの?
勝手にShift_JISに変換されて困ってるんだが。

15 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 09:04:21 ]
print ustr.encode('utf-8') とかなんとか

16 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 09:09:59 ]
print('テスト'.encode('utf-8'))だと
b'\xe3\x83\x86\xe3\x82\xb9\xe3\x83\x88'
になってしまいます。

17 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 09:14:07 ]
print 'テスト'.decode('sjis').encode('utf-8')
print u'テスト'.encode('utf-8')

お好きなほうで

18 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 09:21:52 ]
>>17
Python3なので、uとdecodeは無いみたいです。

19 名前:デフォルトの名無しさん [2008/06/14(土) 10:36:48 ]
>>18
#-*- coding:utf-8 -*-
を追加して、エディタで文字コードUTF-8で保存して実行してみ。

20 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 10:44:06 ]
どういう意図があって、3.0αなんてつかっているの?



21 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 10:45:06 ]
きっと大きい数字の方がいいと思ったのだろうよ・・・

22 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 10:45:16 ]
printはコンソール出力用だからsys.stdout.write使っとき。

23 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 10:49:14 ]
>>18
このスレでPython3を使っているのは、たぶん君だけだw

sys.setdefaultencoding()で設定しても駄目かな?

24 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 10:51:38 ]
試してる人はいるとは思うから
質問するときは明記した方がまともな回答がつきやすいとは思う

25 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 11:27:52 ]
>>24
それ以前のレベルでしょ
初めてのPythonを読みつつ、人のコードを読んで、いじったりして
2.xでcgiをいくつか組んで、それから3.xじゃないの
資料が少なすぎて、開発しづらいと思うよ

26 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 12:00:25 ]
>>19
最初からそうしてるけど、効果ないみたいです。
>>22
やっぱりShift_JISに変換されてしまいます。
>>23
その方法を使いたくなくて(sitecustomize.pyを編集する必要があるため)
Python3にしたくらいなので、それ以外の方法を探しています。

27 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 12:03:53 ]
ん〜、何か非常に特殊な環境と状態にいるみたいが、
そこら辺、詳細に説明しておいた方がよくないか

28 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 12:05:43 ]
釣りとしか思えない件

29 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 12:38:02 ]
Python3だと、エンコード設定はファイルオブジェクトが持っているから
stdoutの設定を変えないと駄目っぽいね。
ちょっと見た感じだと、まっとうな方法はないかも?

とりあえず、それっぽいのを見つけてきた。
ttp://mail.python.org/pipermail/python-3000/2008-February/012144.html
ttp://mail.python.org/pipermail/python-3000/2008-February/012170.html

30 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 12:51:15 ]
>>29
おおすごい。
ありがとうございます。
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, 'utf-8')
でできました。



31 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 12:54:09 ]
sys.stdout._encoding = 'utf-8'でもいいみたいですね。

32 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 12:57:16 ]
>>25
>初めてのPythonを読みつつ

そしてエンコードの処理でハマるわけですね;-)

33 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 13:59:36 ]
ハマらないだろ

34 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 14:07:19 ]
>>33
はまらないのは工作員だけだよ(www

35 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 14:07:55 ]
Index of /pipermail
mail.python.org/pipermail/

こんなサイトがあるんだね
まだまだググり足りないんだなということを実感した

36 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 14:08:15 ]
中途半端に書いてない分だけハマらんな

37 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 14:12:30 ]
>>36
ていうか全然書いてないし(wwwwww
工作員というか信者だな(wwwwwwwwwwwwwwwwwwwww

38 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 14:16:56 ]
ネットで補完すればいいだけだし

39 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 14:23:25 ]
信者には書いてないものまで見えてしまうんですね、分かります

40 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 14:32:44 ]
粘着している割に煽りのレベルが上がらんな



41 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 14:36:23 ]
まあもちつけ。
言動に一貫性のない奴が薦める本なんて誰も買わないからJK

42 名前:デフォルトの名無しさん [2008/06/14(土) 15:24:05 ]
何気に初心者を皆で助けるスレの流れになってたんだな

43 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 15:47:08 ]
初めてのPythonいいか?ダルクね?

チュートリアル(書籍な)がはるかにいいと思うんだが。



44 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 16:19:05 ]
訳: 恥パイよりパイチューがいいよね!

45 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 19:18:49 ]
チュートリアルはネットでタダで読めるのがいいよね!

46 名前:デフォルトの名無しさん [2008/06/14(土) 21:39:03 ]
日本語のは誤訳が含まれてるから本家のを見る様にがんばってる

47 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 21:44:45 ]
初めてのPythonがダルいのは
プログラム初心者にもわかるように書いてあるから
そこを割り引いてもPython入門にはいいと思うよ
古いから日本語(というかUNICODE)まわりが抜けてるから
そこは特にあとから別の学習が必要ってことだけ忘れないように

48 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 21:48:59 ]
>>43
どっちも売れてないから安心しろ

49 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 21:58:02 ]
>>47
「初めてのPython」の対象バージョンは2.3でそ?
なんでUNICODEまわりの解説がないのか超疑問。

50 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 21:59:35 ]
そこでみんPyですよ



51 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 22:18:55 ]
Unicode周りは載っていた方がもちろん良いのだが
ググれば分かるから本を選ぶ積極的な理由にはならないな

52 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 22:30:52 ]
そうだね、プロテインだね。

53 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 22:34:53 ]
「初めてのPython」は、読んだら後輩にあげればいいじゃん
それか、貸すとか

54 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 22:59:28 ]
名前を連呼しなければならないくらい売れてないんですね、よく分かります。

55 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 23:02:30 ]
そこで「はじめてのPython」ですよ

56 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 23:19:08 ]
信者って本当にいるんだな、イタいな(www

57 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 23:43:30 ]
Pythonの入門書っぽい書籍を集めて、アマゾンのランキングを並べてみた。

みんなのPython 6,881位
Pythonチュートリアル 80,907位
初めてのPython 第2版 71,260位
実践Python 146,100位
Pythonプログラミング入門 183,682位
はじめてのPython 230,568位
速効!Pythonプログラミング 357,963位

差がありすぎて笑った(ww

58 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 23:49:25 ]
>>57
どこがどうおもしろいの?

59 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 00:02:53 ]
Jythonプログラミング 63,943位

60 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 00:04:28 ]
みんなのPython Webアプリ編 82,077位



61 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 00:11:31 ]
はじめてのPythonネットワークプログラミング 166,030位

62 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 00:34:59 ]
Python クックブック 第2版 149,610位

63 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 00:40:14 ]
>>57
みんPyははじPyの10倍売れてるってことか
すごいな

64 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 01:02:26 ]
1位の本は2位の本より2倍売れてることになるのか
すごいな

65 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 03:32:45 ]
Amazonで買う香具師ってナカミ見ないで
他人の評判だけで本選んでんだろ?

66 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 03:35:23 ]
順位でソートしてみた

みんなのPython 6,881位
Jythonプログラミング 63,943位
初めてのPython 第2版 71,260位
Pythonチュートリアル 80,907位
みんなのPython Webアプリ編 82,077位
実践Python 146,100位
Python クックブック 第2版 149,610位
はじめてのPythonネットワークプログラミング 166,030位
Pythonプログラミング入門 183,682位
はじめてのPython 230,568位
速効!Pythonプログラミング 357,963位


67 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 03:53:56 ]
>>66
出来れば出版社著者出版年金額も

68 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 04:13:31 ]
>>66
はじめてのpythonって新しいのがでてたのかよwwww

69 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 08:39:26 ]
Jython本は出たばっかりなのに、あまり売れてないってことなんですか?
みんなのPythonは出てからしばらくたってるのに売れ続けているということですかね〜。
現実は厳しいですね(^^)。


70 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 09:09:12 ]
>>65
ほかにどうすりゃいいんだよw



71 名前:デフォルトの名無しさん [2008/06/15(日) 09:09:25 ]
Jython本は一番新しいし、
古いことが載っている本を避けたいひとにはおすすめだと思う
www.amazon.co.jp/dp/4839922829?tag=nishiohirokaz-22

72 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 09:13:23 ]
それでもなお売れているみんぱいは化け物だな(ww

73 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 09:21:23 ]
>>70
普通のひとは本屋で手にとって中身確認してから買うと思う


74 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 09:25:54 ]
>>73
そして「評判」とやらをネットに書くわけだが。

75 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 09:30:41 ]
Django の日本語本出るみたい
ttp://www.cbook24.com/bm_detail.asp?sku=9784048672092


76 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 09:35:01 ]
>>71を踏むと
nishiohirokazというID持ってる奴に
インセンティブ入るから、?tag以降を削ってからアクセスしろよ

77 名前:デフォルトの名無しさん [2008/06/15(日) 09:38:17 ]
>>76 は真っ赤な嘘。全然大丈夫。

78 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 09:40:23 ]
イケメンハッカーが自己発電しました。

79 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 09:55:28 ]
みんなのPythonも十分ダルイと思う。一応は買った。

売れているのは、ここで「バイブル」って書いてるからだろ。

なにかチェックしたい時に見るのはチュートリアル(書籍版)
やクイックリファレンスだな。

初めてのPython、みんなのPythonは持ってはいるけど長い間開
いた事も無い。

チュートリアルを敢えて紙で読むのは、手早く探せるっていう
のが大きい。Webだと読み返す気になれん。

80 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 10:07:37 ]
>>79
ここでバイブルと書いてあるのはこの本ですよ(売れてないけど)

www.amazon.co.jp/dp/4839922829?tag=nishiohirokaz-22




81 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 10:09:09 ]
Python関連書籍は別スレで、それもできればID出る板でやってくんねえかな
別でやってくれるなら工作員だろうが信者だろうが文句いわれないだろ
ここ最近明らかに異常だぞ

82 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 10:37:47 ]
おまえらが反応するからだ

83 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 10:39:16 ]
81こそ工作員だろJK

84 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 10:42:10 ]
都合が悪くなるとコロコロと言うことを換えるのが工作員の特徴

85 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 13:30:48 ]
都合が良くても言うことは代わる

86 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 14:22:51 ]
今見たらみんPyは23,477位だった
1時間ごと更新らしいが変動が大きいな

87 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 16:17:02 ]
>>84
「敵」は一人じゃないと気が済まないんですね、わかります。

88 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 16:31:21 ]
そういうことにしたいのですね。

89 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 17:52:38 ]
見えない敵と戦ってるんだよ

90 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:22:28 ]
工作員って、メメントのジョン・Gみたいなもんでしょ。



91 名前:デフォルトの名無しさん [2008/06/15(日) 18:28:46 ]
未定義の新しいクラス名が出てきたと思ったら、そのクラスを生成しちゃう裏技は?

a = B() # Bは未定義
a.met() # B::met()は未定義

ってあったとき、B()もmet()も空っぽでいいんでとりあえず実行させたいんだけっこ

92 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 20:35:28 ]
>>91
NameErrorやAttributeErrorを処理するんじゃ駄目なの?

93 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 21:08:30 ]
>>91
それって確かクックブックに載ってた気がする。


94 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 21:16:24 ]
>>91
あった。6.17 Null Objectデザインパターンを実装する...ってやつ
でいいんじゃないか?

本を持ってなければASPNに探しに行けば同内容のが載ってると思うよ。

95 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 21:20:16 ]
これかな
aspn.activestate.com/ASPN/Cookbook/Python/Recipe/68205

96 名前:デフォルトの名無しさん [2008/06/15(日) 21:29:59 ]
宿題スレでスレ違いと言われたのでこっちに引っ越しま〜す♪


657 名前:デフォルトの名無しさん[] 投稿日:2008/06/15(日) 20:24:59
Jythonのアプレットでexecが使いたい件
www.jython.org/applets/issues.html
↑証明書つければOKって読んだんですが、
証明書つけても、↓。たすけて

Exception in thread "AWT-EventQueue-2" java.lang.NoClassDefFoundError: org/python/core/parser
at org.python.core.Py.compile_flags(Unknown Source)
at org.python.core.Py.compile_flags(Unknown Source)
at org.python.core.__builtin__.compile(Unknown Source)
at org.python.core.__builtin__.eval(Unknown Source)
at org.python.core.__builtin__.eval(Unknown Source)
at org.python.core.BuiltinFunctions.__call__(Unknown Source)
at app$_PyInner.actionPerformed$36(app.java:556)
at app$_PyInner.call_function(app.java:245)
 (ry


97 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 21:33:00 ]
Jythonスレでも立てたら?

過疎るだろうけど。

98 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 21:43:31 ]
>>92
print "0"
try:
 print "1"
 a = B()
 print "2"
 a.c()
 print "3"
 # ...
 # a = C()とかいっぱい
except NameError:
 print "NameError" # 確認用に出力してるだけ
 # ここで、2に戻りたい??
except:
 print "abc"
print "z"

期待 "0123z"
結果 "01NameErrorz"

>>93-95
ありがとうございます。
Nullだけでは、だめで
class B(Null): pass
とか定義しないとだめかもなきがします。
それすら横着したいんですが・・orz

99 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 21:52:46 ]
B()はともかく
foo.bar なら __getattr__ でいけそうな気がするが


100 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 23:03:36 ]
100



101 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 23:10:37 ]
101

102 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 23:20:13 ]
>>96
JythonもJAVAも知らんけど、そのリンク先では「アプレットでは"exec"と"eval"
は使えない。」って言ってると思ふ。


103 名前:102 mailto:sage [2008/06/15(日) 23:31:23 ]
いや、「unsigned applets では・・・」だな。
ごめん、忘れておくれ。

104 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 11:12:48 ]
>>79
>売れているのは、ここで「バイブル」って書いてるからだろ。

このスレの書き込みがそんなに影響力あるわけないだろ〜、こ〜の〜(www
イナカモノの妄想は恥ずかしいな(www


105 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 11:48:00 ]
どっちも推測の域を出てないけどな

106 名前:職場にそういってたのが二人いるんだよね mailto:sage [2008/06/16(月) 12:32:40 ]
>8
お主、俺の同僚だったりしないだろうな?

107 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 12:33:20 ]
>このスレの書き込みがそんなに影響力あるわけないだろ〜、こ〜の〜(www
あるんじゃないか?マイナーな言語だから他にソースないし。
こっちの方がMLより活発だしね。

108 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 13:21:23 ]
>>107
そうだね、君には神の声が聞こえるよね。

109 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 13:27:21 ]
Pythonで学ぶソフトウェア作法の新しいやつでないかな。

110 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 13:29:37 ]
出るよ。
にちゃんねるがソースの情報だけど。



111 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 13:33:38 ]
>>108
君の神が「そんなわけない」と言ってるのはわかったよ。

112 名前:デフォルトの名無しさん [2008/06/16(月) 13:38:00 ]
class A:
  B = 1

a = A()
a.B

a.B呼び出しをフックしたいのですが、
(a.Bが実行される前に__getattr__のようなメソッドが呼ばれるとうれしい)

113 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 13:38:22 ]
なんでも否定されているように感じるのは、ヒキコモリの特徴だね。

114 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 13:49:31 ]
2chしか情報源がないなんてかわいそうだね.

115 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 13:49:40 ]
まったくだ。
神とか言い出してまで食い下がるトコじゃないのにね。

116 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 13:58:22 ]


117 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 13:58:52 ]
>>112
プロパティ使えば?
class A:
 @property
 def B(self):
  print "B"
  return 1

118 名前:117 mailto:sage [2008/06/16(月) 14:03:42 ]
>>112
プロパティ使わなくても、objectから継承すれば__getattribute__でフック出来たわ

119 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 14:20:56 ]
>>115
そうあなたのウッチュウジンが言ったんですね。分かります。

120 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 14:36:45 ]
pass



121 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 14:53:54 ]
None

122 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 15:14:35 ]
God

123 名前:デフォルトの名無しさん [2008/06/16(月) 17:20:13 ]
class Aに定義
 def __getattr__(self, mname):    # C
 def __getattribute__(self, mname): # D

# object継承/非継承と、変数定義/未定義のパターン
class A(): #1
 #b = 1
 #B = 1

class A(): #2
 b = 1
 B = 1

class A(object): #3
 #b = 1
 #B = 1

class A(object): #4
 b = 1
 B = 1

a = A()

アクセスしたときの挙動
   #1 #2  #3 #4
a.b C  ○  D  ○
a.B C  ○  D  ○
A.b x  ○  x  ○
A.B x  ○  x  ○

x ・・・ AttributeError: class A has no attribute 'b'

124 名前:デフォルトの名無しさん [2008/06/16(月) 17:22:40 ]
>>117-118
ありがとうございます。
objectの継承と、__getattribute__使ってみました

結果、>>123なんですが、暑いので、
なにがやりたいのかわからなくなってきました
閑話休題

ところで、
class A():
 b = 1
のbはクラス変数であってますか?

インスタンスを作らずにA.bというふうにアクセスしてもいいですか?

>>123のxのところをなんとかしてください?m(__)m

125 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 18:03:08 ]
つ __metaclass__

126 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:35:50 ]
懐かしいな。
久しぶりにメタクラスの話題をやろうぜ。
あとデザインパターンも。

127 名前:デフォルトの名無しさん [2008/06/16(月) 22:06:15 ]
そういうことは西○さんにまかせとけ

128 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:10:34 ]
>>> x+y
x + y
>>> -(x-y)
y - x

>>> 24-72
-48
>>> trace('24-72')
24-72
-(-24+72) # 省略可
-(72-24)

数値のリテラルをオブジェクトとして演算子'-'で展開する
とか、どうやればよいでしょうか?

関数作って文字列加工でお茶濁すのもじぶんには書けない…orz

129 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:23:36 ]
__sub__
__neg__



130 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:58:22 ]
お茶を濁すのはこんなのでいいの?
>>> def adder(a,b):
... print '%s + %s' % (str(a),str(b))
...
>>> def subtracter(a,b):
... print '%s - %s' % (str(b),str(a))

>>128が書いてあるような操作が必要なときってどんなときが
あるの?想像がつかないんだけど。



131 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 02:26:12 ]
>>130
いやね。(24-72) 弟がわからんいうとるのよ
どう筆算したらええねんとか -(72-24)ならわかるらしい(謎

132 名前:131 mailto:sage [2008/06/17(火) 02:31:54 ]
def trace(exp):
 '''
 >>> trace('24-72') # one '-' elements
 '-(72-24)'

 >>> trace('x-1/2-1/3-1/4') # two '-' elements
 '-(1/4+1/3+1/2+x)'

 >>> trace('24+72') # no '-' elements
 '-(-72-24)'
 '''
 if '+' in exp:
  n = len(exp.split('+'))
  if n >= 3:
   print 'not implement...'
  else:
   elm = '-'.join(list(reversed(exp.split('+'))))
  return '-(-' + elm + ')'
 
 else: 
  n = len(exp.split('-'))
  if n >= 3:
   elm = '+'.join(list(reversed(exp.split('-'))))
  else:
   elm = '-'.join(list(reversed(exp.split('-'))))
  return '-(' + elm + ')'

import doctest
doctest.testmod()

ユニットテストは通るけど、初項の符号が間違ってるし…
二項なら上手くいきそうだけど、おいらには三項以上は無理そげ

133 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 02:38:13 ]
繰り上がりは分かるけど繰り下がりがわからないんだろな

134 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 09:26:38 ]
奇数列を簡単に生成するには
どうすれば良いですか?

135 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 09:29:35 ]
[i for i in range(100) if i % 2]

136 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 09:37:08 ]
range(0,100,2)
じゃだめなの?


137 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 09:37:28 ]
def odd(x=1): x+=2; yield x;

138 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 09:39:31 ]
range(1,100,2)か。奇数列なら。


139 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 09:59:52 ]
itertools.ifilter(lambda x: x % 2, itertools.count())

140 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 10:01:39 ]
itertools.islice(itertools.count(1), None, None, 2) とどっちが速いだろ



141 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 10:03:22 ]
>>138
>>> range(1,100,2)[0:10]
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
>>> range(0,100,2)[0:10]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

有限個の数列を生成するなら、
関数 => リスト => スライス演算(部分数列=部分リスト)
が理解しやすそうd

odz.sakura.ne.jp/projecteuler/index.php?Problem%2014

>>> t_collaz(exp)
13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1

コラッツ問題のtracerは、どう書いたら良いでしょうか?

142 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 10:28:31 ]
def collatz(n)
 show n
 if n.odd? and n > 1
  collatz(3n + 1)
 else if n.even?
  collatz(n / 2)

再帰で処理を分岐して、引数を数珠繋ぎに取って来て、
各ステップの値を引数に託して、リストを生成する

return '→'.join(結果リスト)。書けん…orz

143 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 10:38:08 ]
>>141
def collatz(n):
r=[]
while n>1:
r.append(n)
n=3*n+1 if n%2 else n/2
return r

print collatz(13) # => [13, 40, 20, 10, 5, 16, 8, 4, 2]

144 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 10:47:36 ]
def collaz(n):
 if n in odd and n > 1:
  collaz(3*n+1)
  yield n 
 elif n in even:
  collaz(n/2)
  yield n

>>> odd = range(1,100,2)[:10]
>>> even = range(0,100,2)[:10]
>>> [x for x in collaz(13)]
[13]

ジェネレーターの使い方がわからない…
return と、どう違うねん

145 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 10:56:11 ]
def collatz(n):
    while n > 1:
        yield n % 2 and 3 * n + 1 or n / 2

reduce(lambda x, y: "%s->%d" % (x,y), collatz(13), "").lstrip("->")
汚ぇw

146 名前:145 mailto:sage [2008/06/17(火) 10:59:02 ]
まあreduce()は冗談
普通はjoinだよな常考

147 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 11:07:29 ]
>>143
とても正しいです…

def collatz(n):
 r=[]
 while n>1:
  r.append(n)
  n = 3*n+1 if n%2 else n/2
 yield r

>>> collatz(13)
<generator object at 0x02637788>
>>> [x for x in collatz(13)]
[[13, 40, 20, 10, 5, 16, 8, 4, 2]]

def collatz(n):
 r=[]
 while n>1:
  r.append(n)
  n = 3*n+1 if n%2 else n/2
  yield r

>>> [x for x in collatz(13)]
[[13, 40, 20, 10, 5, 16, 8, 4, 2], [13, 40, 20, 10, 5, 16, 8, 4, 2], [13, 40, 20, 10, 5, 16, 8, 4, 2], [13, 40, 20, 10, 5, 16, 8, 4, 2],
[13, 40, 20, 10, 5, 16, 8, 4, 2], [13, 40, 20, 10, 5, 16, 8, 4, 2], [13, 40, 20, 10, 5, 16, 8, 4, 2], [13, 40, 20, 10, 5, 16, 8, 4, 2], [13, 40, 20, 10, 5, 16, 8, 4, 2]]

なんか動作がわからない。なんで完成したリストが13回返されるかな…
計算結果を格納した暫定結果リストを返してくれれば便利そげだけど

148 名前:145 mailto:sage [2008/06/17(火) 11:13:04 ]
アホだ...こうしないと動かないよな
def collatz(n):
    while n > 1:
        yield n
        n = n % 2 and 3 * n + 1 or n / 2

>>147
どんな出力を求めてるのかが、いまいちよくわからない

149 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 11:18:21 ]
>>147
> なんか動作がわからない。なんで完成したリストが13回返されるかな…
yield r の開始位置を比べてみそ。

150 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 11:19:44 ]
yield list(r)



151 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 11:33:22 ]
>>148
def collatz(n):
  yield n
  n = n % 2 and 3*n + 1 or n/2

>>> collatz(13).next()
13
>>> f = collatz(13)
>>> f.next()
13
>>> f.next()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration

>>> [x for x in collatz(13)]
[13]

>>149
開始位置ってなんじゃらほい
サンプルとかヒントきぼん

152 名前:151 mailto:sage [2008/06/17(火) 11:36:36 ]
あほだ…while抜け取るやん…orz

153 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 11:47:29 ]
>>148
def collatz(n):
 while n > 1:
  yield n
  n = n % 2 and 3*n + 1 or n/2

>>> f = collatz(13)
>>> f.next()
13
>>> f.next()
40
>>> [x for x in f]
[20, 10, 5, 16, 8, 4, 2]

return [リスト]
っぽいけど操作すると要素が消費されてくのね…
部分リストを、返せば計算過程が

[[13],[13,40],[13,40,20],[13,40,20,10],…]
>>> t_colltz(13)
13
13 -> 40
13 -> 40 -> 20
13 -> 40 -> 20 -> 10

便利?

154 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 12:14:06 ]
>>> for i, x in enumerate(collatz(13)):
print x[:i+1]
[13]
[13, 40]
[13, 40, 20]
[13, 40, 20, 10]
[13, 40, 20, 10, 5]
[13, 40, 20, 10, 5, 16]
[13, 40, 20, 10, 5, 16, 8]
[13, 40, 20, 10, 5, 16, 8, 4]
[13, 40, 20, 10, 5, 16, 8, 4, 2]

StopIteration で最終項 x[:8+1].append(1)を
返すとか可能かな?

155 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 12:42:35 ]
>>153
相変わらずよくわからんが
def holder(seq):
    l = []
    for x in seq:
        l.append(x)
        yield l[:]
こんな感じのを作れば任意のイタレータを追跡できるんじゃね
効率悪そうだけど

>>> for x in holder(xrange(10)):
... print x
...
[0]
[0, 1]
[0, 1, 2]
[0, 1, 2, 3]
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4, 5]
[0, 1, 2, 3, 4, 5, 6]
[0, 1, 2, 3, 4, 5, 6, 7]
[0, 1, 2, 3, 4, 5, 6, 7, 8]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]


156 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 14:11:05 ]
>>155
codepad.org/ftT9hMVc

こんなかんじで f = iter(seq) でパックしつつ

順序が重視される並び(たとえばトランプの手札)を
用意して
それに外部から操作する関数 def 人名_gnext(): で
操作したら

わかりやすくならないかな…グローバル変数
操作するのと対して変わらないか…

157 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 14:39:47 ]
>>144
ジェネレータのyield自体はreturnとほとんど意味は同じ。
next()が呼ばれるとyieldのところから実行が再開される。
(yieldを書くとnext()は勝手に作成される)

ジェネレータの中でループ使ってないと、あまり意味はない。
無限ループからyieldで値を返すと、無限数列が作れる。

158 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 15:18:52 ]
>>144
入門書嫁。

159 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 21:43:31 ]
Pymacs 入れようと思ったんですが、pymacs-servicesが見つかりません
どこですか?

160 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:50:40 ]
pymacs-0.23です



161 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 10:31:56 ]
Pythonってクールですね

162 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 10:51:12 ]
Pythonってコールドですね

163 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 10:54:50 ]
162だけがコールドですね。

164 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 11:02:53 ]
僕のPythonもクールダウンしそうです

165 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 11:10:09 ]
>>164
単三電池でウォームアップすれば?
ところでみんなアッー!温泉行く?


166 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 11:17:48 ]
python 開発の歴史をビジュアル化したものだそうです

www.vimeo.com/1093745

2000年ごろとか Google 移籍辺りでドーンと来てるね

167 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 11:52:39 ]
コミットを視覚化してるのか、面白いね

168 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 12:05:05 ]
離れてってるのもあるのが微妙

169 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 12:07:16 ]
この効果音あんまり好きじゃない

170 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 15:50:16 ]
>>166
GJ



171 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:18:27 ]
Batteries Inserted

172 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:08:23 ]
話題に乗るのが2,3日遅くね?

173 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:17:45 ]
電池挿入済みの哲学ですね。わかります

174 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:22:40 ]
このスレを見ている人はこんなスレも見ています。(ver 0.20)
【batteries】電池☆挿入【inserted】[ガチホモ]

175 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:45:06 ]
自己解決しました

176 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:40:43 ]
自己挿入しました。

177 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 01:19:24 ]
^ ~ ってなんの演算子?

178 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 01:32:38 ]
>>177
ttp://www.python.jp/doc/release/lib/bitstring-ops.html

179 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 01:42:07 ]
ttp://d.hatena.ne.jp/odz/20061119/1163971267#20061119fn1

いい加減なんだってさ

180 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 02:01:32 ]
そもそも比較なんていい加減なもんだろ
微妙に方向違うんだから完璧に正しく比較なんてむりだ



181 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 02:08:27 ]
変数名の面白さを比較するんですね わかります


182 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 03:25:22 ]
>>179
内容は、揚げ足とるだけで終わっているね

183 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 03:56:23 ]
ちょっとききたいんですが。
Python2.5ライセンスのBの3を見ると、
>Python2.5を改変して使う場合は変更点の要約を配布物に含めよ
みたいなことがかいてあるけど、たとえばPythonのソースに手を加えて
改造版Python25.dllをつくってアプリに組み込んだとすると、
具体的にどこを改造したのかドキュメント化(もしくはソース添付)しないといけないってこと?



184 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 09:33:29 ]
うん

185 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 09:53:26 ]
>>179
「はじめてのPython」の著者じゃん(wwww
糞本の作者だけあって、便所の落書きも糞だな(wwwwwwwwww

186 名前:デフォルトの名無しさん mailto:age [2008/06/20(金) 10:17:51 ]
2.6b1 & 3.0b1 release age

3.0はモジュール名の大改修が行われてて、2.xからの移行が大変そうだ……

187 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 11:24:00 ]
それは、オリジナルの Python25.dll をつかってさえいれば、
なにも書く必要は無いってこと?

188 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 11:58:10 ]
>>186
っ2to3

189 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 12:35:10 ]
>>188
構文はそれでだいたいいけるとして、
ライブラリの再編まで追従してくれるのん?

つか初βだし、そろそろ2to3使ってみるかな

190 名前:デフォルトの名無しさん [2008/06/20(金) 13:19:10 ]
関数(メソッドじゃなくてインデント0のdef)が、頭大文字の名前で定義されてるのを見たんだけど、
これは慣習的にどういう意味を持つの?
ついでに、メソッドの場合は?



191 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 13:48:34 ]
関数名が大文字で始まるのはMicrosoftのAPIなんかがそうだな

192 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 13:55:28 ]
wxPythonなんか使ってる場合もそうだな

193 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 15:36:43 ]
functional
でいろいろ楽ができそうなんだけど
検索してもあんまり情報でてこない

ひょっとして3.0で大幅に変わったりするの?

194 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 15:59:15 ]
なんのこと?

195 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 16:26:11 ]
www.ibm.com/developerworks/jp/linux/library/l-prog3/

196 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 16:36:19 ]
3.0との接点がなさそうだが

197 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 22:05:53 ]
for i in range(1, len(ss)):

range()は数列の配列を返すんだからfor文中でssをいじってもループ回数は変わらない・・・
で合ってますか?

198 名前:190 mailto:sage [2008/06/21(土) 01:13:28 ]
>>191,>>192
つまり、関数やメソッドの名前をCamelCaseにするかsnake_caseにするかは、
定着した慣習はなく、書く人の好みと言うこと?

俺が見たCamelCaseの名前で関数を定義してるソースは、
Guido本人が書いた可能性もあるソースなんだけど、本人すらカオスってるって事か。

199 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 01:43:18 ]
>>198
具体的にどのソースのことを言っているの?
サンプル数が少ないようならそもそも慣習とは言えないし。

200 名前:190 mailto:sage [2008/06/21(土) 02:07:49 ]
rietveld.googlecode.com/svn/trunk/codereview/engine.py

これっす。
def ParsePatchSet(patchset):とか
def FetchBase(base, patch):とか。



201 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 02:08:14 ]
>>198
PEP 8 -- Style Guide for Python Code
www.python.org/dev/peps/pep-0008/
PEP 7 -- Style Guide for C Code
www.python.org/dev/peps/pep-0007/

202 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 06:55:30 ]
pygletスゲーーーー
SDLいらねーーーー

203 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 08:16:19 ]
pygameの翻訳しろよカス共
neet山もpygame講座の続き書けよ、何年経ってると思ってるんだクソが

204 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 08:45:58 ]
>> 197
range()の引数はすぐに評価されるから、range(1, len(ss))とした時点で 1, 2, ..., len(ss)の配列か、イテレータができちゃう。だからループ内でssを変更しても、forループの対象になってるイテレータは影響を受けないよ。

ssが動的に変わるなら、例えばこうだ。

i = 0
while i<len(ss):
 i+=1
 ...


205 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 09:14:50 ]
197を見てふと次の2つのコードを試してみた

a = 'aaa'
for e in a:
 a += 'b'

a = list('aaa')
for e in a:
 a += 'b'

また1つ賢くなった。

206 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 09:37:11 ]
CraftLaunchのように自作ソフトウェアのマクロとしてPythonを組み込みたいのですがどうすればよいのでしょうか?

207 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 09:44:30 ]
>>206
ttp://www.python.jp/doc/release/ext/embedding.html

208 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 13:33:17 ]
少々スレ違いかもしれませんが。
C++でpython拡張を作成し、setup.pyでビルドしたのですが。

$ cat setup.py
#!/usr/bin/env python
# setup.py
from distutils.core import setup, Extension

module = Extension(
'foo',
sources = ['foo.cpp'],
include_dirs = ['/usr/local/include/'],
library_dirs = ['/usr/local/lib'],
libraries = ['boost_python-mt', 'boost_filesystem-mt']
)

setup(
name = 'Foo',
version = '1.0',
ext_modules = [module],
)

$ ./setup.py build
running build
running build_ext
building 'Foo' extension
creating build
creating build/temp.macosx-10.3-fat-2.5
gcc -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -fno-strict-aliasing
-Wno-long-double -no-cpp-precomp -mno-fused-madd -fno-common -dynamic
以下略


209 名前:208 mailto:sage [2008/06/21(土) 13:34:01 ]
最後の行を見てもらうとわかる通り、librariesで指定したライブラリを動的リンクしているのです。
これを静的リンクにするにはどのようにすれば良いのでしょう?
というか、setup.pyでGCCのオプションを設定するにはどのようにすれば良いのでしょうか?

210 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 13:43:05 ]
>>207
ありがとうございます。もう少し調べるべきでした...



211 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 14:41:20 ]
プロンプトのコマンドを2つ同時に行う方法について聞きたいです

サブプロセスでプロンプトを用いてファイルのコピーを行いたいです。
os.systemを用いて行うには、
1、cd "保存先"
2、copy "コピー元のファイル" "コピー先でのファイル"
以上の二つを宣言しなくてはいけないため、実際に自分が考えた方法では
os.system("cd "保存先"")
os.system("copy "コピー元のファイル" "コピー先でのファイル"")
としてしまうと、別々にプロンプトを開いてしまい機能しません。
何か対処法は無いでしょうか?

212 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 14:44:56 ]
os.system("copy "コピー元のフルパス" "コピー先でのフルパス"")

213 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 14:58:37 ]
>>212ありがとうございます。助かります。
pythonではない質問で申し訳ありません。

214 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 17:06:13 ]
>>211
os.system("cd 保存先") ではカレントディレクトリは変わらないみたいだよ。
os.chdir() を使う必要があると思う。

215 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 17:44:37 ]
>>214
みたいだよ、というか、変わらない。
子プロセスのCWDが変わって終わり。

自プロセスのCWDを変えるには自プロセスが chdir(2) を
実行しないとダメ。

216 名前:デフォルトの名無しさん [2008/06/21(土) 21:40:12 ]
>>> eval("1")
1
>>> eval("print 1")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1
print 1
^
SyntaxError: invalid syntax
>>>


なんで?

217 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 21:41:13 ]
つ exec

218 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 21:46:17 ]
>>211
os.system("cd hoge && copy from to")
とかやってもよい
&&は、一般的なUnixの/bin/shでもWindowsのcmd.exeでも使えるはず

219 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 21:51:30 ]
>>216
入門書嫁
そして式と文の違いを知れ


220 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 00:58:42 ]
>>218
そしてcdに失敗したときに変なところにごみファイルが出来る訳ですね



221 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 00:59:55 ]
>>220
&&の意味分かってる?
python の andと同じでショートサーキットで動く
前のコマンド(cd)が成功しないと、次のコピーは実行されないよ

222 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 01:25:58 ]
set と frozenset の違いって何?
list と tuple みたいなもん?

そういればフローズンバイナリもよくわからないんだけど、これってなんなの?

223 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 02:38:09 ]
>>222
www.google.co.jp/search?q=python+set+frozenset

224 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 02:43:14 ]
setの使い方というか意義自体よう分からん、java知ってる人には便利らしいんだけど

>>222
setとfrozensetの違いは思ったとおりみたい
不可変だとハッシュに使えるの良いんだよ、ってチュートリアルにあった

225 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 06:23:14 ]
>>> L = [1, 2, 3, 1]
>>> list(set(L))
[1, 2, 3]

なんかはたまにする。けどそれ留まり
tupleはデータベースなんかだとlistよりしっくり来る気もする

226 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 08:02:19 ]
たまーに値がダミーでキー・添え字が主体な辞書・配列って見ない?
(たぶん書いてる本人もアホっぽいと自覚してるようなコード)
そういうのはsetで明示的にシンプルに書ける。
まー値の更新なんかタダみたいなもんだから実行コストは変わんないだろうけど。

SQLでいうSELECT DISTINCTだから用途は多いとおもう。

227 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 10:54:34 ]
htmlからリンクを検索するとき、検索済みのURIをsetに入れておいたりするな。

228 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 10:57:58 ]
>>226
setの方が遅いからじゃない?

229 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 11:17:22 ]
>>228
そんなのは初耳だ
setの実装はハッシュテーブルだからlookupはO(1)のはずだが

勿論重複除去にも使えるが、
if x in foo:
みたいなテストを頻繁にやりたいのなら、setがいいよ
fooがtupleやlistなら、リニアサーチだからO(n)になる
>>227はいい例だな

230 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 11:48:40 ]
>>226
昔はsetがなかったからだろ



231 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 12:03:16 ]
fooが辞書ならsetと同じですか

232 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 12:33:50 ]
>>231
そうだけど、setでいいところにdict使うのは無駄だろ
setならlist, tupleのようなシークエンスやiteratorから直接構築できるしな

233 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 14:46:23 ]
「任意の文字列」を2文字区切りのデータとして
set に切り出すのは無理ぽ?

>>> C=[u"中華人民共和国"]
>>> def indexing(str):
... S.add(e)
... S.add(e[:2])
... S.add(e[1:3])
... S.add(e[2:4])
... S.add(e[3:5])
... S.add(e[4:6])
... S.add(e[5:7])
...
>>> S.clear()
>>>
>>> for e in C:
... indexing(e)
...
>>> for e in S:
... print e,
...
民共 中華人民共和国 共和 華人 和国 人民 中華

234 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 14:58:41 ]
こんなのか

def pairs(iterable):
    it = iter(iterable)
    last = it.next()
    for item in it:
        yield last, item
        last = item

print list(''.join(p) for p in pairs("foobar"))

235 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 15:26:37 ]
ある文字列 'saieunak' を並べ替えて出来る組み合わせを全て挙げるには?

236 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 15:42:39 ]
def permutation_string(s):
    if len(s) == 1:
        yield s
    for i in range(len(s)):
        for j in permutation_string(s[:i] + s[i+1:]):
            yield s[i] + j

def iset(iterable):
    S = set()
    for i in iterable:
        if i not in S:
            S.add(i)
            yield i

for i in iset(permutation_string("saieunak")):
    print i

237 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 15:50:49 ]
このほうがいいな。str, list, tuple対応
def permutation(seq):
    if len(seq) == 1:
        yield seq
    for i in range(len(seq)):
        for j in permutation(seq[:i] + seq[i+1:]):
            yield seq[i:i+1] + j

238 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 18:35:37 ]
喜 = ['glad','happy','enjoy']
^
SyntaxError: invalid syntax

python って2バイト文字を識別子に使えない?

239 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 18:51:13 ]
>>238
Python3.0ならできるらしい

240 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 18:55:00 ]
>>238
そんなにスイーツ()関数が作りたいのか



241 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 20:53:01 ]
>>238
www.python.jp/doc/nightly/ref/identifiers.html

242 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 21:37:16 ]
ついでとして3.0
docs.python.org/dev/3.0/reference/lexical_analysis.html#identifiers-and-keywords

243 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 08:28:49 ]
pythonからシステムのクリップボードにアクセスしたり、文字列を代入したりすることは出来ますか?
OSはubuntu8.04です。よろしくお願いします。

244 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 10:10:09 ]
はい

245 名前:デフォルトの名無しさん [2008/06/23(月) 11:26:46 ]
>>> a = [ "apple" ]
>>> print a
['apple']

これ,["apple"] みたいに文字列の引用符を
二重引用符にすることってできませんか?
できれば __builtins__.str() にそういう機能があればいいんだけど.

246 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 12:20:31 ]
>>245
できない気がするけどなぜそんなことがしたいの?

247 名前:デフォルトの名無しさん [2008/06/23(月) 13:01:28 ]
>>246
simplejson とかインスコするのが面倒な場面で
JSON を楽に吐きたかった.

Windows で simplejson インスコするの面倒だから.
でも MinGW つかってバイナリパッケージ作った.
だれか必要?

248 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 13:14:21 ]
>>247
docs.python.org/dev/3.0/library/json.html

あ、jsって文字列リテラルが""なのね・・・

>>> import json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'

いつの間にか標準ライブラリの Internet Data Handling の所に
追加されてるのな。PEPとかないのか。なんじゃこりゃ

docs.python.org/dev/3.0/whatsnew/3.0.html

249 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 13:15:03 ]
>>244
携帯から失礼
時刻(2008/06/23 12:00のようなフォーマット)をクリップボードにコピーするスクリプトを書こうと思ったのですが、クリップボードにアクセスする方法がわからずになやんでいました。
出来るとのことですが、どのような方法でしょうか?

250 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 13:47:02 ]
>>249こんなんでいいだろ。てかxselでおk

#!/usr/bin/python
import gtk, gobject, sys
if len(sys.argv) == 1 or sys.argv[1] not in ('-i', '-o'):
    print "Usage: clip.py [-i|-o]"
    sys.exit(1)
def f():
    clip = gtk.Clipboard()
    if sys.argv[1] == '-i':
        clip.set_text(sys.stdin.read())
    if sys.argv[1] == '-o':
        sys.stdout.write(clip.wait_for_text())
    gtk.main_quit()
gobject.idle_add(f)
gtk.main()



251 名前:デフォルトの名無しさん [2008/06/23(月) 13:56:05 ]
>>248
標準ライブラリで JSON を扱えるようにするにあたって
現在いろいろ乱立しているJSONライブラリのどれを
ベースにするかでひともめ有った気がする。
最終的にどうなったかは知らないけど、
simplejson のインターフェイスに似せるってのが
多くの支持を得てたような。

自分は 2.5.2 しか使ってないから 2.6/3.0 の動きシラネ

252 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 14:31:32 ]
Issue 2750: Add simplejson to Python 2.6/3.0 standard library
bugs.python.org/issue2750

253 名前:デフォルトの名無しさん [2008/06/23(月) 14:50:55 ]
2.5.x にもバックポートされないかなぁ。

254 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 15:24:04 ]
>>251
2.5系と3.0b1の文字列メソッドを dir('') して比べてみた。

3.0b1で新規追加される
__format__, __sizeof__, __subclasshook__
_formatter_field_name_spilt, _formatter_parser

'format' <= printの変更に伴って導入された感のあるformat系のメソッド

2.5.2
'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper'

3.0b1
'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower',
'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper'

>>> 喜 = ['glad','happy','enjoy']
>>> '喜'.isidentifier()
True

decimal, numeric, printable がいまいちよくわからなかた…

255 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 15:45:23 ]
docs.python.org/dev/3.0/library/stdtypes.html#id4

256 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:00:17 ]
既約分数クイズ
www.hyuki.com/dig/fracans.html

Pythonで解く場合、どんなかんじになりますか?
リンク先が切れてて答えがわか欄です

257 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 01:17:38 ]
>>256
internet archive

258 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 02:12:04 ]
RE_なんとかは正規表現オブジェクトとして
if RE_FOO.match(s): ...
elif RE_BAR.match(s): ...
else: ...
みたいに書きたいとき、この書き方だとMatchObjectとれないから困るんだけど
どうするのがPython的に正しいの

259 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 08:17:13 ]
>>256
書いてみたが、リンクリストかQueueの方がスマートかも。
def kiyaku_bunsu(n):
if n == 1:
return [0, n], [1, n]
else:
a, b = kiyaku_bunsu(n - 1)
while a[0] != b[0]:
a, b = rotates(a, b)
if b[0] + b[-1] == n:
apps(a,b)
return rotates(a, b)

def rotates(*x):
return map(lambda a:a[1:]+[a[0]], x)

def apps(*x):
return map(lambda a:a.append(a[0] + a[-1]), x)

n = input("denominator:")
for i in zip(*kiyaku_bunsu(n)):
print "%d/%d %f\n" % (i[0], i[1], 1.0*i[0]/i[1]),

260 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 08:30:57 ]
>>250
xselで出来ることのようで、シェルスクリプト総合スレで解決させていただきました。
Pythonのコードも勉強になりました。ありがとうございます。(報告遅れてすいません。)



261 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 11:48:10 ]
>>256 載ってるアルゴリズムをpythonで書き下しただけだぜ

def liter(l):
    while len(l):
        yield l[0]
        l = l[1]

def make_farray(n):
    farray = [(0,1), [(1,1), []]]
    done = False
    while not done:
        car, cdr = farray[0], farray[1]
        done = True
        while cdr:
            cadr = cdr[0]
            mid = (car[0] + cadr[0], car[1] + cadr[1])
            if mid[1] <= n:
                cdr[:] = [mid, [cdr[0], cdr[1]]]
                done = False
            car, cdr = cdr[0], cdr[1]
    return farray

if __name__ == '__main__':
    for n in range(2,10):
        fa = make_farray(n)
        print " ".join("%d/%d" % x for x in liter(fa))

262 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 14:02:59 ]
6.2. match() vs search()
match() 関数は、正規表現が先頭でマッチするかを調べるだけで、
search() は文字列の先へ進みながら、マッチする部分を探します。
この違いを覚えておくことは重要です。
match() は位置 0 でマッチした場合のみ報告してくれます。
もしマッチが位置 0 以外ならmatch() は報告 しません。

>>> print re.match('super', 'superstition').span()
(0, 5)
>>> print re.match('super', 'insuperable')
None

反対に、search() は文字列を先へと探していき、最初に見付けたマッチを返します。

>>> print re.search('super', 'superstition').span()
(0, 5)
>>> print re.search('super', 'insuperable').span()
(2, 7)

ときどき、あなたは re.match() のみを使って、正規表現の前に .* を付けておくという誘惑にかられるかも知れません。
この誘惑に打ち勝って、re.search() を使いましょう。
正規表現のコンパイラは、マッチ部分の探索を高速に行うために、正規表現をそれなりに解析します。
そのような解析のひとつが、最初のマッチ文字が何であるか見付けることです。
たとえば Crow で始まるパターンは "C" で始まる文字列とマッチしなければいけません。
この解析により、マッチングエンジンは、文字列の中から最初の文字を素早く探索し、
見付かった場合だけ全体のマッチを試みるのです。

.* を付け加えると、この最適化ができないため、文字列の最後まで探索してから、
残りの正規表現のマッチ部分を探しに逆戻りすることが必要になるのです。


263 名前:261 mailto:sage [2008/06/24(火) 14:21:39 ]
これでいいな。二重ループいらんわ。

def liter(l):
    while len(l):
        yield l[0]
        l = l[1]

def make_farray(n):
    farray = [(0,1), [(1,1), []]]
    car, cdr = farray[0], farray[1]
    while cdr:
        cadr = cdr[0]
        mid = (car[0] + cadr[0], car[1] + cadr[1])
        if mid[1] <= n:
            cdr[:] = [mid, [cdr[0], cdr[1]]]
        else:
            car, cdr = cdr[0], cdr[1]
    return liter(farray)

if __name__ == '__main__':
    for n in range(2,100):
        print " ".join("%d/%d" % x for x in make_farray(n))

264 名前:261 mailto:sage [2008/06/24(火) 18:53:02 ]
アレ過ぎるのでPythonらしくした
つか、この手のリスト処理って、Pythonでどう書くのが定石なのか
さっぱりわからん

from itertools import chain

def make_farray(n):
    head = (0,1)
    tail = iter([(1,1)])
    yield head
    while True:
        try:
            next = tail.next()
            mid = (head[0] + next[0], head[1] + next[1])
            if mid[1] <= n:
                tail = chain((mid, next), tail)
            else:
                head = next
                yield head
        except StopIteration:
            break

265 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 18:56:40 ]
無限数列を返すジェネレータ2つを zip でまとめて for で回すと止まっちゃうんだけど、
そういうもんですか?
固定長のイテレータじゃないと zip できないのかな。

266 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 19:02:26 ]
izip使え

267 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 19:06:36 ]
>>266
WAO! ありがとうございました!

268 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 22:29:30 ]
>>258
「Python的に正しい」かどうかは知らんけど、こういうのはどう?
分かりにくくなるだけのような気がするが

class Delegator:
    def __init__(self):
        self.__dict__ = { 'object': None }
    def set(self, obj):
        self.__init__()
        self.object = obj
        for attr in dir(obj):
            if attr != '__class__':
                setattr(self, attr, getattr(obj, attr))

def re_search_x(regexp, s, delegator):
    m = regexp.search(s)
    if not m: return False
    delegator.set(m)
    return True

if __name__ == '__main__':
    import sys, re
    re_a = re.compile('a')
    re_b = re.compile('b')
    m = Delegator()
    for s in iter(sys.stdin.readline, ""):
        if re_search_x(re_a, s, m):
            print "a: matched at %d" % m.start()
        elif re_search_x(re_b, s, m):
            print "b: matched at %d" % m.start()

269 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 23:29:00 ]
>>258>>268
こういうのはどうだろう。

class Pattern:
    def __init__(self, pattern, flag=0):
        self.pattern = re.compile(pattern, flag)
    def match(self, string, flag=0):
        self.last_match = self.pattern.match(string, flag)
        return self.last_match

RE_FOO = Pattern("...")
RE_BAR = Pattern("...")
...

if RE_FOO.match(s):
    do something using RE_FOO.last_match
elif RE_BAR.match(s):
    do something using RE_BAR.last_match
elif ...

270 名前:268 mailto:sage [2008/06/24(火) 23:38:09 ]
>>269
そっちのが分かりやすいね
参照渡しが無いから替わりにdelegator使うとか流石にアホみたいだし



271 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 23:45:58 ]
def foobar(s):
  m = RE_FOO.match(s)
  if m:
    do something with m
    return nanika
  m = RE_BAR.match(s)
  if m:
    do something with m
    return nanika

272 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 23:57:07 ]
aspn.activestate.com/ASPN/Cookbook/Python/Recipe/66061 とか
aspn.activestate.com/ASPN/Cookbook/Python/Recipe/456151 の一番下のValue
自分は単純にwhile 1:とbreakで書くか>>271みたいに関数書くけど

273 名前:272 mailto:sage [2008/06/24(火) 23:59:02 ]
2行目終わりに「みたいに方法もある」が抜けた

274 名前:デフォルトの名無しさん [2008/06/25(水) 07:40:03 ]
GUI が使えるときは Tkinter 使った GUI で,
使えないときはコマンドラインインターフェイスで,
っていう切り替えをしたいんだけど,何を見て判断すればいいんだろうか.

UNIX でも Windows でもそういうことをしたいんだけど,
UNIX だと制御端末に関連付けられているかどうか,
Windows だと cmd.exe から起動されたか explorer.exe から
起動されたかで判断するのがいいのかな?
とはいえそれを Python でどうやって判定するのかが分からない.

Emacs なんかは X があってもなくても自動的に判定して
うまくやってくれてるみたいなんだけど,そういうことを
Python でできますか?

275 名前:デフォルトの名無しさん [2008/06/25(水) 07:45:46 ]
termios モジュールとか関係あるのかなぁ.
実は恥ずかしながらプロセスグループ,セッション,制御端末
そのあたりについてちゃんと勉強したことがなかった.
screen コマンドとか,「すげぇなぁ,どうやってんだ?」って
感心するばかり.

276 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 07:51:08 ]
WindowsでGUIが使えない環境ってあるのかな

277 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 07:52:03 ]
リモートでcmdコンソールだけ使ってるときとか


278 名前:デフォルトの名無しさん [2008/06/25(水) 08:22:54 ]
この言語って日本のIT企業ではどのくらい使われてるの?

279 名前:デフォルトの名無しさん [2008/06/25(水) 08:35:52 ]
がーん,Windows では import termios できなかった.

280 名前:デフォルトの名無しさん [2008/06/25(水) 08:36:22 ]
>>277
そう,そんな感じ.
あんまり一般的じゃないね.



281 名前:デフォルトの名無しさん [2008/06/25(水) 09:13:42 ]
もう単純に Tkinter でウィジェットを配置しようとして
失敗すれば CUI にフォールバックすることにした.
んが,なんか CUI しかない環境でも例外でねぇ・・・・

282 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 09:54:59 ]
emacsみたいに引数でユーザに指定させるのが現実的じゃないの?
-nwで端末モード、みたいな

283 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 10:43:00 ]
Emacs は X Window System 環境下では環境変数 DISPLAY の有無で GUI か CUI かを決めてた気がする。
Windows については知らない。

284 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 12:39:54 ]
webbrowser.py より

if os.environ.get("DISPLAY"):
...

# Also try console browsers
if os.environ.get("TERM"):
...

ということで、少なくとも 2.5 の webbrowser.py では
環境変数の有無で決めてるね。DISPLAY優先。

cygwin で webbrowser 使うと w3m になるよ。

285 名前:デフォルトの名無しさん [2008/06/25(水) 12:49:53 ]
>>281 なんかかんちGuy

例外でないって言ったけど,import Tkinter では例外でないが
a = Tkinter.Frame(None, "しね")
で例外が出た.

_tkinter.TclError: no display name and no $DISPLAY environment variable

まぁ結局 DISPLAY をチェックしているだけみたいなんだけどさ.
というわけで,Tkinter.TclError が投げられるかで判定することにします.

286 名前:デフォルトの名無しさん [2008/06/25(水) 12:50:37 ]
ちなみに Windows で cygwin の sshd 動かして
リモートからつないだような場合にどうなるかは
天気がよくなったら試してみる.

287 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 14:18:42 ]
Windowsの場合リモートでcmdでGUIの実行すると
相手側の端末にWindow出ててワロス


288 名前:デフォルトの名無しさん [2008/06/25(水) 14:24:05 ]
予想通りだ罠
X サーバー/クライアントで
どっちがどっちか判ってないような人たちが使う OS だし

289 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 14:31:01 ]
あはははは。

290 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 16:57:16 ]
>>287
そりゃ、プロセスが走ってる場所を考えれば当たり前だが、
この動作は間抜けすぎる。



291 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 17:04:03 ]
そういう環境でうっかりリモートに保存しておいた画像を見ようと
win> display erogazou.jpg
とかやっちゃったり…

292 名前:デフォルトの名無しさん [2008/06/25(水) 17:12:02 ]
>>>291 ねーよwww

ところで,>>287 のような動作って今の Windows でもそうなの?
Windows 95/98/98SE/Me のころまではそうだった気がするけど,
2000 以降ってセッションの概念がちゃんと導入されていて,
そういう変なことは起こらないようになっているんじゃなかったっけ?
POSIXでいうセッションとは違ってWindowsにおける
ターミナルセッションのことだけど.

293 名前:デフォルトの名無しさん [2008/06/25(水) 19:10:03 ]
Ruby使ってましたがPythonの勉強を始めました
Pythonは
['hoge','fuga'].each{|w|...}
的な、シーケンスにイテレータメソッドを適用するような書き方ってできますか?
チュートリアルにはforを使う書き方しか書いてなかったので、
どうかと思ったのですが

294 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 19:21:02 ]
>>292
ウィンドウマネージャに相当する機能が分離できない以上 Windows にそういうことを期待しない方がいいだろ
しかしつくづくクライアント向けOSなのな

295 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 20:00:54 ]
>>293
Pythonではリスト内包表記かmap関数かforで書く

296 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 22:07:33 ]
>>294
X サーバー/クライアントで
どっちがどっちか判ってないような人たちが設計した OS だし

297 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 07:07:49 ]
それでライフハックのつもりなんですね。分かります

298 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 08:14:02 ]
イミフ

299 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 09:43:04 ]
ライフハックの意味を知ってるのかね.

300 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 09:50:48 ]
ライフハック = 貧乏人の悪あがき



301 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 10:13:45 ]
ライフハックってスケジュール管理のノウハウのことだろ
正にイミフ

302 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 10:13:48 ]
アナルファックのほうがPython的だよね。

303 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 11:04:47 ]
3.0b1 では file(...) なくなってるのな。
file って2.0 系で来たんだよね?確か。
せっかく open やめて file 使うようにしたのに、、、

まぁもちろん2つあるより1つのほうがいいけどさ。

304 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 11:28:18 ]
メインループの中で作業実行スレッドを監視するスレッドを呼び、
その中で作業実行スレッドを呼んでいます。

作業実行スレッドの中でCOMの操作を行っているのですが、
そのCOM操作を行うとき、稀に動作が止まってしまい、
作業実行スレッドもそれに伴い、止まってしまうことがあります。

このとき、監視するスレッドで、作業実行スレッドの強制終了を行いたいのですが、
Pythonでスレッドの強制終了を行う方法はありますでしょうか?

CのTerminateThreadのような動作が出来るものを探しています。

説明が分かり辛いなどありましたら申し訳ありません。
どなたかご教授願えますでしょうか?

305 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 11:31:34 ]
よくわからんがプロセスわければ

306 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 11:42:50 ]
>>303
>せっかく open やめて file 使うようにしたのに、、、

入門書嫁。

307 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 12:22:04 ]
>>302
今週末のことを考えるとアナルがうずうずします.

308 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 12:58:45 ]
>>303
2.4ぐらいからopenの方が推奨されるようになった

309 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 13:18:31 ]
>>307
アナルは形容詞なので、その場合はアヌスと書くべきでしょう。
Pythonの達人たちの前でこれを間違うと、単一電池1ダース挿入の刑なので注意してください。

310 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 13:44:29 ]
>>309
ごめんなさい!
こんどキャバクラに連れて行くので許してください!



311 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 13:45:01 ]
電池って直接挿入するの?やばくね?

312 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 13:46:49 ]
>>309
>Pythonの達人たちの前でこれを間違うと、単一電池1ダース挿入の刑

ゴミが集まる場所で言ってもオッケーということですね、分かります。

313 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 14:33:19 ]
>>308
残念。2.4ではfileの方が推奨されていた。
立場が逆転したのは2.5からだ。

314 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 15:12:56 ]
>>313
www.python.org/doc/2.4.1/lib/built-in-funcs.html#l2h-25
>The intent is for open() to continue to be preferred
>for use as a factory function which returns a new file object.
>The spelling, file is more suited to type testing
>(for example, writing "isinstance(f, file)").

315 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 15:29:37 ]
file はクラス名として使うから,
open() をファクトリ関数として使うよ,ってこと?

316 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 21:43:56 ]
listの要素をsetに追加する際は次のようにしか書けないの?

>>> alist = [1,2,3,4]
>>> aset = set()
>>> for i in alist: aset.add(i)

もし他になんかかっこいいイディオムがあれば教えてませんか。

317 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 21:51:29 ]
aset(alist)

318 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 21:56:41 ]
自己解決しました。
>>317では動かなかったけど次のようにしたら動きました。

aset = set(alist)

いちおうありがとう。

319 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 22:03:41 ]
alistとか書くと連想リストみたいでいやん

320 名前:316==318 mailto:sage [2008/06/26(木) 22:07:39 ]
www.python.jp/doc/release/lib/types-set.html

ちなみにこれぐらい↑に書いといてくれればいいのにな、と思った。



321 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 22:16:04 ]
>>> help(set)
class set(object)
 |  set(iterable) --> set object

322 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 22:28:31 ]
>>320
www.python.jp/doc/release/lib/built-in-funcs.html
こっちには書いてあるんだけどな。

323 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 02:59:05 ]
ちょっと気になったんだけど

s = open("hoge")

てやると、s は暗黙的に str になるわけ?
これが py3.0 にあると unicode を返すようになるの?
すると、テキストファイルとバイナリファイルの違いはどうなるの?

open("hoge", "rb")



open("hoge", "r")

では違うオブジェクトが返るの?


324 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 03:40:23 ]
>>323
なんでstr?

325 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 03:52:58 ]
失礼、なんか勘違いしてた。疑問なのは
open じゃなくて
read したときの戻り値だ

326 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 10:05:36 ]
>>323
docs.python.org/dev/3.0/library/functions.html#open

327 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 10:23:45 ]
要素がなければNoneを返すようにする方法ってあります?
次のようなコードをすっきりさせたいんですが。

try:
avar = ainstance.hoge
except:
avar = None

ainstanceの属性hogeをavarに入れたい。
属性hogeが存在しなければavarにNoneを入れたい。

328 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 10:36:51 ]
avar = getattr(ainstance, 'hoge', None)

329 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 10:37:00 ]
getattr(ainstance, 'hoge', None)

330 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 10:40:35 ]
>>328,329
すごい。ありがとうございます。



331 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 11:12:59 ]
入門書嫁>330

332 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 16:32:21 ]
こんな感じの2次元配列データに関数f(xy)をmapして
meshdata=[ [x11,y22],[x12,y12] ,...] ,[ [x21,y21],...],...

[[z11,z12,...][z21,z22,...]]

したいのだけど
べたなループ以外に綺麗に書く方法ないのでしょうか

333 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 16:37:26 ]
添え字間違ったので再度

こんな感じの2次元配列データに
meshdata=[ [x11,y11],[x12,y12] ,...] ,[ [x21,y21],...],...
に関数f(xy)をmapして

[[z11,z12,...][z21,z22,...]]

を出力したいのだけど
べたなループ以外に綺麗に書く方法ないのでしょうか



334 名前:333 mailto:sage [2008/06/27(金) 17:03:01 ]
自己解決
[[f(xy[0],xy[1]) for xy in line] for line in meshdata]

335 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 19:27:16 ]
二次元っていうより対角線だけの一次元のような気が・・・

336 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 20:41:56 ]
ひょっとして内胞リストってlispよりも強力なの?

337 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 21:24:04 ]
>>336
マルチ乙
その記事は2001年で古いから、今ならジェネレータ式という選択もある。

338 名前:333 mailto:sage [2008/06/27(金) 21:48:00 ]
meshdata=[ [x11,y11],[x12,y12] ,...] ,[ [x21,y21],[x22,y22]...],...
で列方向(横方向)の処理は
[reduce(plot_line_between_two_point,line) for line meshdata]
で出来るけど同じような処理を行方向(縦方向)にするには
forでべた書きするしかないのでしょうか?


339 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 22:19:50 ]
zip(*meshdata)

340 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 22:29:47 ]
meshimada ?



341 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 22:50:48 ]
moutabetadesho

342 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 00:36:19 ]
クラスからインスタンスを作り、それを配列に入れる。
そのインスタンスの集合に''A'と言う名前をもつものがいるかを
A in tlistで取りたい。
__contains__を使えば取れるかなって思ったけど取れなかった。
nameをキーにもつ辞書を作ればできるけど、できればやらずに済ませたい。
こういう場合どのようは方法が取れますか?


サンプルコード

class T(object):
    def __init__(self,name,stype):
        self.name=name
        self.stype=stype
    def __contains__(self,key):
        return key in self.name

def main():
    tlist=[]
    for k in ['A','B','C']:
        tlist.append(T(k,k))
    if 'A' in tlist:
        print 'A contains in tlist'
    else:
        print 'A exclude in tlist'
if __name__=='__main__':main()



343 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 00:51:26 ]
def __eq__(self, other):
 return other == self.name

344 名前:342 mailto:sage [2008/06/28(土) 02:12:30 ]
>>343
ありがとうございます。出来ました。
__eq__を使えばよかったのですね。


345 名前:デフォルトの名無しさん [2008/06/28(土) 03:55:06 ]
起動に時間のかかる cmd をパイプで何度も使用したいのだけど

pin, pout = os.popen2(cmd, 'r+')
pin.write(hoge)
pin.flush()

pin.flush() ではパイプは開始されず、
pin.close() ではパイプは通るものの、次回 cmd を再起動しないといけない。
os.fsync() とか python -u とか試したけど変化なしでした。

つまり cmd を一度起動したらそのまま保持したいのです。

ruby は IO.popen で sysnc = true にすると flush() で
パイプを使いまわせるっぽいけど、
python は何か別のやり方があるのだろうか。



346 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 05:21:44 ]
>>343-344
結果はそうだけど
なんか間違ってるよ君ら

347 名前:デフォルトの名無しさん [2008/06/28(土) 05:59:51 ]
pin, pout = popen2.popen3(cmd)
pin.write(hoge)
pin.flush()

348 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 06:15:41 ]
コマンドライン引数で,

python -uとするか,

PYTHONUNBUFFERED=x python

349 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 06:20:12 ]
316 :デフォルトの名無しさん:2007/12/18(火) 08:15:43
xinetdにサービスを登録しようと思い以下のようなスクリプトを書きました。
サーバに送信した文を[]で囲んで返すというものです。が、なぜかクライアントのrecvで受信待ちになってしまいます。
クライアントの通信先をechoに変えたところ、recvは正常に受信し、文字はちゃんと表示されました。
またサーバのsyslogには、正しくprint [hogeron]と記録されています。
現象から見ると、どうもサーバのprintで、ちゃんと送信されていないっぽいです。
os.environ['PYTHONUNBUFFERED'] = '1' で、バッファしないように設定しているのですが…
どうすれば正常に動かせますか?
317 :デフォルトの名無しさん:2007/12/18(火) 08:16:24
【サーバ】 --
import os,sys,syslog
os.environ['PYTHONUNBUFFERED'] = '1'
line = sys.stdin.readline()
if line.endswith('\n'):line = line[:-1]
result = '['+line+']'
print result
syslog.syslog('print '+result)
-- 【クライアント】 --
import socket
host = 'localhost'
port =6363
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((host,port))
s.send('hogeron')
str = s.recv(1024)
print str
s.close()

350 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 07:38:26 ]
>>339
listの先頭に*つけるのってどういう意味なの?
調べても出てこなかった



351 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 08:05:32 ]
俺はパイソン。
俺もお前も。

352 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 08:08:00 ]
>>350
関数の引数に、リストの要素をばらして入れたいときに使う。

hoge = [a, b, c]
をつかって、関数に
f(a, b, c)
と入れたいときに、
f(*hoge)
とする。


353 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 08:30:21 ]
>>350
ほい。
www.python.jp/doc/release/tut/node6.html#SECTION006740000000000000000
docs.python.org/tut/node6.html#SECTION006740000000000000000

354 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 08:37:41 ]
書き方は一通りというPythonの原則を崩す機能ですな

355 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 09:24:03 ]
>>353
これってtupleしか受け付けないかと思ってたらイテレータなら何でも大丈夫っぽいな

356 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 09:33:15 ]
その書き方初めて知った

357 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 10:16:39 ]
>>333
>>> mesh_array = [ [(0,0),(0,1),(0,2)], [(1,0),(1,1),(1,2)] ]
>>> mesh_array = [ [(0,0),(0,1)], [(1,0),(1,1)] ]
>>> def f(x,y): return x+y
...
>>> [[f(p[0],p[1]) for p in low] for low in mesh_array]
[[0, 1], [1, 2]]

座標の値はタプルにしたほうが見易いかも
[ [LOW1], [LOW2], ...]で隣り合う点同士の距離は求めれそうだけど

[[C [C 
 O O
 L L
 U U
 M M
 1], 2], ...] 縦方向に走査するのは『転置』しないとめどいような希ガス(間違ってたらスマソ)

358 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 10:31:26 ]
>>> apply(zip, [(1,2),(3,4)])
[(1, 3), (2, 4)]
>>> apply(zip, [(1,2,3),(4,5,6)])
[(1, 4), (2, 5), (3, 6)]

>>> apply(zip, [(1,2),(3,4),(5,6)])
[(1, 3, 5), (2, 4, 6)]
>>> apply(zip, [(1,3,5),(2,4,6)])
[(1, 2), (3, 4), (5, 6)]

>>> zip([(1,3,5),(2,4,6)])
[((1, 3, 5),), ((2, 4, 6),)]

なんか、最後のapply経由の結果が違うのな…(転置のつくりかた)

359 名前:358 mailto:sage [2008/06/28(土) 10:45:06 ]
てか当たり前ぽ
py3k だと apply がobsoluteで使えなくなっとる…

360 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 10:56:18 ]
>>> def apply(func,*args): return func.__call__(*args) # これだと駄目みたい…
...
>>> for e in apply(zip, [(1,2),(3,4)]):
... print(e)
...
((1, 2),)
((3, 4),)
>>> apply(zip, [(1,2),(3,4)])
<zip object at 0x01582648>

py3k で廃止されたapplyを復活させるにはどうしたら
良いですか。



361 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 11:23:46 ]
>>> zip([(1,3,5),(2,4,6)])
[((1, 3, 5),), ((2, 4, 6),)]
>>>
>>> zip((1,3,5),(2,4,6))
[(1, 2), (3, 4), (5, 6)]
>>>
>>> (1,3,5),(2,4,6) # tuple list
((1, 3, 5), (2, 4, 6))
>>>
>>> zip(*tlist)

zip関数は、タプルのリストを渡さないと思ったとおり動かないのね

>>> apply(zip, [(1,3,5),(2,4,6)])
[(1, 2), (3, 4), (5, 6)]
リストから *tlist を取り出してzipを作用させてると…

362 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 11:24:42 ]
>>360
>>> my_apply = lambda f, args: f(*args)
...
>>> my_apply(zip, ((1,2),(3,4)))
[(1, 3), (2, 4)]

363 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 11:27:21 ]
>>> def apply(func, args): return func(*args)
...
>>> for e in apply(zip, [(1,2),(3,4)]):
... print e
...
(1, 3)
(2, 4)

いや、最初から zip(*[(1,2), (3,4)])やろうぜ。

364 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 11:34:24 ]
>>> for e in zip((1,2),(3,4)):
... print(e)
...
(1, 3)
(2, 4)
>>> for e in zip(tuple([(1,2),(3,4)])):
... print(e)
...
((1, 2),)
((3, 4),)

>>> (1,2),(3,4)
((1, 2), (3, 4))
>>> tuple([(1,2),(3,4)])
((1, 2), (3, 4))

zipにリストでデータ渡せないのはどうしてなんだろう…orz

365 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 11:43:47 ]
引数として一個のリストのリストを渡されたのと複数個のリストを渡されたのを
同一視されたら困るだろ

一体何を悩んでいるのかさっぱり分からん

366 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 11:45:06 ]
>>363
dくす

>>> for e in zip(tuple([(1,2),(3,4)])): print(e)
...
((1, 2),)
((3, 4),)
>>> for e in zip(*([(1,2),(3,4)])): print(e)
...
(1, 3)
(2, 4)

zip関数というか関数に、『リスト』渡すなら *でキャストして
『引数フォーマット』にしてから渡すよろし、いうことなのね…

引数フォーマットは (1,2),(3,4) != ((1,2),(3,4)) == tuple([(1,2),(3,4)]) と。

367 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 11:51:00 ]
>>365
>>> (1,2),(3,4)
((1, 2), (3, 4))
>>> tuple([(1,2),(3,4)])
((1, 2), (3, 4))

インタラクティブシェル上の出力が同値だから、
引数フォーマット == (tuple,tuple)の形式かと思ったんよ。

引数フォーマット == tuple,tuple # 括弧なしが正しい引数の形式
入門書嫁乙…orz

368 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 12:08:10 ]
>>> あ=(0,1);け=(0,2);ま=(0,3);し=(0,4);て=(0,5) # LOW1
>>> お=(1,1);め=(1,2);で=(1,3);と=(1,4);う=(1,5) # LOW2

>>> mesh_array = [(あ,け),(お,め)]

#ラベルを貼った各点を転置して、加工して出力する
>>> for e in zip(*[(あ,け),(お,め)]): print(e)
...
((0, 1), (1, 1))
((0, 2), (1, 2))
>>>
>>> for e in zip(*[(あ,け,ま,し,て),(お,め,で,と,う)]): print(e)
...
((0, 1), (1, 1))
((0, 2), (1, 2))
((0, 3), (1, 3))
((0, 4), (1, 4))
((0, 5), (1, 5))

369 名前:デフォルトの名無しさん [2008/06/28(土) 19:46:02 ]
パッケージ名としてハイフンを入れた名前を使うことはできないのでしょうか?
www.python.org/doc/essays/packages.html
いままで HogeHoge という名前のパッケージを作っていて,
これを hoge-hoge に変更したいのですが,ダメ?

370 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 20:00:51 ]
だめ。識別子に使うとマイナスと区別つかないから



371 名前:デフォルトの名無しさん [2008/06/28(土) 20:19:30 ]
>>370
なるほど,そうか.
言われてみればそうだよな.
ディレクトリ名がそのまま識別子になるわけだから.
名前空間とかパッケージ周りはどうも C++ から来ると
自由に付けられないのが不便に思えるけど,
その制約が逆にあとから見た時には分かりやすく思えるんだろうな.

372 名前:デフォルトの名無しさん [2008/06/28(土) 23:27:19 ]
simplejson 1.9.1 を MingW32 でコンパイルした.
本当のファイル名は simplejson-1.9.1.win32-py2.5.exe だけど
アプロダに上げたらこんなファイル名になっちゃった.
www.rupan.net/uploader/download/1214663156.exe

373 名前:デフォルトの名無しさん [2008/06/28(土) 23:40:54 ]
2.6 からは simplejson が標準ライブラリに入るのかな?
3.0 からは入るようだけど.

374 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 23:46:33 ]
2.6から
docs.python.org/dev/library/json.html

375 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 23:53:58 ]
>>373
www.python.org/download/releases/2.6/NEWS.txt
Library
-------
- The audiodev module has been deprecated for removal in Python 3.0.

- Issue #2750: Add the 'json' package. Based on simplejson 1.9 and
contributed by Bob Ippolito.

- Issue #1734346: Support Unicode file names for zipfiles.

- Issue #2581: distutils: Vista UAC/elevation support for
bdist_wininst.

- Issue #2635: Fix bug in 'fix_sentence_endings' textwrap.fill option,
where an extra space was added after a word containing (but not
ending in) '.', '!' or '?'.

入ってるみたい

376 名前:デフォルトの名無しさん [2008/06/28(土) 23:55:44 ]
2.6 からか.手間が省けるな.
W3C では JSON DOM binding も標準化されているようだし,
セキュリティの面でちょっと不安もあるけど jsonp 便利だし,
個人的には RSS つーかフィードも JSON でフィードしてくれって感じだ.
そのうち RDF のトリプルもJSON表現の標準が出るかもなぁ.

377 名前:デフォルトの名無しさん [2008/06/29(日) 00:13:28 ]
デバッグ時にヒープのフットプリント(?)を調べようと思って
gc.getobjects() を使ったらできるかなと思ったんだけど,
そもそもオブジェクトのサイズってどうやって求めるんだっけ?
文字とか整数とか実数などの基本型のサイズと参照に必要な
サイズがわかればいいのか?

378 名前:デフォルトの名無しさん [2008/06/29(日) 08:00:40 ]
svk によるレポジトリ分割の作業記録
d.hatena.ne.jp/dayflower/20071211/1197273839

いままで svndumpfilter, svndumpfilter2, svndumpfilter3, svndumpfilter4
とか使ってうまく行ったり行かなかったりしたが,結局 svk でうまくいった.
本来の使い方とは全然違うところでお役立ち.ありがとう,svk

svk って perl で書かれてるんだね.

379 名前:デフォルトの名無しさん [2008/06/30(月) 05:02:57 ]
Tkinter ではプログラムの最後にウィジェットの
mainloop() を呼び出して放置します。
表示されたウィンドウをマウスでクローズすればプログラムは終了しますが、
そうではなくて自発的にウィンドウをクローズしてプログラムを
終了させる方法は無いでしょうか?

別スレッドから何かをすればいいのでしょうか?

380 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 08:03:05 ]
sys.exit() すれば?



381 名前:デフォルトの名無しさん [2008/06/30(月) 11:01:22 ]
おおヴ
たとえば複数のウィンドウ作ってそれぞれmainloopしてるとき
個別にmainloopから抜けるのは無理ですか?


382 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 15:50:51 ]
イベントコールバックでそのwindow.destroy()かな。
なんか、うちではmainloop呼ばなくてもウィジェットは全て問題なく動いてるように見えるけど。

383 名前:デフォルトの名無しさん [2008/06/30(月) 16:11:41 ]
Python ってディープコピーのための仕組みって特に
決められていませんよね?特定のメソッドを実装して
おけば簡単にディープコピーされるとか、そういうの。

クラス毎に hoge.clone() とか作らないとだめ?

384 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 16:26:19 ]
copy.deepcopy, __deepcopy__

385 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 17:40:34 ]
>>383
copy.copy()とかcopy.deepcopy()とか試してみ

386 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 19:05:09 ]
urlからファイル名を取得する方法って楽な方法はありますか?
正規表現使ったり、split使うしか無いんでしょうか?

例えば、↓から
www.python.jp/doc/release/icons/next.png

next.pngだけを取得したいです。

387 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 19:16:54 ]
rfind('/')でもすればいいかと。

388 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 19:23:35 ]
ファイル名の定義が不可能なので厳密には無理。

389 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 19:26:11 ]
>>387
なるほど。以下のやり方でいい感じに動きました。ありがとうご
ざいます。

url[url.rfind('/')+1:]

>>388
今回のケースでは確実にファイル名で終わるようなURLたちを扱
うのでrfind使った方法でやってみようと思います。ありがとう
ございました。

390 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 19:30:19 ]
まずurlparse使ってURLを分解したほうが楽だよ!

ttp://www.python.jp/doc/nightly/lib/module-urlparse.html



391 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 00:43:57 ]
threading が本当にスレッド機能を提供しているかどうかをプログラムの中か
ら知るにはどうしたらいいですか?


392 名前:デフォルトの名無しさん [2008/07/01(火) 08:41:46 ]
Eclipse の PyDev で補完が効く条件って何?
たとえば *.pyd で提供されているような識別子は
PyDev は知りようが無いから候補にも挙がらない?

393 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 08:58:21 ]
pc11.2ch.net/test/read.cgi/tech/1211505494

394 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 09:12:00 ]
>>392
#include <Python.h> //--- Python API ヘッダの指定
// Python.h には既に stdio.h string.h errno.h stdlib.h のインクルード指定が含まれています

// メソッドの実体
static PyObject* exec_do(PyObject* self, PyObject* args)
{
const char* command ; //--- command は PyArg_ParseTuple によって alloc される
int status ;

if (!PyArg_ParseTuple(args, "s", &command))
return NULL ;
status = system(command) ;

return Py_BuildValue("i", status) ;
}

// メソッドテーブル
// メソッド名 / 関数へのポインタ / 呼び出し規則 / 説明書き(何を書いても良い)
// python の help から参照することができます。
static PyMethodDef executerMethods [] = {
{ "do", exec_do, METH_VARARGS, "Execute command for Command-prompt in Windows." },
{ NULL, NULL, 0, NULL }
};

// モジュールの初期化関数 (Python にモジュール名とメソッドテーブルを渡します)
PyMODINIT_FUNC initexecuter(void) // 初期化モジュール名は init + "DLL 名" にする必要があります。
{
Py_InitModule("executer", executerMethods) ; // モジュール名は DLL 名と同じにする必要があります。
}

dll -> pyd(2.5で変更) だからPython C APIで拡張を書いてあげればpython側で認識してくれると思われ

395 名前:391 mailto:sage [2008/07/01(火) 09:16:52 ]
C:\mercurial-0.9.5>python
Python 2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import executer
>>> dir()
['__builtins__', '__doc__', '__name__', 'executer']
>>> from executer import *
>>> dir()
['__builtins__', '__doc__', '__name__', 'do', 'executer']
>>> do('dir')
ドライブ C のボリューム ラベルは MEB_V7370T です
ボリューム シリアル番号は D80C-D8DF です

C:\mercurial-0.9.5 のディレクトリ

2007/12/11 05:38 <DIR> .
2007/12/11 05:38 <DIR> ..
2007/10/20 08:25 312 .hgignore
2007/10/20 08:25 660 .hgsigs
2007/10/20 08:25 782 .hgtags

>>391 の実行結果。import して dir() して読めるなら補完対象になってるはず。
PyDev使ったこと無いから間違ってたらスマソ

396 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 09:18:44 ]
>>392
× 391
○ 394

>>394 と間違えた…orz

397 名前:392 [2008/07/01(火) 09:26:03 ]
どうやら「Forced builtin libs」あたりがキモらしい。

>>394
うん、それはそうなんだけど、それって実行時にしか
わからないことなんだよね。そうやって作られた
識別子はソース書いているときに補完に使えない。

398 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 10:14:22 ]
>>397
pydev.sourceforge.net/faq.html#what_is_that_forced_builtin_libs_in_the_python_i
FAQにも書いてあるけど、多分そのForced builtin libsで指定されたライブラリは裏側で
実行していて、そのデータから補完している
sysやosなんかはそうみたい
そして実体としてのモジュールが無い__builtin__とかもそれで情報を取っている感じだ
それ以外のモジュールはソースコードの静的解析なのかな?

399 名前:392 [2008/07/01(火) 10:46:30 ]
>>398
Pure Python なモジュールというかパッケージな,
ソースコードの静的解析とのことです.
どこで呼んだ情報だったのか忘れちゃったけど.


400 名前:392 [2008/07/01(火) 10:57:55 ]
というわけで networkx パッケージに含まれる識別子の
PyDev による自動補完ができるようになりました.
こういう芸当ができるのは静的に型付けされてないからなんだろうなぁ.
型情報まで解析しようと思ったらめちゃくちゃ大変そうだし.



401 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 11:32:58 ]
www.fabioz.com/pydev/manual_101_interpreter.html
>How to check if the information was correctly gotten:
>
>Make sure that you have lots of 'Forced builtin libs' and some 'System libs'.
>
>The Forced builtin libs are the libraries that are built-in the interpreter,
>such as __builtin__, sha, etc. For python, you should have about 50 libs and
>for jython about 30 libs.

>Additionally, you may add other libraries that you want to treat as builtins,
>such as os, wxPython, OpenGL, cStringIO, etc.

>This is very important, because Pydev works on the java side only with static information,
>but some modules don't have much information when analyzed statically, so, Pydev
>creates a shell to get information on those.

>Another important thing is that they must be on your system pythonpath
>(otherwise, the shell will be unable to get that information).

shell だとそういった情報を得ることが出来ないだろう、いう最後のとこが
よくわからんけど、相互補完関係みたいになってるのね…。

wxPythonとか設定登録するの面倒そう、なんて落ちがあったりするのかな?
簡単そげなら乗り換えたいかも > PyDev

402 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 15:21:21 ]
>>401
ん?
PYTHONPATHに指定してくれないと探せない、って当たり前のことを書いているだけじゃね?

403 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 15:28:15 ]
>>401
シェル起動して情報得るのに、PYTHONPATHになかったら探せんだろうって
ただそれだけの意味だと思うが。

404 名前:401 mailto:sage [2008/07/01(火) 17:00:00 ]
This is very important, 〜. Another important thing, 〜.
みたいに平行して続いててたから、何か重要こと言ってる
んかと思った… ちゅうかもっと英語嫁じぶん…orz

405 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 19:29:23 ]
英語のできないひとはRubyをやればいいとおもうよ。

406 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 22:08:00 ]
def iter_walk(elem):
    yield elem
    for child in elem:
        for x in iter_walk(child):
            yield x

def flatten(elem, lst):
    lst.append(elem)
    for child in elem:
        flatten(child, lst)

上のように書くよりも下のほうがずっと速いんだけど、
これはもうどうしようもないのかな。
generator使ってツリーのトラバーサルってどうやるんだろ。

407 名前:406 mailto:sage [2008/07/01(火) 22:25:18 ]
すんません
気のせいでした

python -m profileとかでプロファイルとると、generator使ってると
もの凄く遅いことになるみたいだ
普通に実行したら別に遅くなかったです

408 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 22:52:32 ]
Pythonは、Rubyよりゆるい感じがいい

409 名前:デフォルトの名無しさん [2008/07/02(水) 01:20:46 ]
一個も要素を返さないジェネレータって、

def gen():
 raise StopIteration

てやってもだめだよね

def gen():
 raise StopIteration
 yield

って冗長なyield いれないとだめなのかしらん

410 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 01:23:57 ]
たんに
gen = iter(())
とかではだめなの?



411 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 02:08:05 ]
def gen():
if 0: yield

412 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 02:40:50 ]
Python2#.dll だけを添付してスクリプトを配りたい場合
(いろいろな意味での単純化のため、標準ライブラリをいっさい使わずに組み込みライブラリのみで対処する)
って、ソース読み込むときのエンコーディング関係はどうなるの?

どうもあのへんの処理系統がよくわからないんだけど、ソースの字句解析の時点で
#coding: hogeとあったら
ライブラリの hogeコーデックを見に行くよね??多分。

ライブラリがないと構文木つくれないの? なんかすごく仕組みが不思議なんだ
じゃあライブラリ自身をインポートするときはどーなってるの?
ライブラリ(のコーデック関係部分)は自分を字句解析してほしいけど、字句解析するためにはライブラリが必要???



413 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 08:46:52 ]
>>412
www.pycs.net/users/0000323/stories/14.html
www.python.org/dev/peps/pep-0263/
bugs.python.org/issue534304

解説記事 -> PEP -> Issue tracker ですね。わかります

414 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 23:42:17 ]
>>> id(1)
10507600
>>> id(2)
10507588
>>> id(3)
10507576

なのに

>>> id(0.1)
11908136
>>> id(0.2)
11908136
>>> id(0.3)
11908136

となる。なんでかワガンネ

415 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 00:10:53 ]
intの方は他に参照されてて破壊されないで (インデックスとかでよく使いそうだし)
floatの方は破壊されてすぐ同じ場所が再利用されてるんじゃない?

416 名前:415 mailto:sage [2008/07/05(土) 00:18:50 ]
intobject.cみてみたら-5〜256までは予め作っておいているみたい

417 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 00:52:52 ]
Python2.5.2 (Win)
>>> id(1)
11163352
>>> id(2)
11163340
>>> id(3)
11163328
>>> id(0.1)
14145448
>>> id(0.2)
14145432
>>> id(0.3)
14145464

Python2.5.1 (Linux)
>>> id(1)
135925560
>>> id(2)
135925548
>>> id(3)
135925536
>>> id(0.1)
136126516
>>> id(0.2)
136126516
>>> id(0.3)
136126516


418 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 05:06:22 ]
tkとwxPythonってどっちがいいですか?

419 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 06:53:29 ]
環境によって違うのかー。恐ろしいな

420 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 08:06:32 ]
>>419
何も恐ろしいところなんてないと思うが



421 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 08:31:07 ]
419の方が恐ろしいだろJK

422 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 09:03:18 ]
許してやってくれ。
419はゆとり教育の被害者に過ぎない。

423 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 10:06:31 ]
>>> for i in range(-10, 270): print eval('%d, id(%d)' %(i, i)),
...
(-10, 8702864) (-9, 8702864) (-8, 8702864) (-7, 8702864) (-6, 8702864) (-5, 8402384) (-4, 8402372) (-3, 8402360)
(-2, 8402348) (-1, 8402336) (0, 8402324) (1, 8402312) (2, 8402300) (3, 8402288) (4, 8402276) (5, 8402264) (6, 8402252)
(7, 8402240) (8, 8402228) (9, 8402216) (10, 8402204)
...
(245, 8405408) (246, 8405396) (247, 8405384) (248, 8405372) (249, 8405360) (250, 8405348) (251, 8405336) (252, 8405324)
(253, 8405312) (254, 8405300) (255, 8405288) (256, 8405276) (257, 8702864) (258, 8702864) (259, 8702864) (260, 8702864)
(261, 8702864) (262, 8702864) (263, 8702864) (264, 8702864) (265, 8702864) (266, 8702864) (267, 8702864) (268, 8702864)
(269, 8702864)
>>>


424 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 10:16:37 ]
d={}; n=[d.update({id(x):x}) for x in range(-10, 270)]; sorted(d.items(), lambda x, y:cmp(x[1], y[1]))

これだと違う結果が出る。理由は知ってるけど書かない。

425 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 11:07:35 ]
GCに回収させてるやつって何なの?馬鹿なの?死ぬの?

426 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 11:11:30 ]
>>> int(1.5)
1
>>> float(1.5)
1.5
>>> float('1.5')
1.5
>>> int('1.5')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '1.5'
>>>

なんでこうなっちゃうんでしょ?


427 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 11:14:31 ]
>>> int(float('1.5'))
1

428 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 12:52:58 ]
数値型 <-> 文字列型 <-> 数値型
A <-> JSon <-> B

d.hatena.ne.jp/rubikitch/20080502/tap
ary = [1, 2, 3, 4]
ary.map{|x| x**2}.tap{|a| p a}.select {|x| x>10 } # => [16]
# >> [1, 4, 9, 16]

わたしこけた青アザできた
# >> こけてる過程をストップモーションで出力(修飾表現)

『こけた』の部分を、整理して表示すると
何が起こってるのかわかりやすくなる…

型変換<文字列:数値>をTrace出力付きのForthみたいなかんじで
出力するには、python だとどう描けばよいですか?

429 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 12:54:27 ]
日本語でおk。

430 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 13:14:47 ]
日本語? いいえ、Pythonです。



431 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 13:18:51 ]
>>> L=[1,2,3]
>>> map(str, L) #=>['1', '2', '3']
>>> L=[1,1.2,2,3]
>>> map(str, L) #=>['1', '1.2', '2', '3']

型変換<数値:文字列>は問題なし

>>> strL=['1','2','3']
>>> map(int, strL) #=>[1, 2, 3]
>>> strL=['1','1.2','2','3']
>>> map(int, strL)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '1.2'

型変換<文字列:数値>でこける
types とかインポートしてやらないと無理なのかな?






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

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

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