[表示 : 全て 最新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

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