1 名前:デフォルトの名無しさん mailto:age [2021/06/09(水) 21:05:44.61 ID:zRBfpo4e.net] 当スレに★Python以外のプログラミング言語での回答類を書くべからず★ 派生言語はそれぞれ専スレがある(この板にあるとは限らない)ので、そっち池。 「Ruby」「Rails」「某言語では」「クソチョンw」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。 このスレッドは「お勉強」スレのほうには書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を、勇気を持って書き込むスレッドです。 へび使いが優しくコメントを返しますので、お礼は Python の布教と初心者の救済をお願いします。 ★エラーを解決したい場合★は、 表示されたエラーの全文(勝手に省略やスクショうp等の横着クソ行為禁止)と、 実行環境(Pythonのバージョン・OSとIDEの種類およびバージョン)をシッカリ書くこと。 Pythonの★ソースコードをそのまま5ちゃんに貼るとインデントが崩れてチヌ★ 【【【複数の連続半角スペースはなにもなかったことにされる&タブは普通には入れられない】】】掲示板の仕様なので、 プログラム文は↓等の、いわゆるコードうp用サイトに貼ってこいください。 ttps://techiedelight.com/compiler/ Run Code機能あり。 ttp://ideone.com/ デフォ設定はC用のため、言語選択ボタン押下がピコ手間かも。 ttp://codepad.org/ ほぼ直感的に使える。Run codeボタンあり。 ttp://pastebin.com/ まずまずシンプル。 ttp://dpaste.com/ とてもシンプル。消えるまでの日数は十分長ーく指定のこと。 ◇Python公式◇ www.python.org/ ◇まとめwiki◇ ttp://python.rdy.jp/wiki.cgi 〇前スレ〇 【まず1嫁】くだすれPython(超初心者用) その53 https://mevius.5ch.net/test/read.cgi/tech/1615846784/ 次スレたては >>985 あたりが挑戦する。 ### END OF TEMPLATE ###
331 名前:デフォルトの名無しさん mailto:sage [2021/07/10(土) 00:59:10.02 ID:MSe133Oz.net] >>329 >>330 納得しました! ありがとうございます
332 名前:デフォルトの名無しさん mailto:sage [2021/07/10(土) 10:33:46.40 ID:chyfa+iT.net] Python3.7で、pdbのtrace中とそれ以外でプログラムの挙動が異なるという問題に悩んでいます。 ■現象 PySimpleGUIのpng画像をwhile True:で延々と更新し続ける処理が、 ・pdb set_trace中は想定通りに画像が更新され続ける(ただし途中でpdbが止まる) ・traceを外すとそもそも画像が表示されない ■処理 "conv_image"を別関数で更新し続け、 このwindow更新行をwhileで回すだけの処理です。 window['-image-'].update(data=get_img_data(conv_image)) ■pdbが止まる件 不思議なのは、通常pdbはデバッグ中に一度nで次に進むと、次行からはEnterだけでエラーのない限り進みますよね。 でもEnter押しっぱなしにしてると、この行でエラーの表示もなくpdbがいったん止まります。 nを押すと進み、画像が更新されます。 そこが問題のポイントなのかなと思いますが、それ以上の手がかりがありません。
333 名前:デフォルトの名無しさん mailto:sage [2021/07/10(土) 10:43:05.45 ID:lk+ovMEl.net] >>332 再現できる最小限のコードを提示しましょう
334 名前:デフォルトの名無しさん mailto:sage [2021/07/10(土) 11:13:10.52 ID:Ai3MLyk0.net] > get_img_data(conv_image) この計算は一回でいいんじゃ
335 名前:デフォルトの名無しさん mailto:sage [2021/07/10(土) 13:30:27.85 ID:nAGZi/ZP.net] GUIがメッセージを処理する時間がねえんじゃねえの
336 名前:332 mailto:sage [2021/07/10(土) 14:33:07.51 ID:chyfa+iT.net] >>333 すみませんでした… ttps://dpaste.com/AQL5WPNUS 手元のraspbian buster python3.7.3では、ここまで削っても 後ろから4行目のpdb.set_trace()有無で、>>332 に書いた現象が出ます。 >>334 window['-image-'].update(data=conv_image) こうでいいんじゃないの?と思って最初はこう書いてたんですが、 BytesIOが生で見えてるのか何なのか、"TypeError: 'int' object is not callable"エラーが出ます。 ググったところ、get_img_data関数(割と一般的らしい)を使えとあったのでそのようにしたところ、表示できるようになりました。 >>335 試しに2ヶ所あるwindow.updateの直後にtime.sleep(1)を入れてみたんですが、変化なしでした。
337 名前:デフォルトの名無しさん mailto:sage [2021/07/10(土) 16:36:24.47 ID:c5RJ/qlV.net] >>336 PySimpleGUIでメッセージ処理させるのはwindow.read() メッセージ無くても回したいならtimeoutを指定する
338 名前:デフォルトの名無しさん mailto:sage [2021/07/10(土) 18:01:51.33 ID:lk+ovMEl.net] window.read()してないのでtk.update()が呼ばれず画面が更新されない window.TKroot.update()を呼べば画面が更新されるが 直接呼ばずにwindow.read()を使ってメッセージループを作るほうがいい デバッグセッション時はそれだと使いにくいから何か対処されてるっぽい
339 名前:332 mailto:sage [2021/07/10(土) 18:38:29.97 ID:chyfa+iT.net] ありがとうございます。なるほど…! どこかでサンプルプログラムをコピペしつつ、ボタンはどうでもいいから とりあえず画像表示ループだけ回そうと適当かつ中途半場に行を削除してしまったので、 その結果イベント処理が進まない状態ということですね。 すごく良くわかりました。 どう処理するかよく考えて書き直してみます。
340 名前:デフォルトの名無しさん [2021/07/11(日) 08:30:07.56 ID:k6naGpL9.net] ユニークな長いリスト src があって おのれはユニークだけどsrcと重複しうるリスト reqがある reqの要素がひとつでもsrcにあれば云々したい 速いのを探しています。外部ライブラリは使えない test = set(req) bool([i for i in req if i in test]) ?
341 名前:デフォルトの名無しさん mailto:sage [2021/07/11(日) 09:23:01.16 ID:FD6lxZ3g.net] any()かfor-loopのearly breakを使う srcは長くて固定的、reqは短くて毎回変わるなら srcのほうをsetにして管理したほうがいい
342 名前:デフォルトの名無しさん [2021/07/11(日) 10:48:10.63 ID:k6naGpL9.net] いや冷静に考えたら フツーにset(src)&set(req)か
343 名前:デフォルトの名無しさん [2021/07/11(日) 10:50:02.39 ID:BLRKNf/m.net] 共通要素を全て調べ上げる必要が無いなら>>341 の方が速いな
344 名前:デフォルトの名無しさん mailto:sage [2021/07/11(日) 11:14:07.88 ID:k3ZSGeVZ.net] >>340 速いかどうかは知らん not set(src).isdisjoin(set(req))
345 名前:デフォルトの名無しさん [2021/07/11(日) 12:26:28.31 ID:k6naGpL9.net] >>341 set(src10万) req300 重複0〜5 ではany()と&はほぼ誤差 bool([i in set])がわずかに遅い感じでした センキュー
346 名前:デフォルトの名無しさん mailto:sage [2021/07/11(日) 12:57:32.61 ID:xAgoNPlJ.net] >>258 分かりやすい
347 名前:デフォルトの名無しさん mailto:sage [2021/07/11(日) 19:05:49.41 ID:akfEDp81.net] 違和感というのは[]を()のように捉えてるから リストや文字列に対する*は数学の掛け算とは無関係 要素数を増やせという機能 > [3*3] -> [9] 数学の掛け算 > [3]*3 -> [3, 3, 3] リスト内の要素3を数で3つに増やせ > [[3*3]] -> [[9]] 掛け算 > [[3]*3] -> [[3, 3, 3]] 内側のリストの要素3の数を3つに増やせ > [[3]]*3 -> [[3], [3], [3]] リストの要素[3]を3つに増やせ
348 名前:デフォルトの名無しさん mailto:sage [2021/07/11(日) 20:54:53.44 ID:yIl0mON7.net] どうした急に
349 名前:デフォルトの名無しさん mailto:sage [2021/07/11(日) 21:15:21.80 ID:BeeJLMuH.net] 発作よ お薬を忘れたみたいね
350 名前:デフォルトの名無しさん mailto:sage [2021/07/12(月) 00:05:06.94 ID:hfOyhNhX.net] サブクラスからスーパークラスのメソッドを呼び出す場合、次の@とAは同じ意味ですか? 同じならどちらで書いた方がいいとかありますか? class MyClass1: def __init__(self, name): self.name = name class MyClass2(MyClass1): def __init__(self, name): @ super().__init__(name) A MyClass1.__init__(self, name)
351 名前:デフォルトの名無しさん [2021/07/12(月) 00:29:53.14 ID:2Zpr4/N8.net] わざわざsuper というキーワードが用意されているのだから使わない理由ないだろ クラス名を変更した際の影響範囲を考えてみよう
352 名前:デフォルトの名無しさん mailto:sage [2021/07/12(月) 11:10:07.04 ID:4WArcuIG.net] >>350 その例だと同じだけど複数から継承するようなクラスを使う場合は super()が返すものが普通に想像するものとは違ってくるケースもあるので注意が必要 https://fuhm.net/super-harmful/
353 名前:デフォルトの名無しさん mailto:sage [2021/07/12(月) 19:50:10.58 ID:QV5M7VnV.net] >>347 数学と無関係ではないよ、加群としてとらえても矛盾のない演算になってるでしょ
354 名前:デフォルトの名無しさん mailto:sage [2021/07/12(月) 20:27:18.44 ID:HIUYKm1A.net] それは*3が同じものを3つ足し合わせなさいという 常識的な意味合いをわかりやすさのために利用してるだけで 数学的なことなら割り算もあるでしょ
355 名前:デフォルトの名無しさん mailto:sage [2021/07/12(月) 21:40:52.58 ID:4WArcuIG.net] 常識的な意味合いかぁ・・・ 演算子オーバーロードの悪い見本にしか見えない
356 名前:デフォルトの名無しさん mailto:sage [2021/07/13(火) 01:00:18.86 ID:o9TqNFAF.net] >>351 >>352 ありがとうございました ある本に説明もなく両方の記載があったので悩んでました この機会に多重継承も勉強しようと思います
357 名前:デフォルトの名無しさん mailto:sage [2021/07/13(火) 05:15:40.15 ID:eWSxSU0S.net] 数学っぽくやるなら [3]*3->[9] [1, 2]*3->[3, 6] のほうがより直感的だった気はする
358 名前:デフォルトの名無しさん mailto:sage [2021/07/13(火) 05:42:16.34 ID:QsXB5/qu.net] numpyはそうなってるね
359 名前:デフォルトの名無しさん [2021/07/13(火) 11:39:29.89 ID:Oq4/PEVt.net] pythonバージョン3.8.1で次のようなことをしようとしていますが、関数の配置に困っています。 次にするイベントを抽選する ↓ イベントを実行する ↓ イベント終了後にイベント抽選へ戻る しかし、これだとイベントを抽選する関数をイベントの関数より上に置くとイベント抽選の関数がイベントの関数を認識してくれず、 下に置くと、各イベントの関数がイベント抽選の関数を認識してくれません。 なんとか動かす方法はないものでしょうか?
360 名前:デフォルトの名無しさん [2021/07/13(火) 11:45:58.98 ID:uAPVX+Xy.net] 5chのこの板のAndroid版のスレタイトル一覧を取得したいのですが、スレタイトル部分だけ抜けてしまいます。 htmlを見ると、スレタイトル部分はjava scriptを呼び出して(?)表示しているようです。 このような別から呼び出す仕組みの検索語だけでも知りたいです。 実行環境はWindows10のcolabです。 何卒よろしくお願いします。 以下がソースとhtml抜粋です。 https://pastebin.com/dq4FFsM3
361 名前:デフォルトの名無しさん mailto:sage [2021/07/13(火) 11:52:22.48 ID:eWSxSU0S.net] 相互参照は常に避けるよう心がけるべき。 回避する方法はいろいろあるけど、 イベント抽選関数はイベントの関数に引数として渡してあげるとか、 イベントの関数はすべて同じ引数、戻り値にしておいて、イベント抽選システムへ予め登録しておく方式にするとか
362 名前:デフォルトの名無しさん mailto:sage [2021/07/13(火) 11:55:28.21 ID:I5G4+d/9.net] 知らんけどmain関数のなかにwhile True: 抽選関数() みたいにしてループさせて抽選されたイベント自体は抽選関数を呼ばなければいいだけじゃないの
363 名前:デフォルトの名無しさん mailto:sage [2021/07/13(火) 11:59:46.95 ID:0QNuXsy/.net] ttps://mevius.5ch.net/tech/subject.txt > スレタイトル一覧を取得したい > このような別から呼び出す仕組みの検索語だけでも知りたい どっち? スレタイ取得ならsubject.txt読ませればいいじゃん わざわざしかもitestのhtmlをスクレイピングする理由あるの?
364 名前:デフォルトの名無しさん [2021/07/13(火) 12:22:40.44 ID:WUJYnH4r.net] >>354-355 *3がどう展開されるかより もっと深刻な問題は [[?]]*Nの内側の[?]はコピーされていないということだろ
365 名前:デフォルトの名無しさん [2021/07/13(火) 12:24:59.10 ID:WUJYnH4r.net] >>359 前方参照でぐぐれ
366 名前:デフォルトの名無しさん [2021/07/13(火) 12:26:33.03 ID:WUJYnH4r.net] >>360 5chはスクレイピング禁止
367 名前:デフォルトの名無しさん mailto:sage [2021/07/13(火) 12:31:27.78 ID:QsXB5/qu.net] >>359 イベントの関数定義と、抽選・実行をする処理とはファイルを分けて 前者を後者のファイルでimportして使う 1ファイルでできなくもないけど モジュール分割を早めに覚えておいたほうが散らかりにくい
368 名前:デフォルトの名無しさん mailto:sage [2021/07/13(火) 12:43:35.25 ID:dtNqNBdW.net] >>360 Ruby, selenium-webdriver では、 execute_script で、そのまま、JavaScript ソースコードを実行できる ただし、5ch で頻繁にスクレイピングすると、アク禁にされるかも require "selenium-webdriver" options = Selenium::WebDriver::Chrome::Options.new options.add_option( :detach, true ) # ブラウザを切り放す options.add_argument( '--start-maximized' ) # 画面最大 driver = Selenium::WebDriver.for :chrome, options: options driver.manage.timeouts.implicit_wait = 15 # 要素の検索の timeout url = "サイトのURL" driver.navigate.to url # 移動する js_code = <<"EOT" var elem = document.getElementById( 'abc' ); EOT driver.execute_script js_code # JavaScript を実行
369 名前:368 mailto:sage [2021/07/13(火) 13:03:34.95 ID:dtNqNBdW.net] 5ch は最初に、空のHTML を送ってきてから、 その後、JavaScript(Ajax)で通信して、内容を取り込む だから単に、Ruby のNokogiri などでスクレイピングをしても、 空のHTML が取れるだけで、まだ内容が読み込まれていない だから、15秒ぐらいスリープして、内容が読み込まれるまで待つ必要がある または、selenium-webdriver で、ブラウザを自動操作して、 driver.manage.timeouts.implicit_wait = 15 # 要素の検索の timeout みたいに、要素が存在しない場合に、何秒待つか指定する
370 名前:359 [2021/07/13(火) 13:16:57.35 ID:Oq4/PEVt.net] ご回答ありがとうございました。 私があまりに初心者過ぎて、せっかくの具体的なご回答をほぼ理解できませんでしたが、 この状態を相互参照と呼ぶことが分かってようやくググることができ、 >>362 さんのレスから着想を得て、main関数を作ってプログラムを全部括れば動くということが判明しました。 以上ご報告と御礼申し上げます。
371 名前:360 [2021/07/13(火) 17:54:03.79 ID:28i3hfQd.net] >>368 ありがとうございます。 Ajaxという技術なのですね。 webdriverでwaitを入れたところ取得できました。 >>363 すいません説明不足でした。 実はPC版はシンプルなため取得できていました。 勉強のためにAndroid版も見てみようと思いやってみたところ、取得できなかったためお聞きしました。 皆様、勉強になりました。 ありがとうございました。
372 名前:デフォルトの名無しさん mailto:sage [2021/07/13(火) 18:33:25.76 ID:KwvhlQcy.net] >>354 そのツッコミをするなら、群と体の違いについて理解しようか。 掛け算があっても、割り算が必ずしも定義できるとは限らない。
373 名前:デフォルトの名無しさん mailto:sage [2021/07/13(火) 20:54:54.99 ID:4WrY8hy5.net] 何このruby基地外の自作自演 きっしょ
374 名前:デフォルトの名無しさん mailto:sage [2021/07/15(木) 02:12:23.66 ID:0WF/Cs9d.net] スクレイピングでrequestsで上手く取得できないサイトはSeleniumで取得するようにしてるんだけどこれにThreadPoolExecutorを使用するとしたらどういう書き方すればいいの 今までは複数のサイトのURLが入ったリストをfor文で回しつつif文でドメインが一致するかどうかでrequestsとSeleniumを使い分けていたけど非同期にするとなるとさっぱりわからん
375 名前:デフォルトの名無しさん mailto:sage [2021/07/15(木) 12:00:52.16 ID:Rdfymp1t.net] クラスのメンバをforループのように回す方法はないですか?イメージは、 class Test: a=0 b=0 c=0 def _print(self): for member in self: print(member) みたいなことをやりたいです。
376 名前:デフォルトの名無しさん mailto:sage [2021/07/15(木) 12:05:26.72 ID:erbvpp8v.net] __iter__か__getitem__を定義すればいけるはず
377 名前:デフォルトの名無しさん mailto:sage [2021/07/15(木) 12:46:48.66 ID:82cJAwkj.net] 試してないけど、 for v in vars(self): print(getatter(self, v))
378 名前:デフォルトの名無しさん [2021/07/15(木) 15:25:55.52 ID:ygp86UHP.net] https://docs.python.org/ja/3/library/inspect.html https://www.atmarkit.co.jp/ait/articles/1612/09/news030_3.html
379 名前:デフォルトの名無しさん [2021/07/15(木) 16:37:18.28 ID:0u9iXN8m.net] そういうクラスのためのdataclass astuple, asdictでイテレートもできる。 自分で用意できないクラスのオブジェクトの時は、dir()で列挙した後にごにょごにょしていく必要があるけど。
380 名前:デフォルトの名無しさん [2021/07/15(木) 16:50:42.66 ID:TtIRjd2i.net] この度pyinstallerでどのshell環境でも動作するコマンドを作成しました。 しかし5年前くらいのIntelMacでさえ快適に動作しますが、 M1macbookではかなりもっさりして遅いのです。 これはarm64アーキテクチャのせいで遅い可能性はありますか?? またこういったケースでの改善策などありますか?? arm64用にコンパイル方法などありましたら教えてください。 コマンドはスクレイピングした結果を別ファイルに落とす シンプルなコマンドです。 shellscriptだとちょい面倒だったのでpythonで書きました。
381 名前:デフォルトの名無しさん mailto:sage [2021/07/15(木) 20:50:47.41 ID:Rdfymp1t.net] ありがとうございますが、 >>377 だと順番が毎回ランダムになる >>378 だと順番がアルファベット順になる?(多分) csvの要素と対応付けたいので定義順に出てくれないと困ってしまうのです・・ >>379 はバージョン不足で不可。(3.5系) 1番目が順不定になるのも多分dictの順番が保持されてないせいだと思いますしやっぱり素直にアプデですかねぇ。。。こんな仕様にしたのほんとに誰ですか
382 名前:デフォルトの名無しさん mailto:sage [2021/07/15(木) 21:02:10.64 ID:gFOIdhYR.net] >>374 AWS なら、Lambda, SQS などを使えば?
383 名前:デフォルトの名無しさん mailto:sage [2021/07/15(木) 21:48:55.17 ID:NjXHl1NW.net] >>381 for v in sorted(vars(self))でどう?