1 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 16:59:28 ] Pythonオフィシャルサイト www.python.org/ 日本Pythonユーザ会 www.python.jp/Zope/ まとめWiki python.rdy.jp/ 関連スレ find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python 前スレ pc12.2ch.net/test/read.cgi/tech/1264924208/
492 名前:デフォルトの名無しさん mailto:sage [2010/04/09(金) 20:40:18 ] そもそも、いちいち意味論を完全にして書き込みなんかしない。
493 名前:デフォルトの名無しさん mailto:sage [2010/04/09(金) 21:01:28 ] sitecustomize.pyでググッたらわかりましたが、 これもIDLEでは反映されないです。
494 名前:デフォルトの名無しさん mailto:sage [2010/04/09(金) 21:06:45 ] idleを-sオプション付けて起動しなきゃ駄目じゃない?
495 名前:デフォルトの名無しさん mailto:sage [2010/04/09(金) 21:20:25 ] -sオプションをつけても反映されないです。 とりあえず、PyShell.pyでロードしているみたいなので、 PyShell.pyを読み解いてなんとかします。 どうもどうも。
496 名前:デフォルトの名無しさん mailto:sage [2010/04/09(金) 22:17:26 ] 自分で出来ゐなら質問しないで下さい。うざいだけです。
497 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 00:57:32 ] 出来い…?
498 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 01:00:42 ] 出来ゑ
499 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 09:48:52 ] 'はじめてのpython'に書いてあったことなんだけど res = [] for x in range(5): if x%2 == 0: for y in range(5): if y%2 == 1: res.append((x,y)) print res //(0, 1), (0, 3), (2, 1), (2, 3), (4, 1), (4, 3) をfilterとmap関数で表現したいのですが print map(lambda x:map(lambda y:(x,y), filter(lambda x:x%2==1, range(5))), filter(lambda x:x%2==0, range(5))) //[[(0, 1), (0, 3)], [(2, 1), (2, 3)], [(4, 1), (4, 3)]] てな感じで配列具合がうまいこと出来ません。 どうしたら良いのでしょう?
500 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 10:20:56 ] www.josw.net/blog/?p=987
501 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 10:51:45 ] reduce(lambda x, y: x + y, map(lambda x: map(lambda y: (x, y), range(1, 5, 2)), range(0, 5, 2)))
502 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 11:06:01 ] 非実用的な動的コードを書くのはやめて下さい。 even = filter(lambda x: x%2 == 0, range(5)) # 0-5の偶数をリストとして返します odd = filter(lambda x:x%2==1, range(5)) # 0-5の奇数をリストとして返します print map(lambda x:map(lambda y: (x, y), odd), even) # これを内包表記で表現すると原因が分かります。 [[(x, y) for y in odd] for x in even] # この場合は以下の通りに書き換えれば配列の具合が良くなります res = [] [[res.append((x, y)) for y in odd], for x in even] print res # 或いは res = [] map(lambda x:map(lambda y:res.append((x,y)), filter(lambda x:x%2==1, range(5))), filter(lambda x:x%2==0, range(5)))
503 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 11:13:00 ] print (lambda x,y,z: '%s, %s, %s'%((lambda x,y: '%s, %s'%(x,y))(*x),(lambda x,y: '%s, %s'%(x,y))(*y),(lambda x,y: '%s, %s'%(x,y))(*z)))(*map(lambda x:map(lambda y:(x,y), filter(lambda x:x%2==1, range(5))), filter(lambda x:x%2==0, range(5))))
504 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 11:16:39 ] わらた
505 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 11:17:20 ] >>502 こういうのは一行に拘るから意味があるのであって 二行以上でいいなら出来るのは当たり前で楽しくない ↓以下一行野郎うぜーのレス
506 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 11:18:17 ] どうみても、役には立たないな。 理論とは適当に折り合いをつけてプログラムしろぐらいの意味しかないだろ。
507 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 11:27:45 ] >>505 499の質問にはそういった事は書いて居ないと言うことは 君には協調性も知性もないということだな。 そして君はここから出ていくべきだ。
508 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 11:32:47 ] 1行にまとめる場合はlambdaを使う必要はないし、むしろ使うのはタブーだ 499ならまだしも、505はPython道を理解できてないし、それかただのperl流れの初心者であると推測できる
509 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 11:49:15 ] >>499 ようは、mapをネストするとリストのリストになってしまうわけだ。 >>501 のようにreduce使えばリストに戻せるが、mapとfilterでそれをする方法は少なくとも俺は知らない。 mapのネストをしないように気をつけて書いてみたら、こういう風になった(もっといい方法求む) つまり5進数で考えて、10(5)の位をx、1の位をyに置いた。 map(lambda x:(x//5, x%5), filter(lambda x: (x//5)%2 == 0 and (x%5)%2 == 1, range(5*5))) ただ、pythonではmap使うくらいなら内包表記をすることが推奨されている。 それだと、回りくどい方法を考えなくても素直にこう書ける。 [(x, y) for x in range(5) for y in range(5) if x%2 == 0 if y%2 == 1]
510 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 12:02:38 ] どう見ても内包表記向きの問題だが、それを使わないのなら flatmapを使うのが定石 Pythonにはないけど、 flatmap = lambda f, xs: sum(map(f, xs)), []) のように定義すればよい flatmapを使うと、以下のようになるよ flatmap( lambda x: map(lambda y: (x, y), filter(lambda x: x % 2 == 1, range(5))), filter(lambda x: x % 2 == 0, range(5)))
511 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 12:03:38 ] ああごめん flatmap = lambda f, xs: sum(map(f, xs), []) こうね
512 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 13:43:40 ] おまえらって文法で遊んでるだけじゃね?
513 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 13:46:58 ] 初心者に変なこと刷り込むわけでもないし別にいいじゃん
514 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 13:47:26 ] 失せろクズ
515 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 14:07:03 ] >>512 Lispスレで言ってこい。
516 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 14:11:28 ] >>512 おい ム板の核心を突くのはよせ
517 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 14:16:39 ] >503
518 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 14:37:53 ] >>512 それ以外にプログラミングやる意味あるの?
519 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 14:40:44 ] よくわかんないけど、流れで >>512
520 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 14:43:47 ] whenever you use python
521 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 21:26:06 ] csvファイルを開くときに filename=input("Open File Name? >") x=csv.reader(open("c:\data\filename.csv")) csvファイルは、c:\data内へ確実に置くとして任意のファイル名を入力させて認識させるにはどうすればいいかわかる方おしえて下さい。 (o_ _)o))
522 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 21:31:19 ] open("C:/data/%s.csv" % filename, "w")
523 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 21:32:08 ] filename=input('Open File Name? >') x=csv.reader(open(u'c:/data/%s.csv'%unicode(filename))) os.path.join()もある
524 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 21:34:15 ] Open File Name? って何語だよ
525 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 21:38:16 ] 他のスレで聞いて
526 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 21:38:36 ] >>522 >>523 ありがとうございます。
527 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 21:39:13 ] os.path.join() は絶対パスを優先するので os.path.basename() を通した方がいい >>> os.path.join(r'C:\data', r'D:\data\hoge.csv') 'D:\\data\\hoge.csv' >>> os.path.join(r'C:\data', os.path.basename(r'D:\data\hoge.csv')) 'C:\\data\\hoge.csv'
528 名前:デフォルトの名無しさん mailto:sage [2010/04/10(土) 21:54:57 ] >>527 ありがとうございます。(o_ _)o))
529 名前:499 mailto:sage [2010/04/11(日) 00:05:39 ] >502 >507 すみません私の不足で誤解が生じたみたいで。 余興程度の質問でした。内包表記のほうがいいとゆうのは理解しております。 perlのTMTOWTDIに悪影響を受けている初心者なのでちょっとした好奇心でした。 >501 >509 >510 ネスト抜けるにはreduce必須だったりするんですね。 いろいろ勉強になりました。ありがとうございます。
530 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 00:34:42 ] reduceって嫌われてる?
531 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 00:41:58 ] マイナーだから使われてないが正確ではないかと
532 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 01:10:27 ] >>530 >>509 だが、>>499 にはfilterとmapで、と書いてあったからreduce使うのを避けたが、むしろ俺は結構好き。 python3ではGuidoが「美しくない」って理由だけでfunctools送りになったらしいが、ループ回すよりずっと美しくなることだって多い。 そのまま残すか、代替の美しい表記法を作ってから削除、という形にしてほしかった。まぁ、このはなしはスレ違いだろうが。
533 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 01:21:59 ] >>530 そんなことないんじゃないの sum()はreduce()の劣化版みたいなもんだし、 map()もリスト一個でいいんなら def map(f, xs): return reduce(lambda x, y: x.append(f(y)) or x, xs, []) でreduce()から簡単に作れる Guidoが嫌っているのは確かかもな
534 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 01:38:17 ] 関数型言語風の低レベルなビルディングブロックとしてreduceが有用なのは判るが、 Pythonとしてはより読みやすい+使いやすい高レベルな関数や機能で90%以上の需要を満たしているから、 reduceはあまり使われないし、使う場合だけfunctoolsから持ってこいという扱いをされる。
535 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 01:42:58 ] map/reduce/filter使い出すときりがないからな functoolsに分離したのは正解だと思う __fuiltins__ はできるだけ綺麗な方がいいし
536 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 02:52:03 ] pythonでLINQ使える?
537 名前:デフォルトの名無しさん [2010/04/11(日) 20:05:30 ] ┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘ おっぱい!おっぱい!
538 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 21:49:19 ] >>535 map, filterは内包表記に置き換え可能だよ。 ぶっちゃけ、内包表記だって、ちょっと複雑になると解読困難になる。
539 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 22:28:53 ] ky現る
540 名前:デフォルトの名無しさん mailto:sage [2010/04/12(月) 00:10:55 ] >535 フ、フルチン?
541 名前:デフォルトの名無しさん mailto:sage [2010/04/12(月) 00:17:38 ] ちょっとわらった
542 名前:535 mailto:sage [2010/04/12(月) 00:36:30 ] ホントなんでこんなタイポしたんだろう
543 名前:デフォルトの名無しさん mailto:sage [2010/04/12(月) 03:26:30 ] はるか過去のこのスレで 野太いティンポがぱいそんぽいって 誰かが言ってたのを思い出した >>535 はそのひとか?
544 名前:デフォルトの名無しさん mailto:sage [2010/04/12(月) 08:17:59 ] みんなごめん もうだめだ 会社の貯金も半年後には底をつく 大口の顧客がこの景気で調子悪いのが原因なんだ みんなごめん 本当にごめん
545 名前:デフォルトの名無しさん mailto:sage [2010/04/12(月) 09:47:11 ] 逝ってヨシ
546 名前:デフォルトの名無しさん mailto:sage [2010/04/12(月) 14:33:49 ] これが本とのデフォルトの名無しさん
547 名前:デフォルトの名無しさん mailto:sage [2010/04/12(月) 14:35:01 ] 今 setup.py install の形式でしか提供してない自分のパッケ0時あるんだけど pypi にした方が便利なの?
548 名前:デフォルトの名無しさん mailto:sage [2010/04/12(月) 15:16:02 ] "パッケ0時"の検索結果 1 件中 1 - 1 件目 (0.11 秒)
549 名前:デフォルトの名無しさん mailto:sage [2010/04/12(月) 15:51:56 ] パッケ0時 -> パッケージ
550 名前:デフォルトの名無しさん mailto:sage [2010/04/12(月) 16:13:03 ] テンキ0使えよ
551 名前:デフォルトの名無しさん mailto:sage [2010/04/12(月) 20:12:14 ] ああ、0とーの誤爆か。 今更気がついたw。
552 名前:デフォルトの名無しさん mailto:sage [2010/04/12(月) 20:43:24 ] テンキーなんて使わないだろ。
553 名前:デフォルトの名無しさん mailto:sage [2010/04/12(月) 21:11:53 ] よそでやれ
554 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 07:33:37 ] 上のほうのタイムゾーンの話だけど、処理を自分で作らないで dateutil を入れてほしい(でないとすぐ「日本でしか動かない」 プログラムが量産されちゃうんだよね……)。 dateutil が標準で入っていないのは、データの更新が早すぎる とかいう政治的な理由だったはず。
555 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 08:48:38 ] タイムゾーンなんて、民主党が子ども手当みたいに無理矢理「来年からサマータイム導入」とか 言ったら本当に導入されちゃうくらい、不安定だからな。 標準ライブラリに入れるのは難しいだろ。 プログラマは普段からUTC使ったら良いと思うよ。
556 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 09:40:10 ] dateutilよりpytz使おうぜ
557 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 16:14:10 ] やっぱりwebだけはrubyにしようかね バージョン間の互換性ないのがすごい嫌だけど
558 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 16:37:36 ] >>557 なんで「やっぱり」になるのかさっぱり判らん。 DjangoやTG2、Kayで何か不満?
559 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 17:06:02 ] むしろサーバー的にRubyは駄目だろ
560 名前:デフォルトの名無しさん [2010/04/13(火) 20:04:52 ] sourceforge.jp/magazine/10/04/12/0751213 easy_installが標準に入るんじゃなかったのか?
561 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 20:07:31 ] >>560 ごめん、嘘だった。 Python3.3から標準。 それまでは、夏頃にdistutils2がリリースされて、それをインストールすると 標準ライブラリを置き換えるようになるはず。 インストーラはpipが推奨されるようになるかも。
562 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 21:34:55 ] >>559 なんでサーバー的にダメなんだ?
563 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 21:45:14 ] Pythonなら標準で入ってるからとかかな?
564 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 22:10:55 ] >>562 遅いからじゃないかな
565 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 14:05:19 ] Pythonより数倍遅いのはいただけないねえ
566 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 15:18:25 ] Ruby はメモリも食うしな
567 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 17:19:08 ] つーかrubyは動作が不安だろ
568 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 20:51:02 ] あれだ そもそもこのスレでRubyを出しちゃいけなかったと思うんだ
569 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 21:57:07 ] python厨とruby厨が仲直りするスレって昔あったよね
570 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 22:02:51 ] 厨は天敵への偏見に使うものだと認識されているよ 日本語の基礎すら出来てないようだね
571 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 22:06:04 ] ヘ⌒ヽフ ( ・ω・) dd / ~つと)
572 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 23:01:13 ] >>555 UTC使うのが当たり前なマだけしか使わないならいいんだけど、 そんなこと考えもしないバカがバカやらかすからそれじゃダメ。 ttp://www.itmedia.co.jp/news/articles/0811/19/news051.html
573 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 23:03:40 ] >>570 使い方として間違ってない気がするが、それはこの際どうでもいい。 ネットスラングの誤用で日本語の基礎力疑われるのか。 インターネットも身近になったものだ。
574 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 23:05:17 ] 文系はこれだから
575 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 11:27:06 ] >>561 つまりこれからはpipでパッケージ書くのが推奨ってことでいい?
576 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 11:51:31 ] スラングこそ基礎力が試されるだろ >>505 みたいな基礎力がない奴が短縮化するとアホみたいなコードが出来る
577 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 11:53:09 ] >>575 pip はタダのインストーラで、distutilsやsetuptoolsの置き換えではなく、 setuptoolsの中のeasy_installだけの置き換え。 パッケージ作る人が使うのは、現時点ではdistributeが推奨で、distutils2 1.0が リリースされたらそちらが推奨になる。 現時点だと、pipだとeggをインストールできないので、eggに依存しているもの (Tracプラグインとか)はeasy_installを使わないといけない。 なので、まだコミュニティ全体の方針としてpipが推奨されている訳はない。 pipにも良いところがあるけど、使い分けが面倒だから俺はeasy_installを使っている。
578 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 21:19:53 ] __(ダブルアンダースコア)の名前修飾ルールについての質問です。 class Foo: __x = 100 def func(self): return self.__x Foo().func() # (1)これはOK def func(self): return self.__x Foo.func = func Foo().func() # (2)これはダメ この原因を教えて欲しいです。そもそも__xは_Foo__xという 名前に変えられてしまうのに、何故(1)のときにエラーにならないのか不明です。 クラス定義が終了した瞬間に、すべての__で始まる名前(呼出側も)書き換える、 ということなのでしょうか。
579 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 21:24:17 ] >>578 Yes。関数名だけじゃなくて、全部の __ が置き換えられる。 でも、 __ は非推奨。 _ だけ使えば良い。
580 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 21:27:33 ] インデントがorz class Foo: __x = 100 def func(self): return self.__x Foo().func() # (1)これはOK def func(self): return self.__x Foo.func = func Foo().func() # (2)これはダメ すみませんでした。
581 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 21:31:55 ] >>579 ありがとうございます。__はprivate(サブクラスへの隠蔽)で、_は protected(外部への隠蔽)として使う。また、普段はprotectedで十分なので_を使う。 ということでよろしいでしょうか。 サブクラスで自由なアトリビュートを持たせられるようにするために、 この名前修飾ルールがあるのですよね。
582 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 21:35:26 ] >>> class Foo: ... __x = 100 ... def func(self): ... return self.__x ... >>> Foo().func() 100 >>> vars(Foo()) {} >>> class Hage: ... def __init__(self): ... self.__x = 200 ... def func(self): ... return self.__x ... >>> Hage().func() 200 >>> vars(Hage()) {'_Hage__x': 200} この違いは何でしょう?
583 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 21:40:50 ] Fooの__xの方はインスタンス変数でなくてクラス変数 vars(Foo), vars(Hoge)もみるといいと思う
584 名前:581 mailto:sage [2010/04/15(木) 21:45:21 ] >>582 Fooでの__xはクラスのアトリビュートでインスタンスからは間接的に参照される。 Hageでの__xはインスタンスに直接所属するアトリビュート、ですよね。 P.S. 以下のコードで呼出側も修飾されることがわかりました。 >>> class Foo: ... __x = 100 ... def func(self, other): ... return other.__x ... >>> Foo().func(Foo()) 100 Pythonってよくできていますね。Javaのprivateと全く同じです。
585 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 21:46:32 ] 文系乙
586 名前:581 mailto:sage [2010/04/15(木) 21:50:45 ] >>585 理系大学生です。でも物理の成績は悪いので、文系頭かもしれません。
587 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 11:10:11 ] 確か、完全に隠蔽するつもりはGuidoにはなかったよね。 隠蔽しなかったら、わかる人には便利だし、わからないのに使う人はタダのバカだから放っとけばいいって話だったかと。
588 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 11:34:09 ] やべー いままで自分が作ったクラスのメンバ全部 self.hoge って書いてた これからは self._hoge を使わなきゃ
589 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 18:42:08 ] Python 2.6.2のcsv書き出しについて質問です。 x=csv.writer(file(csvfile.csv,"wb"))としたとき x.writerow(["あああ","いいい","ううう"]) と出力させたところ、生成されたcsvはメモ帳などで表示させればきちんと表示されているんですが excelで表示させたところ文字化けします。 utf-8から、shift-jisで出力させる方法を教えて欲しいのですが。dialect='excel'としてもエラーを吐きます;
590 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 19:42:56 ] x.writerow([u"あああ",u"いいい",u"ううう"])
591 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 19:44:26 ] やってみます。ありがとうございます。
592 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 19:48:19 ] 駄目みたいです もっと調べてみます。すみませんでした。