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
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