1 名前:デフォルトの名無しさん mailto:sage [2006/07/23(日) 01:18:15 ] 【Pythonスレッド基本ルール】 1:問題文は自己省略せずに、直接全部貼り付けてください。 2:課題の「丸投げ」が最も好ましい提示法です。なるべく丸投げしてください。 3:数学問題は「○×法でせよ」だけでなく、その数式、前提条件も説明してください。 4:課題&宿題関連の質問はOKですが、それ以外の一般的な質問は禁止です。 5:もし回答プログラムがアップされたら、その返答と動作報告をお願いします。 【課題提示用テンプレ】 【 課題 】与えられた課題文をそのまま書きます 《必須》 【 用語 】数学用語、専門用語の意味、説明を書きます 《あれば必須》 【 期限 】提出期限、解答希望日があれば書きます 【 Ver 】希望するPythonバージョンがあれば書きます 【 補足 】課題について自分なりに補足する事、何か思う事があれば書きます。 丸投げでない場合は、途中までのソースとその経過報告、 質問点、疑問点を書きます(なるべく丸投げにしてください) 【回答プログラムの掲載場所】 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi
267 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 18:13:11 ] 例外処理についての質問です。 # -- coding: cp932 -- import urllib2 url='www.yahoo.co.jp/ '; print url try: print 'try try try' f=urllib2.urlopen(url) ##urlをオープン except IOError, (errno, strerror): ##オープンできないときは out= 'web error' print out else: ##オープンできたら txt=f.read() ##htmlファイルを読み込む print txt > except IOError, (errno, strerror): ##オープンできないときは >ValueError: need more than 1 value to unpack というエラーが出てしまい上手くゆきませんでした。 環境は、winxp, python2.5 です。どうぞよろしくお願い致します。
268 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 20:56:17 ] exceptの書式が違う。 except IOError, e: # eはIOErrorオブジェクト print e
269 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 22:04:40 ] >>267 urllib2.urlopen の失敗時に発生している例外が IOError なら > except IOError, (errno, strerror): ##オープンできないときは のようにタプルとみなしてアンパック代入できるんだけど、 実際に発生しているのは IOError のサブクラスである URLError のインスタンス。 これはなぜか IOError のサブクラスのくせにタプルとみなせない。 ただ URLError の reason 属性を使えばこう書ける: except urllib2.URLError, urlerror: errno, strerror = urlerror.reason
270 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 00:42:07 ] URLError 以外にも WindowsError やら ValueError やら起こるみたいだから except Exception, e: みたいに一般的に書いとくのがいいんジャマイカ。
271 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 01:53:29 ] except IOError, e: # eはIOErrorオブジェクト print e >>> <urlopen error (11001, 'getaddrinfo failed')> と書くか、 from urllib2 import URLError して except URLError, urlerror: # urlerrorはURLErrorオブジェクト errno, strerror = urlerror.reason print errno, strerror >>> 11001 getaddrinfo failed と書けば大丈夫。 # URLError is a sub-type of IOError, but it doesn't share any of # the implementation. need to override __init__ and __str__ www.koders.com/python/fidB6D47AFC04CE4977066FF7A79FC593FBBB9562C6.aspx#L139 >>269 このことですよね…。何となく例外の引数は一つ以上付けないほうが 無難そうな気がしました。というかあまり他の言語でも例外の引数 を一つ以上持ってるのを見たことがないですし。 どうもありがとうございました!
272 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 01:54:41 ] >>270 よくわからないときは、Exceptionでやってしまうのもありでしょうか? 何か、それはそれで問題が生じそうな気もするようなしないような…(^^;)
273 名前:デフォルトの名無しさん [2007/05/14(月) 03:03:16 ] >>272 複数の例外が起こる状況で、例外毎に処理を変えたいときは except 節を複数書く必要があるけど、 一律にキャッチしたいだけなら except Exception, e: または except: だけで十分かと。
274 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 13:47:43 ] ほしゅ
275 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 14:58:43 ] 【 課題 】数当てゲームを作ってみよう。一桁の数を入力してもらう。 その数が、秘密の数と一致していたら、「上がり」と表示して終了する。 もし、秘密の数よりも大きければ、「大きすぎ」と表示して、再度入力をしてもらう。 逆に小さければ、「小さすぎ」と表示して、再度入力をしてもらう。 秘密の数は、プログラムの最初で変数に代入しておく。 【 補足 】某大学サイトでpythonを学習しているのですが(当方、大学生ではありません)、 下のどこがいけないのかわかりません・・・ 文末の「;」はつけないと何となく不安なのでつけてあります。 # 数当てゲーム print "数当てゲーム\n"; question = "半角で一桁の数字を入力して下さい。"; answer = '8'; a = answer; input = raw_input(question); while input != '': if input == a: print '上がり。'; break; elif input < 9; print '小さすぎ。/n'; input = raw_input(question); else: print '大きすぎ。\n'; input = raw_input(question);
276 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 15:05:16 ] elif input < 9; じゃなくて elif input < a: だろ
277 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 15:07:54 ] お! 動いた! >>276 ありがとうございます。
278 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 15:12:34 ] >>> input = raw_input('Enter: ') Enter: 8 >>> input '8' >>> input == 8 False >>> int(input) == 8 True がんばれー
279 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 17:00:24 ] セミコロンなんて付ける癖にしているからへんてこな間違いをやってしまうのだ
280 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 19:40:17 ] inputというのはビルトイン関数名でもあるので、それを変数名に使うのは行儀が良くない、 で、この場合raw_inputよりもinputを使った方が簡単。
281 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 06:24:50 ] >>> def myfunc(): print input() ... >>> myfunc() __import__('os').unlink(<漏れの大事なファイル>) None 便利なファイルシェルだな。
282 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 07:02:25 ] 公式ドキュメントより > input( [prompt]) > eval(raw_input(prompt)) と同じです 兄貴と呼ばせてくれ >>281
283 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 13:48:47 ] ファイル(バイナリ)から4byteづつ読んで実数表示する のはどう書きますか?
284 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 15:13:44 ] import array ary = array.array('f') fo = file('test.bin', 'rb') while True: try: ary.fromfile(fo, 1) except EOFError: break print ary.pop() fo.close()
285 名前:383 mailto:sage [2007/06/11(月) 18:27:37 ] d>>284 しかし何も起こりませんでした。 インストしたpythonは python-2.5.msi pywin32-210.win32-py2.5.exe
286 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 19:44:33 ] はい、次
287 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 21:07:35 ] >>285 その4バイトのフォーマットが何なのか書かないとどうにもならないよ ところで1バイトずつ読み込んでそれを表示するのなら書けるんだよね?
288 名前:285 mailto:sage [2007/06/12(火) 08:20:09 ] >>287 想定は3Dモデルですが、公開されてるフォーマットでは 無い為とりあえず頂点のみ収めたファイルを指定しました。 バイナリの読み込み自体わかりません。スミマセン
289 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 11:06:26 ] 何も起こりませんでした… ってどんな呪文だよ
290 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 12:03:39 ] >>288 単純にCのfloat型をファイルに書き出したものなら>>284 のでいけるはず まず>>284 のがちゃんと動くようにするのが先決だね ・時下げ部分の全角空白を半角空白に置き換える ・その3Dデータを test.bin の名前でいっしょに置く をしている? それをして動かないなら動かないなりにエラーメッセージが出ているはずなので そのエラーメッセージを書いてください
291 名前:288 mailto:sage [2007/06/12(火) 14:52:16 ] >>290 丁寧にありがとう御座います。<(_ _)> > except EOFError: ここで止まっているようでした。 ファイルはtest.binでC:\(あれ? \打った時に確定されてIMEがオフになる〜) に置きました。 これか? 取り急ぎお礼だけ。
292 名前:291 mailto:sage [2007/06/12(火) 15:18:16 ] 全角空白はエディタ読み込み時に文字化けしていたんで 半角空白にしてたんですが、位置が悪かったようです。 >>284 と同じインデント? で動くようになりました。(PythonWin上) 実はPOSERで遊びたい3Dモデルがあるんですが、対応プラグイン もプラグイン書くにしてもC言語は難しそう。 そこでインタプリタなら出来るんじゃないかと思い……。 4MBのファイル読み込ませたんだけど20分経っても終わらないや……。
293 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 03:24:29 ] とりあえず何形式かいうてみそ。
294 名前:292 mailto:sage [2007/06/13(水) 20:02:46 ] >>293 えーと……ILUUSIONってとこのゲームのデータです。 今現在有志の手によりMetasequoiaのmqo形式での 読み書きは出来ます。 Metasequoiaがモーション対応してない為頂点カラー にエンベロープデータを保持させるという特殊な手法 なので頂点の削除追加が困難になっています。 手持ちのPoserとXSI fndがPython対応しているんで ちょっと夢見てしまったのでした。
295 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 20:59:13 ] しかし何も起こりませんでした。
296 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 21:00:51 ] そんなような台詞を多用するRPGが昔ありました
297 名前:デフォルトの名無しさん [2007/06/16(土) 18:20:53 ] 某大学でPYTHONの授業を取っているのですが、先生が全く何も教えてくれず放置 なのと、自分が他の課題で常に手一杯なので、PYTHONの知識については皆無に等しいです。 ですが、期限がとうとう来週までに迫ってしまいました。。。 課題は自由なのですが、「自分又は他者にとって有用性のあるもの」 とのことなので、以下のような課題を設定しました。どなたか分かる方 がいらっしゃれば、丸投げですが是非よろしくお願いしますm(..)m □課題 「ホームページ(自分が作りました)の掲示板に書き込みがされたら、 自動的にメーリングリストのアドレス宛に更新通知を送り、ついでにその掲示板のアドレスもそのメールに記す。」 というものです。 出来ればわかり易く「ここにHPのアドレスを入れる」とか「ここにメーリングリストのアドレスを入れる」 等のコメントを加えていただければと思いますm()m。 □提出期限 6月25日(月) です。よろしくお願いします。
298 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 18:23:38 ] ネットワークじゃなきゃならんのか? 自分のレベルを考えたらもっと楽なものにしないとボロが出るぞ。
299 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 18:25:15 ] >PYTHONの知識については皆無に等しいです じゃあ、何ならできるんだ? Perlなら、WebProgバリバリか?
300 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 18:38:16 ] >>297 掲示板プログラムはすでにあるの? それを改造しないでPythonで定期的にチェックしてメール飛ばすの?
301 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 19:15:36 ] →諦める 諦めない
302 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 19:17:52 ] >>297 を読む限りpython知識だけでなく、webとかcgi知識も皆無に見えるんだが?
303 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 19:47:37 ] まあがんばれ
304 名前:updatechecker.py [2007/06/16(土) 20:01:59 ] >>297 どぞ。 # -*- coding: Shift_JIS -*- import urllib, smtplib from email.MIMEText import MIMEText from email.Charset import Charset def main(): # 掲示板の URL bbs = "pc11.2ch.net/test/read.cgi/tech/1153585095/l50" # 通知メールの宛て先 mail = "****@****.****.ne.jp" # SMTP サーバのホスト名 smtp = "mail.****.****.ne.jp" if updated(bbs): print "updated" notify(mail, smtp, bbs) else: print "not updated" def updated(URL): CACHE_FILE = "updatechecker.dat" # キャッシュファイルに保存したページ内容を取り出す try: file = open(CACHE_FILE, "rb") cached_contents = file.read() file.close() except IOError: cached_contents = None
305 名前:304の続き [2007/06/16(土) 20:04:38 ] # 現在のページ内容を得る file = urllib.urlopen(URL) contents = file.read() file.close() # 現在のページ内容をキャッシュファイルに保存する file = open(CACHE_FILE, "wb") file.write(contents) file.close() # ページ内容が変わっていたら更新アリと判定 (真偽値を返す) return contents != cached_contents def notify(address, server, URL): text = u"掲示板が更新されました。\n" + unicode(URL, "ascii") charset = Charset("ISO-2022-JP") msg = MIMEText(text.encode(charset.input_codec, "replace")) msg.set_charset(charset) msg["Subject"] = "Update notification from updatechecker.py" msg["From"] = '"updatechecker.py" <%s>' % address msg["To"] = address smtp = smtplib.SMTP() smtp.connect(server) smtp.sendmail(msg['From'], msg['To'].split(), msg.as_string()) smtp.quit() if __name__ == "__main__": main()
306 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 20:48:06 ] 傍から見てたんだけど、HTMLを丸ごとGETして キャッシュと比べるっていうのは思いつかなかった。 (掲示板がどんなHTMLを吐くかも不明なのに 更新チェックなんて無理とか思ってた) 勉強になったよ、ありがとー>>304
307 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 20:59:56 ] 大学生にもなって先生が教えてくれないって泣き言なんて馬鹿じゃね? 正直今の甘ったれた根性で社会に出るとお前個人じゃなくて同僚の迷惑になるのでそのまま留年してな
308 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 23:52:11 ] 何も教えてくれないなんてあるのか。 >297 が講義に出席してなかったとかじゃなくて?
309 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 00:01:00 ] 単にurllibの名前だけしか教えてくれなかったから使い方わからなーい! とかそういう感じじゃないかなぁ・・・
310 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 00:23:45 ] 月曜日が楽しみですね
311 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 07:47:19 ] >>306 掲示板の内容以外のものが、動的に生成されてるとだめじゃない? テキスト広告とか、参照元とか表示してるところあるじゃん。 2chなら、おすすめ2chとか。
312 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 08:42:32 ] 自分のHPならそれくらい把握できるだろ。 そのぶぶんだけ比較対象からはずせばいいだけジャン。
313 名前:306 mailto:sage [2007/06/17(日) 09:53:57 ] >>311 もちろん広告などが入ったらアウトだけど、 それは出題者が示して無いから仕方ない。 大抵の掲示板にはLast-ModifiedやETagは使えないから >>304 のアプローチがベストじゃないかな。 実際の利用時には、>>312 が書いてくれたように 余分な箇所を削るフィルタを掲示板ごとに書くことになると思う。 あと、おすすめ2chは、datのLast-Modifiedを比較すればOK。
314 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 12:31:28 ] そういう問題があるからRSSとかが発明されたわけだ
315 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 15:05:09 ] illusionってエロゲメーカーか。
316 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 16:15:03 ] >>314 いやRSSは最初はサイトサマリー blog のエントリーの更新を通知する、程度まで援用されてはいるけど bbs の書き込みをRSSで配信している例なんてほとんど見ないよ
317 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 16:32:02 ] フリー・レンタルBBS業界の一般的な話は知らないけど teacupはRSS配信してるみたいね
318 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 19:07:16 ] >>316 BBSというシステムがあまり最近の流行ではないから、古いシステムをそのまま使ってることが 多いというだけだと思う。いまどき新規に開発するBBSでRSSに対応しないというのはあり得ない。
319 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 01:16:36 ] >>318 blog のコメント欄なんかは RSS 配信しない事が多いね まあどこまでを BBS と言うかによるわけだけど
320 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 20:25:19 ] さて月曜日ですよ。 >297 はどこの課題だったのかなー。
321 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 20:28:01 ] ?
322 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 06:20:26 ] シカト来たーーー
323 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 15:13:28 ] >>319 それは確かにそうだ。 たまには、コメントやトラックバックのRSSを配信できるシステムもあるが、主流ではないか
324 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 11:16:36 ] 後で考えたら結局要らなかったのですが一応。 配列の配列を引数にとって、行列を入れ替える関数って どう書けばいいでしょうか? 具体的には [ [ 1, 2, 3, 4], [ 5, 6, 7, 8], [ 9,10,11,12], ] を渡すと [ [ 1, 5, 9], [ 2, 6,10], [ 3, 7,11], [ 4, 8,12], ] を返すようなものです。
325 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 11:36:25 ] zip関数を使う
326 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 11:48:26 ] >325 zip(*lst) でほぼ理想通りの結果が出ました!感謝!
327 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 13:22:53 ] 2階層は zip で結構イケルんですけど 3階層以上の配列(テンソル?)だと あまりいい手はないですよね numpy の類を使うしかないかな
328 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 19:58:32 ] 25日は来週の月y・・・
329 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 23:08:10 ] まだ猶予があったのか。ギリギリになってあわてる奴よりはなんぼかましですね。
330 名前:timer [2007/06/22(金) 21:34:32 ] 具体的な例ではなくて申し訳ないのですが、実行したい関数を数秒毎に繰り返し実行させる方法(ライブラリでもいいです) が教えていただきたいのですが。。。お願いします!!
331 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 21:46:04 ] import time def hoge(): print 'hoge' while(True): hoge() time.sleep(1)
332 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 21:46:12 ] >>330 import time while True: foo() time.sleep(3) fooが重い処理なら、例えばスレッドなんかを作る。 import time, thread while True: thread.start_new_thread(foo, ()) time.sleep(3) www.python.jp/doc/2.4/lib/module-time.html www.python.jp/doc/2.4/lib/module-thread.html
333 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 20:36:07 ] youtube-dlをjp.youtube.comとwww.youtube.com の両対応にしてください。 おながいします。
334 名前:timer [2007/06/25(月) 01:38:28 ] >>331 >>332 ありがとうございました!無事解決しました!!
335 名前:デフォルトの名無しさん [2007/06/26(火) 02:06:18 ] age
336 名前:デフォルトの名無しさん [2007/07/13(金) 18:44:07 ] 保守あげ
337 名前:デフォルトの名無しさん [2007/07/23(月) 20:13:20 ] [1, 1, 2, 2, 2, 3, 3, 4, 4, 1, 2]という数値のリストがあって、 それはリストのネストのレベルを表してます。 このリストをそのレベルどおりにネストさせるには、どうすればいいですか? [1, 1, [2, 2, 2, [3, 3, [4, 4]]], 1, [2]]
338 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 20:46:10 ] 最小値より大きいものを1つのリストにまとめたリストを返す関数を作って再帰 ただサイズが大きいと計算時間が厳しいと思う
339 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 23:02:26 ] >>337 ミもフタもない解答 def f(lst): lvl=lst[0] ans = '['*lvl + '%d'%lvl for i in lst[1:]: if i==lvl: ans += ',%d' % i elif i>lvl: ans += ',' + '['*(i-lvl) + '%d'%i else: ans += ']'*(lvl-i) + ',%d'%i lvl = i return eval(ans+']'*lvl)
340 名前:デフォルトの名無しさん [2007/07/24(火) 00:36:15 ] 【 課題 】 次の要求を満たすフィルタプログラムを作れ。 1.標準入力から行を読み込み、空白をカンマに変換し、標準出力に出力する 2.連続した複数の空白はひとつの空白と同じと見なす 3.タブ文字も空白と見なす 4.オプション等は設けない 5.フィルタとして動作するので余分なメッセージ類は一切出力しない 例として「1 Bill 1955 Oct 28」と入力したら「1,Bill,1955,Oct,28」と出力されるようにします。 オブジェクトの名前は次のように定義する line 標準入力から入力した行 termList lineにsplitメソッドを適用して生成したリスト term リストの各要素 ouputString 標準出力に出力する文字列 outputString = ’’ for term in termList[:-1]: outputString += term + ’,’ outputString += termList[-1] + ’\n’ sys.stdout.write(outputString) 上記のコーディング例を参考に作成せよ。 【 期限 】7月30日(月)まで。 何方かよろしくお願いします。
341 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 00:40:10 ] # -*- coding: Shift_JIS -*- def nest(L, level=1): L = list(L) # pop で破壊してよいようにコピーを作る results = [] while L: # 想定外の要素が見つかったらエラー assert not L[0] < level # 現在のレベルと等しい要素をそのまま results に追加 if L[0] == level: results.append(L.pop(0)) continue # 現在のレベル以上の要素を集める nested_items = [] while L: # 想定外の要素が見つかったらエラー assert not L[0] < level if L[0] == level: break nested_items.append(L.pop(0))
342 名前:デフォルトの名無しさん [2007/07/24(火) 00:42:48 ] # 集めた要素をネストする(再帰) results.append(nest(nested_items, level+1)) return results assert nest([1, 1, 2, 2, 2, 3, 3, 4, 4, 1, 2]) == [1, 1, [2, 2, 2, [3, 3, [4, 4]]], 1, [2]]
343 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 00:53:54 ] >>340 import sys for line in sys.stdin.readlines(): termList = line.split() outputString = '' for term in termList[:-1]: outputString += term + ', ' outputString += termList[-1] + '\n' sys.stdout.write(outputString)
344 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 18:07:35 ] oxtu.py
345 名前:デフォルトの名無しさん [2007/08/02(木) 19:06:37 ] oxtu.py age
346 名前:デフォルトの名無しさん [2007/08/12(日) 17:58:39 ] 【 課題 】 宿題じゃないが、アルゴリズム考えててこんがらかったので質問。 lst = [dataX, ..., data2, data1, data0] newlst = [dataM, ..., dataN+1, dataN] # len(lst) == 任意, len(newlst) <= 4, M >= X このようなリストがあった時、newlstをlstに重複なくマージするにはどうしたらよい? つまり、 lst = [data3, data2, data1, data0] newlst = [data4, data3, data2] assert merge(lst, newlst) == [data4, data3, data2, data1, data0] このときのmergeをどう作ればよいのか知りたい。 なおインデックスに飛びは無く、dataは等価比較可能。
347 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 18:17:13 ] list(set(lst + newlst))
348 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 18:33:50 ] >>347 すまん、忘れてたが順序関係は維持したままで。 ただしdata同士の順序比較は出来ない。 インデックスは順序のために便宜的につけただけで、実際には通し番号などは無い。
349 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 22:24:18 ] > data同士の順序比較は出来ない > 実際には通し番号などは無い ちょっ、そうしたら、 lst = [a, b, c] newlst = [b,x,y] のとき、c, x, y, の順序はどうやって決めるんだ?
350 名前:デフォルトの名無しさん [2007/08/12(日) 22:25:04 ] ふつうに for item in newlst: if item not in lst: lst.insert(0, item) ではダメなの?
351 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 22:28:39 ] あれ、>>346 見たら > インデックスに飛びは無く って書いてあるな。順序あるのか無いのか、はっきりしてくれ。
352 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 23:29:08 ] lst[:lst.index(newlst[0])] + newlst
353 名前:346 mailto:sage [2007/08/13(月) 04:15:28 ] 質問しといて何だが自己解決した。 色々前提条件説明しきれてなくてスマン。付き合ってくれた人有り難う。 dpaste.com/16708/ 要はネットからエントリ型の更新情報をダウンロードしてローカルデータに追加するため、 lstとnewlstに重複した情報があるかもしれないが、そこだけstripしたかったというお話。 エントリに日時情報があればもっと簡単だったんだけどね。
354 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 08:34:13 ] >>353 エントリ型って何?
355 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 08:35:28 ] >353 を読む限り順序なんてなくて set で要素抽出をすればいいだけじゃん 元の list 保存しておいて orig_list.index( some_data ) で 個別 index はでるんだし
356 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 15:37:39 ] 最後lstとnewlstの足し算逆じゃね? ていうか明らかにfor文必要ないから
357 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 11:32:42 ] 下のような2つのリストがあるとき a = ["A","B","C","D"] b = [5, 3, 8, 2] aのリストをbの値の大きい順にソートしたい、この場合、a = ["C","A","B","D"] b = [8,5,3,2]を求めたいのですがどのように書けばよろしいでしょうか。 アドバイスお掩蓋します。
358 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 12:00:11 ] >>> zip(b, a) [(5, 'A'), (3, 'B'), (8, 'C'), (2, 'D')] >>> sorted(zip(b, a)) [(2, 'D'), (3, 'B'), (5, 'A'), (8, 'C')] >>> sorted(zip(b, a), reverse=True) [(8, 'C'), (5, 'A'), (3, 'B'), (2, 'D')] >>> [x[1] for x in sorted(zip(b, a), reverse=True)] ['C', 'A', 'B', 'D'] >>>
359 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 12:12:37 ] >>358 zipでこんな簡単にできると思いませんでした。 ありがとうございました。
360 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 02:27:14 ] 質問です。 外のwebサーバ(自分はドキュメントやCGIスクリプトの設置はできるユーザ権限)にJythonって設置できますか? やっぱサーバの管理者権限いりますよね?
361 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 03:40:39 ] 自分でJavaとJythonインスコすればおk。
362 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 14:19:06 ] telnet、ssh禁止とかだったらたぶん無理
363 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 15:37:04 ] >>362 それがOKならいけるってことですね。 いっちょあやしまれないように暗躍してみます。
364 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 20:17:55 ] Jythonについて質問した者です。 ローカル環境でいじくり、無事jythonのインストール方法を理解できました。 これで、python ver 1.5.2からアップデートしない大学のサーバを 出し抜いてやるぜと思ったら、javaすら入っていませんでした。
365 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 23:51:18 ] 無けりゃ入れるだけよ
366 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 22:24:08 ] java設置失敗。 そして良く考えたらJythonとCPythonとの互換性も追い付いているのかどうか良く知らない・・・。 ファイルの実行や一般的なUNIXコマンドを使う権限があるので、リモートでPython2.5をコンパイルしてみた。 が、ソケットのヘッダファイルを読み込めなかった。 くそっくそっ。 かっこいいCGI置きたいよぅ。
367 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 00:26:15 ] いまどきCGIである時点であまりかっこいいとは言えない