Pythonのお勉強 Part ..
[2ch|▼Menu]
2:デフォルトの名無しさん
08/06/13 04:24:16
2

3:デフォルトの名無しさん
08/06/13 04:32:26
>>3
スレ建て乙

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

URLリンク(www.amazon.co.jp)

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

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

6:デフォルトの名無しさん
08/06/13 10:18:32
>1 乙py

7:デフォルトの名無しさん
08/06/13 12:24:56
関連スレッドに加えておいた方がよさそう
くだすれPython(超初心者用)
スレリンク(tech板)
【pygame】pythonでゲーム製作【ぱいがめ】
スレリンク(gamedev板)

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

9:デフォルトの名無しさん
08/06/14 00:00:49
はやくpygameの和訳作業やれどんけつども

10:デフォルトの名無しさん
08/06/14 00:01:51
イケメンハッカーが温泉で自己翻訳しましたアッー!

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



12:デフォルトの名無しさん
08/06/14 05:01:44
前スレの>>994

英語を日本語にする事を考えたときは英々辞書引いたほうがいい。
たとえば↓みたいな。
URLリンク(dictionary.reference.com)

で、↑にもあるように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:デフォルトの名無しさん
08/06/14 05:37:08
>>12
英語で覚えるのが理想だよね

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

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

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

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

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

お好きなほうで

18:デフォルトの名無しさん
08/06/14 09:21:52
>>17
Python3なので、uとdecodeは無いみたいです。

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

20:デフォルトの名無しさん
08/06/14 10:44:06
どういう意図があって、3.0αなんてつかっているの?

21:デフォルトの名無しさん
08/06/14 10:45:06
きっと大きい数字の方がいいと思ったのだろうよ・・・

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

23:デフォルトの名無しさん
08/06/14 10:49:14
>>18
このスレでPython3を使っているのは、たぶん君だけだw

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

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

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

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

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

28:デフォルトの名無しさん
08/06/14 12:05:43
釣りとしか思えない件

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

とりあえず、それっぽいのを見つけてきた。
URLリンク(mail.python.org)
URLリンク(mail.python.org)

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

31:デフォルトの名無しさん
08/06/14 12:54:09
sys.stdout._encoding = 'utf-8'でもいいみたいですね。

32:デフォルトの名無しさん
08/06/14 12:57:16
>>25
>初めてのPythonを読みつつ

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

33:デフォルトの名無しさん
08/06/14 13:59:36
ハマらないだろ

34:デフォルトの名無しさん
08/06/14 14:07:19
>>33
はまらないのは工作員だけだよ(www

35:デフォルトの名無しさん
08/06/14 14:07:55
Index of /pipermail
URLリンク(mail.python.org)

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

36:デフォルトの名無しさん
08/06/14 14:08:15
中途半端に書いてない分だけハマらんな

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

38:デフォルトの名無しさん
08/06/14 14:16:56
ネットで補完すればいいだけだし

39:デフォルトの名無しさん
08/06/14 14:23:25
信者には書いてないものまで見えてしまうんですね、分かります

40:デフォルトの名無しさん
08/06/14 14:32:44
粘着している割に煽りのレベルが上がらんな

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

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

43:デフォルトの名無しさん
08/06/14 15:47:08
初めてのPythonいいか?ダルクね?

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



44:デフォルトの名無しさん
08/06/14 16:19:05
訳: 恥パイよりパイチューがいいよね!

45:デフォルトの名無しさん
08/06/14 19:18:49
チュートリアルはネットでタダで読めるのがいいよね!

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

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

48:デフォルトの名無しさん
08/06/14 21:48:59
>>43
どっちも売れてないから安心しろ

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

50:デフォルトの名無しさん
08/06/14 21:59:35
そこでみんPyですよ

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

52:デフォルトの名無しさん
08/06/14 22:30:52
そうだね、プロテインだね。

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

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

55:デフォルトの名無しさん
08/06/14 23:02:30
そこで「はじめてのPython」ですよ

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

57:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/06/14 23:49:25
>>57
どこがどうおもしろいの?

59:デフォルトの名無しさん
08/06/15 00:02:53
Jythonプログラミング 63,943位

60:デフォルトの名無しさん
08/06/15 00:04:28
みんなのPython Webアプリ編 82,077位

61:デフォルトの名無しさん
08/06/15 00:11:31
はじめてのPythonネットワークプログラミング 166,030位

62:デフォルトの名無しさん
08/06/15 00:34:59
Python クックブック 第2版 149,610位

63:デフォルトの名無しさん
08/06/15 00:40:14
>>57
みんPyははじPyの10倍売れてるってことか
すごいな

64:デフォルトの名無しさん
08/06/15 01:02:26
1位の本は2位の本より2倍売れてることになるのか
すごいな

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

66:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/06/15 03:53:56
>>66
出来れば出版社著者出版年金額も

68:デフォルトの名無しさん
08/06/15 04:13:31
>>66
はじめてのpythonって新しいのがでてたのかよwwww

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


70:デフォルトの名無しさん
08/06/15 09:09:12
>>65
ほかにどうすりゃいいんだよw

71:デフォルトの名無しさん
08/06/15 09:09:25
Jython本は一番新しいし、
古いことが載っている本を避けたいひとにはおすすめだと思う
URLリンク(www.amazon.co.jp)

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

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


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

75:デフォルトの名無しさん
08/06/15 09:30:41
Django の日本語本出るみたい
URLリンク(www.cbook24.com)


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

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

78:デフォルトの名無しさん
08/06/15 09:40:23
イケメンハッカーが自己発電しました。

79:デフォルトの名無しさん
08/06/15 09:55:28
みんなのPythonも十分ダルイと思う。一応は買った。

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

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

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

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

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

URLリンク(www.amazon.co.jp)


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

82:デフォルトの名無しさん
08/06/15 10:37:47
おまえらが反応するからだ

83:デフォルトの名無しさん
08/06/15 10:39:16
81こそ工作員だろJK

84:デフォルトの名無しさん
08/06/15 10:42:10
都合が悪くなるとコロコロと言うことを換えるのが工作員の特徴

85:デフォルトの名無しさん
08/06/15 13:30:48
都合が良くても言うことは代わる

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

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

88:デフォルトの名無しさん
08/06/15 16:31:21
そういうことにしたいのですね。

89:デフォルトの名無しさん
08/06/15 17:52:38
見えない敵と戦ってるんだよ

90:デフォルトの名無しさん
08/06/15 18:22:28
工作員って、メメントのジョン・Gみたいなもんでしょ。

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

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

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

92:デフォルトの名無しさん
08/06/15 20:35:28
>>91
NameErrorやAttributeErrorを処理するんじゃ駄目なの?

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


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

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

95:デフォルトの名無しさん
08/06/15 21:20:16
これかな
URLリンク(aspn.activestate.com)

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


657 名前:デフォルトの名無しさん[] 投稿日:2008/06/15(日) 20:24:59
Jythonのアプレットでexecが使いたい件
URLリンク(www.jython.org)
↑証明書つければ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:デフォルトの名無しさん
08/06/15 21:33:00
Jythonスレでも立てたら?

過疎るだろうけど。

98:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/06/15 21:52:46
B()はともかく
foo.bar なら __getattr__ でいけそうな気がするが


100:デフォルトの名無しさん
08/06/15 23:03:36
100

101:デフォルトの名無しさん
08/06/15 23:10:37
101

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


103:102
08/06/15 23:31:23
いや、「unsigned applets では・・・」だな。
ごめん、忘れておくれ。

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

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


105:デフォルトの名無しさん
08/06/16 11:48:00
どっちも推測の域を出てないけどな

106:職場にそういってたのが二人いるんだよね
08/06/16 12:32:40
>8
お主、俺の同僚だったりしないだろうな?

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

108:デフォルトの名無しさん
08/06/16 13:21:23
>>107
そうだね、君には神の声が聞こえるよね。

109:デフォルトの名無しさん
08/06/16 13:27:21
Pythonで学ぶソフトウェア作法の新しいやつでないかな。

110:デフォルトの名無しさん
08/06/16 13:29:37
出るよ。
にちゃんねるがソースの情報だけど。

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

112:デフォルトの名無しさん
08/06/16 13:38:00
class A:
  B = 1

a = A()
a.B

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

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

114:デフォルトの名無しさん
08/06/16 13:49:31
2chしか情報源がないなんてかわいそうだね.

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

116:デフォルトの名無しさん
08/06/16 13:58:22


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

118:117
08/06/16 14:03:42
>>112
プロパティ使わなくても、objectから継承すれば__getattribute__でフック出来たわ

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

120:デフォルトの名無しさん
08/06/16 14:36:45
pass

121:デフォルトの名無しさん
08/06/16 14:53:54
None

122:デフォルトの名無しさん
08/06/16 15:14:35
God

123:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/06/16 17:22:40
>>117-118
ありがとうございます。
objectの継承と、__getattribute__使ってみました

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

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

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

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

125:デフォルトの名無しさん
08/06/16 18:03:08
つ __metaclass__

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

127:デフォルトの名無しさん
08/06/16 22:06:15
そういうことは西○さんにまかせとけ

128:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/06/17 01:23:36
__sub__
__neg__



130:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/06/17 02:26:12
>>130
いやね。(24-72) 弟がわからんいうとるのよ
どう筆算したらええねんとか -(72-24)ならわかるらしい(謎

132:131
08/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:デフォルトの名無しさん
08/06/17 02:38:13
繰り上がりは分かるけど繰り下がりがわからないんだろな

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

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

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


137:デフォルトの名無しさん
08/06/17 09:37:28
def odd(x=1): x+=2; yield x;

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


139:デフォルトの名無しさん
08/06/17 09:59:52
itertools.ifilter(lambda x: x % 2, itertools.count())

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

141:デフォルトの名無しさん
08/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

URLリンク(odz.sakura.ne.jp)

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

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

142:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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
08/06/17 10:59:02
まあreduce()は冗談
普通はjoinだよな常考

147:デフォルトの名無しさん
08/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
08/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:デフォルトの名無しさん
08/06/17 11:18:21
>>147
> なんか動作がわからない。なんで完成したリストが13回返されるかな…
yield r の開始位置を比べてみそ。

150:デフォルトの名無しさん
08/06/17 11:19:44
yield list(r)

151:デフォルトの名無しさん
08/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
08/06/17 11:36:36
あほだ…while抜け取るやん…orz

153:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/06/17 14:11:05
>>155
URLリンク(codepad.org)

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

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

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

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

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

158:デフォルトの名無しさん
08/06/17 15:18:52
>>144
入門書嫁。

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

160:デフォルトの名無しさん
08/06/17 23:50:40
pymacs-0.23です

161:デフォルトの名無しさん
08/06/18 10:31:56
Pythonってクールですね

162:デフォルトの名無しさん
08/06/18 10:51:12
Pythonってコールドですね

163:デフォルトの名無しさん
08/06/18 10:54:50
162だけがコールドですね。

164:デフォルトの名無しさん
08/06/18 11:02:53
僕のPythonもクールダウンしそうです

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


166:デフォルトの名無しさん
08/06/18 11:17:48
python 開発の歴史をビジュアル化したものだそうです

URLリンク(www.vimeo.com)

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

167:デフォルトの名無しさん
08/06/18 11:52:39
コミットを視覚化してるのか、面白いね

168:デフォルトの名無しさん
08/06/18 12:05:05
離れてってるのもあるのが微妙

169:デフォルトの名無しさん
08/06/18 12:07:16
この効果音あんまり好きじゃない

170:デフォルトの名無しさん
08/06/18 15:50:16
>>166
GJ

171:デフォルトの名無しさん
08/06/18 17:18:27
Batteries Inserted

172:デフォルトの名無しさん
08/06/18 18:08:23
話題に乗るのが2,3日遅くね?

173:デフォルトの名無しさん
08/06/18 18:17:45
電池挿入済みの哲学ですね。わかります

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

175:デフォルトの名無しさん
08/06/18 22:45:06
自己解決しました

176:デフォルトの名無しさん
08/06/18 23:40:43
自己挿入しました。

177:デフォルトの名無しさん
08/06/19 01:19:24
^ ~ ってなんの演算子?

178:デフォルトの名無しさん
08/06/19 01:32:38
>>177
URLリンク(www.python.jp)

179:デフォルトの名無しさん
08/06/20 01:42:07
URLリンク(d.hatena.ne.jp)

いい加減なんだってさ

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

181:デフォルトの名無しさん
08/06/20 02:08:27
変数名の面白さを比較するんですね わかります


182:デフォルトの名無しさん
08/06/20 03:25:22
>>179
内容は、揚げ足とるだけで終わっているね

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



184:デフォルトの名無しさん
08/06/20 09:33:29
うん

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

186:デフォルトの名無しさん
08/06/20 10:17:51
2.6b1 & 3.0b1 release age

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

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

188:デフォルトの名無しさん
08/06/20 11:58:10
>>186
っ2to3

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

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

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

191:デフォルトの名無しさん
08/06/20 13:48:34
関数名が大文字で始まるのはMicrosoftのAPIなんかがそうだな

192:デフォルトの名無しさん
08/06/20 13:55:28
wxPythonなんか使ってる場合もそうだな

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

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

194:デフォルトの名無しさん
08/06/20 15:59:15
なんのこと?

195:デフォルトの名無しさん
08/06/20 16:26:11
URLリンク(www.ibm.com)

196:デフォルトの名無しさん
08/06/20 16:36:19
3.0との接点がなさそうだが

197:デフォルトの名無しさん
08/06/20 22:05:53
for i in range(1, len(ss)):

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

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

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

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

200:190
08/06/21 02:07:49
URLリンク(rietveld.googlecode.com)

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

201:デフォルトの名無しさん
08/06/21 02:08:14
>>198
PEP 8 -- Style Guide for Python Code
URLリンク(www.python.org)
PEP 7 -- Style Guide for C Code
URLリンク(www.python.org)

202:デフォルトの名無しさん
08/06/21 06:55:30
pygletスゲーーーー
SDLいらねーーーー

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

204:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/06/21 09:37:11
CraftLaunchのように自作ソフトウェアのマクロとしてPythonを組み込みたいのですがどうすればよいのでしょうか?

207:デフォルトの名無しさん
08/06/21 09:44:30
>>206
URLリンク(www.python.jp)

208:デフォルトの名無しさん
08/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
08/06/21 13:34:01
最後の行を見てもらうとわかる通り、librariesで指定したライブラリを動的リンクしているのです。
これを静的リンクにするにはどのようにすれば良いのでしょう?
というか、setup.pyでGCCのオプションを設定するにはどのようにすれば良いのでしょうか?

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

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

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

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

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

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

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

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

216:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/06/21 21:41:13
つ exec

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

219:デフォルトの名無しさん
08/06/21 21:51:30
>>216
入門書嫁
そして式と文の違いを知れ


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

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

222:デフォルトの名無しさん
08/06/22 01:25:58
set と frozenset の違いって何?
list と tuple みたいなもん?

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

223:デフォルトの名無しさん
08/06/22 02:38:09
>>222
URLリンク(www.google.co.jp)

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

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

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

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

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

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

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

228:デフォルトの名無しさん
08/06/22 10:57:58
>>226
setの方が遅いからじゃない?

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

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

230:デフォルトの名無しさん
08/06/22 11:48:40
>>226
昔はsetがなかったからだろ

231:デフォルトの名無しさん
08/06/22 12:03:16
fooが辞書ならsetと同じですか

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

233:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/06/22 15:26:37
ある文字列 'saieunak' を並べ替えて出来る組み合わせを全て挙げるには?

236:デフォルトの名無しさん
08/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


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4712日前に更新/112 KB
担当:undef