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
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
332 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 16:32:21 ] こんな感じの2次元配列データに関数f(xy)をmapして meshdata=[ [x11,y22],[x12,y12] ,...] ,[ [x21,y21],...],... [[z11,z12,...][z21,z22,...]] したいのだけど べたなループ以外に綺麗に書く方法ないのでしょうか
333 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 16:37:26 ] 添え字間違ったので再度 こんな感じの2次元配列データに meshdata=[ [x11,y11],[x12,y12] ,...] ,[ [x21,y21],...],... に関数f(xy)をmapして [[z11,z12,...][z21,z22,...]] を出力したいのだけど べたなループ以外に綺麗に書く方法ないのでしょうか
334 名前:333 mailto:sage [2008/06/27(金) 17:03:01 ] 自己解決 [[f(xy[0],xy[1]) for xy in line] for line in meshdata]
335 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 19:27:16 ] 二次元っていうより対角線だけの一次元のような気が・・・
336 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 20:41:56 ] ひょっとして内胞リストってlispよりも強力なの?
337 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 21:24:04 ] >>336 マルチ乙 その記事は2001年で古いから、今ならジェネレータ式という選択もある。
338 名前:333 mailto:sage [2008/06/27(金) 21:48:00 ] meshdata=[ [x11,y11],[x12,y12] ,...] ,[ [x21,y21],[x22,y22]...],... で列方向(横方向)の処理は [reduce(plot_line_between_two_point,line) for line meshdata] で出来るけど同じような処理を行方向(縦方向)にするには forでべた書きするしかないのでしょうか?
339 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 22:19:50 ] zip(*meshdata)
340 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 22:29:47 ] meshimada ?
341 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 22:50:48 ] moutabetadesho
342 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 00:36:19 ] クラスからインスタンスを作り、それを配列に入れる。 そのインスタンスの集合に''A'と言う名前をもつものがいるかを A in tlistで取りたい。 __contains__を使えば取れるかなって思ったけど取れなかった。 nameをキーにもつ辞書を作ればできるけど、できればやらずに済ませたい。 こういう場合どのようは方法が取れますか? サンプルコード class T(object): def __init__(self,name,stype): self.name=name self.stype=stype def __contains__(self,key): return key in self.name def main(): tlist=[] for k in ['A','B','C']: tlist.append(T(k,k)) if 'A' in tlist: print 'A contains in tlist' else: print 'A exclude in tlist' if __name__=='__main__':main()
343 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 00:51:26 ] def __eq__(self, other): return other == self.name
344 名前:342 mailto:sage [2008/06/28(土) 02:12:30 ] >>343 ありがとうございます。出来ました。 __eq__を使えばよかったのですね。
345 名前:デフォルトの名無しさん [2008/06/28(土) 03:55:06 ] 起動に時間のかかる cmd をパイプで何度も使用したいのだけど pin, pout = os.popen2(cmd, 'r+') pin.write(hoge) pin.flush() pin.flush() ではパイプは開始されず、 pin.close() ではパイプは通るものの、次回 cmd を再起動しないといけない。 os.fsync() とか python -u とか試したけど変化なしでした。 つまり cmd を一度起動したらそのまま保持したいのです。 ruby は IO.popen で sysnc = true にすると flush() で パイプを使いまわせるっぽいけど、 python は何か別のやり方があるのだろうか。
346 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 05:21:44 ] >>343-344 結果はそうだけど なんか間違ってるよ君ら
347 名前:デフォルトの名無しさん [2008/06/28(土) 05:59:51 ] pin, pout = popen2.popen3(cmd) pin.write(hoge) pin.flush()
348 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 06:15:41 ] コマンドライン引数で, python -uとするか, PYTHONUNBUFFERED=x python
349 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 06:20:12 ] 316 :デフォルトの名無しさん:2007/12/18(火) 08:15:43 xinetdにサービスを登録しようと思い以下のようなスクリプトを書きました。 サーバに送信した文を[]で囲んで返すというものです。が、なぜかクライアントのrecvで受信待ちになってしまいます。 クライアントの通信先をechoに変えたところ、recvは正常に受信し、文字はちゃんと表示されました。 またサーバのsyslogには、正しくprint [hogeron]と記録されています。 現象から見ると、どうもサーバのprintで、ちゃんと送信されていないっぽいです。 os.environ['PYTHONUNBUFFERED'] = '1' で、バッファしないように設定しているのですが… どうすれば正常に動かせますか? 317 :デフォルトの名無しさん:2007/12/18(火) 08:16:24 【サーバ】 -- import os,sys,syslog os.environ['PYTHONUNBUFFERED'] = '1' line = sys.stdin.readline() if line.endswith('\n'):line = line[:-1] result = '['+line+']' print result syslog.syslog('print '+result) -- 【クライアント】 -- import socket host = 'localhost' port =6363 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect((host,port)) s.send('hogeron') str = s.recv(1024) print str s.close()
350 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 07:38:26 ] >>339 listの先頭に*つけるのってどういう意味なの? 調べても出てこなかった
351 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 08:05:32 ] 俺はパイソン。 俺もお前も。
352 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 08:08:00 ] >>350 関数の引数に、リストの要素をばらして入れたいときに使う。 hoge = [a, b, c] をつかって、関数に f(a, b, c) と入れたいときに、 f(*hoge) とする。
353 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 08:30:21 ] >>350 ほい。 www.python.jp/doc/release/tut/node6.html#SECTION006740000000000000000 docs.python.org/tut/node6.html#SECTION006740000000000000000
354 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 08:37:41 ] 書き方は一通りというPythonの原則を崩す機能ですな
355 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 09:24:03 ] >>353 これってtupleしか受け付けないかと思ってたらイテレータなら何でも大丈夫っぽいな
356 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 09:33:15 ] その書き方初めて知った
357 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 10:16:39 ] >>333 >>> mesh_array = [ [(0,0),(0,1),(0,2)], [(1,0),(1,1),(1,2)] ] >>> mesh_array = [ [(0,0),(0,1)], [(1,0),(1,1)] ] >>> def f(x,y): return x+y ... >>> [[f(p[0],p[1]) for p in low] for low in mesh_array] [[0, 1], [1, 2]] 座標の値はタプルにしたほうが見易いかも [ [LOW1], [LOW2], ...]で隣り合う点同士の距離は求めれそうだけど [[C [C O O L L U U M M 1], 2], ...] 縦方向に走査するのは『転置』しないとめどいような希ガス(間違ってたらスマソ)
358 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 10:31:26 ] >>> apply(zip, [(1,2),(3,4)]) [(1, 3), (2, 4)] >>> apply(zip, [(1,2,3),(4,5,6)]) [(1, 4), (2, 5), (3, 6)] >>> apply(zip, [(1,2),(3,4),(5,6)]) [(1, 3, 5), (2, 4, 6)] >>> apply(zip, [(1,3,5),(2,4,6)]) [(1, 2), (3, 4), (5, 6)] >>> zip([(1,3,5),(2,4,6)]) [((1, 3, 5),), ((2, 4, 6),)] なんか、最後のapply経由の結果が違うのな…(転置のつくりかた)
359 名前:358 mailto:sage [2008/06/28(土) 10:45:06 ] てか当たり前ぽ py3k だと apply がobsoluteで使えなくなっとる…
360 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 10:56:18 ] >>> def apply(func,*args): return func.__call__(*args) # これだと駄目みたい… ... >>> for e in apply(zip, [(1,2),(3,4)]): ... print(e) ... ((1, 2),) ((3, 4),) >>> apply(zip, [(1,2),(3,4)]) <zip object at 0x01582648> py3k で廃止されたapplyを復活させるにはどうしたら 良いですか。
361 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 11:23:46 ] >>> zip([(1,3,5),(2,4,6)]) [((1, 3, 5),), ((2, 4, 6),)] >>> >>> zip((1,3,5),(2,4,6)) [(1, 2), (3, 4), (5, 6)] >>> >>> (1,3,5),(2,4,6) # tuple list ((1, 3, 5), (2, 4, 6)) >>> >>> zip(*tlist) zip関数は、タプルのリストを渡さないと思ったとおり動かないのね >>> apply(zip, [(1,3,5),(2,4,6)]) [(1, 2), (3, 4), (5, 6)] リストから *tlist を取り出してzipを作用させてると…
362 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 11:24:42 ] >>360 >>> my_apply = lambda f, args: f(*args) ... >>> my_apply(zip, ((1,2),(3,4))) [(1, 3), (2, 4)]
363 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 11:27:21 ] >>> def apply(func, args): return func(*args) ... >>> for e in apply(zip, [(1,2),(3,4)]): ... print e ... (1, 3) (2, 4) いや、最初から zip(*[(1,2), (3,4)])やろうぜ。
364 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 11:34:24 ] >>> for e in zip((1,2),(3,4)): ... print(e) ... (1, 3) (2, 4) >>> for e in zip(tuple([(1,2),(3,4)])): ... print(e) ... ((1, 2),) ((3, 4),) >>> (1,2),(3,4) ((1, 2), (3, 4)) >>> tuple([(1,2),(3,4)]) ((1, 2), (3, 4)) zipにリストでデータ渡せないのはどうしてなんだろう…orz
365 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 11:43:47 ] 引数として一個のリストのリストを渡されたのと複数個のリストを渡されたのを 同一視されたら困るだろ 一体何を悩んでいるのかさっぱり分からん
366 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 11:45:06 ] >>363 dくす >>> for e in zip(tuple([(1,2),(3,4)])): print(e) ... ((1, 2),) ((3, 4),) >>> for e in zip(*([(1,2),(3,4)])): print(e) ... (1, 3) (2, 4) zip関数というか関数に、『リスト』渡すなら *でキャストして 『引数フォーマット』にしてから渡すよろし、いうことなのね… 引数フォーマットは (1,2),(3,4) != ((1,2),(3,4)) == tuple([(1,2),(3,4)]) と。