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


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

Pythonのお勉強 Part37



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/

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 ]
駄目みたいです
もっと調べてみます。すみませんでした。

593 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 20:08:25 ]
u"あああ".encode('shift-jis')

594 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 20:43:01 ]
>>593
ありがとうございます。
レスに気付かないまま夢中でやってました;
いったん、unicodeでutf-8からunicodeへ変換して→encodeでunicode→shift-jisへ変換して無事に解決しました。
リスト化しているので、for文を使用し手前で変換しておいて吐き出すようにしようと思います。

>>590 >>593 ヒントありがとうございました。

595 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 20:48:01 ]
"あああ".decode('utf-8').encode('cp932')

596 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 20:52:46 ]
最近打ち合わせでは分かり切ったことは飛ばして話を進めているのに
知識として持っててあたりまえのことを質問する馬鹿が増えた


597 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 21:52:39 ]
Pythonで日本語の出力とか使うつもりなら
3.x使うか他の言語にした方がいいよ

598 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 22:16:22 ]
そんなばなな

599 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 23:12:52 ]
勉強会やるやる詐欺。

600 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 01:54:13 ]
>>594
codecsは使えない?

601 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 11:07:50 ]
>>597
同意。
2.xは本格的に文字列処理するには面倒だし、3.xでかなり変更されてるのに今更本格的に覚えるのもバカバカしいよね。



602 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 11:57:50 ]
rubyを使えば解決だね!

603 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 12:30:45 ]
>>602
うん。本格的な文字列処理とか正規表現とかやりたいんだったらruby使えばいいと思う。

エンコードの問題の他にもPythonは文字列処理のしにくさを抱えている。
rubyやらがどうなってるかは知らんが、Pythonでは文字列は変更不可能な型だから破壊的な処理ができなくて、
一文字でも変更しようと思ったらインスタンスを作り直すことになる。

604 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 12:52:04 ]
じゃあperlでいいや

605 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 14:03:37 ]
変更可能な文字列型があるのはともかく
デフォルトの文字列が変更可能なのはダメだろ……

606 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 14:11:55 ]
ruby使うぐらいならperlの方がまだマシだな

607 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 14:59:11 ]
ruby って結局 perl の汚いところと C++ の汚いところを両方引き継いでるよね www

608 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 15:42:44 ]
from ctypes import *
s = "aaaaa"
get_charptr = lambda s, pos: c_char_p(memset(s, 0, 0) + pos)
memset(get_charptr(s, 2), ord('b'), 2)
print s
# ===> aabba

まったく推奨しないが、こういう変換方法もないわけではない。

609 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 16:03:03 ]
>>608
流石にそれでctypes使うのは行き過ぎじゃないのかな
大抵arrayでいいと思う

610 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 16:43:15 ]
以下のようにlistにして変更して最後に''.joinとかはどうだろうか。
ham = list('ham')
ham[1] = 'm'
ham = ''.join(ham)

611 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 17:10:32 ]
>>609
>一文字でも変更しようと思ったらインスタンスを作り直すことになる。
への反例だろ



612 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 17:13:43 ]
>>610
それはインスタンスを作り直すことになるだろ

第一listは文字列じゃないし

613 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 17:15:49 ]
アイライクシーライク






[ 続きを読む ] / [ 携帯版 ]

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

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