Pythonのお勉強 Part68
■ このスレッドは過去ログ倉庫に格納されています
!extend:default:vvvvv:1000:1024 !extend:default:vvvvv:1000:1024 ↑スレ立てる毎に減るので、減ってたら3つに補充すること。 ・当スレにRubyのソースコード類を書くことを禁ず ・Ruby等、Pythonではないプログラミング言語での回答類・質問を書くのも禁止 ・「Ruby では」「Rubyでは」「Rails」正規表現→「^クソチョンw$」をNGワード登録推奨 ・エラーを解決したいときは、かならず エラー文(勝手に省略orスクショうp等の横着禁止)と おま環(Pythonのバージョン番号+OS名とバージョン+IDE名)を書け。 ★Pythonのソースコードを5ちゃんに直貼はインデントが崩壊するので、 ↓等のコードうp用サイトに貼ってきてくだしあ。(スクリーンショットをうpる「横着」禁止) ttps://techiedelight.com/compiler/ Run Code機能あり。 ttp://ideone.com/ デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。 ttp://pastebin.com/ まずまずシンプル。 ttp://dpaste.com/ とてもシンプル。消えるまでの日数は十分長ーく指定のこと。 ◇Pythonオフィシャルサイト http://www.python.org/ ◇Pythonドキュメント https://docs.python.org/ja/3/ ◇まとめwiki ttp://python.rdy.jp/ ●関連スレ● 自称初心者は↓へ 【まず1嫁】くだすれPython(超初心者用) その57 http://mevius.5ch.net/test/read.cgi/tech/1653225908/ 〇前スレ〇 Pythonのお勉強 Part67 https://mevius.5ch.net/test/read.cgi/tech/1653540315/ 次スレの建立は>>985 が挑戦する。(980通過して24h後も落ちなくなった) ### END of TEMPLATE ### VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
>>756 廃れないよ。Webって広告で成り立っている基本人間向けの情報発信ツールなんだから、人間向けのデータ(文章とかね)のスクレイピングは依然として残る。 APIは有料というのは広告収入につながらないから割と当たり前の話で。 利益を目的としないデータ公開はオープンデータ化していくだろうけれど、そういうのって政府や自治体のデータ公開、大学などぐらいしか基本的にはないだろう。 >>782 メモ化だと結果は再利用できますが、同時に待つことができないように思います。 >>778 task = asyncio.create_task(async_fn()) result = await task result = await task >>785 うまく行きました! ありがとうございます! TaskというのがJavaScriptのPromiseみたいな事してくれるんですね! なんでOpenCVはちょっとしたことでぶっ壊れるんですか? _max=7 _min=3 a=2 if a>_max: a=_max elif a<_min: a=_min print(a) これってもっとスマートに書けませんでしたっけ ちなみに0を含む自然数で range(_min,_max,1) です これの範囲外は判定できるのですが _minより小さく外したのか、_maxより大きく外したのか って一行で短く書けなかったかな、と。 記憶違いかもしれません、無かったような気がしてきました >>790 できました!! そうですこれです! _max=7 _min=3 for i in range(10): print(i,max(min(i,_max),_min)) ありがとうございます!! 最近excelで、答えがマイナスなら0にする、という処理がめんどくさいと思ったけど、 max(0,x)でシンプルに書けた >>790 は一見何をやっているのか、やりたいのかわからんし メンテナンス性が悪そうだ >>788 の方はわかるし改造しやすい コードは短ければ良いというものではないな やりたいことをまず自然言語で書く minとmaxの範囲内ならそのまま出力 範囲外ならばminとmaxでガードする これだけの情報量があるので、コードがそれなりの長さになって当然 >>788 np.clip(array, _min, _max) 何がコードゴルフかはジャンルにもよるよなあ。シェーダーなんかだとminmaxみたいなのは常套句みたいなものだし、 pythonの内包表記もちょっと凝り出すとコードゴルフ的になる。コーディングガイドラインがあればいいけどね。 >>794 さすがにこのくらいはグラフ考えて分かってよ まあ、minmaxの良くないところは、慌てて順番反転させたりする事故が起きると何もクリップしてくれなくなるところなんだけど(良く使うなら関数化しておくべき) とはいえ、minmax的なのNGって、関数型言語全否定に近いものがあると思うんで、その立場でいいのかは考えるべきだと思うけど。 もちろん手続き型メインのPython使ってるんだからPythonではそんなのお門違いだという意見も否定はしないけど maxとminでもいいと思うけど 頻繁に使うならclamp(val,lo,hi)みたいな関数作ればいい 初コメです。質問させてください。 ウィジェットに、押すとnotepad.exeを起動するボタンを作ったのですが、起動したテキストに文字を書き込む(テンプレート)ボタンを作りたいのですが、どのようにすれば良いでしょうか… >>802 PyAutoGUI 内容次第ではPythonやめてAutoItだけの方が楽 AutoItとかAutoHotKeyとかキーボードやマウスをプログラムから操作して 自動化するツールはいろいろあるけど、 どれが最強なのか今ひとつ判らない 簡単にする為に出来ることを減らしていたり、 いろいろできるけど言語仕様が原始的すぎたり pythonと同じ書き方ができて出来ないことがないのが理想 対象のプログラムやウィンドウが背面に行ったり最小化されててもちゃんと動くかどうかで選べばいい 対象プログラムが背面にあっても動くってウインドウハンドルにSendMessageを直接送る感じ? windowsのアプリをバックグラウンドで起動して動かすようなのが出来たらなぁ マウス取られるから他の作業できないんだよね WindowsをVMに入れるか、リモートデスクトップ複数人ログイン対応のWindowsならフォアグラウンドでも実質バックグラウンドにできるから困らなさそうだ Win32APIを直で叩きまくればバックグラウンドでも動かせるような気がしないでもないけど、イベント処理のメインループが回るかは謎だね。全然詳しくないや。 >>790 がメンテ性悪いとか言う人は プログラマー向いてないと思うの temp = min(input, upper_limit) output = max(temp ,lower_limit) これを合体させただけなんだけどな 関数化せずにインラインでそれ書いてきたらレビューでハネる >>809 まあ適宜空白入れろよとは思う a = max(min(a, _max), _min) >>810 そもそもmaxの中にminがある時点で頭がおかしくなる俺の場合 import ctypes SendMessage = ctypes.windll.user32.SendMessageW hWnd = ごにょごにょ pos = (y << 16) + x SendMessage(hWnd, 513, 0, pos) # WM_LBUTTONDOWN SendMessage(hWnd, 514, 0, pos) # WM_LBUTTONUP >>806 こんな感じかな どのみち、どう処理されるかは相手次第になってしまうけど 背面とか最小化とか、最悪トップに出てきたり >>813 それは自動整形機能の仕事で人間が気遣うことではない >>803 pyautoguiで一歩進みました!ありがとうございます! >>810 その2行なら受け入れるけど合体させるのは意味はないじゃんって思うよ 関数名と変数名を工夫すれば良いと思う _付けるだけでそれを区別するのはちょっと >>818 それは、+=や、f.write(','.join([若干長い内包表記]))が許されるかみたいな話とも繋がっていて、 ぶっちゃけ何度も出て来ればこんな簡単なのは1行にしたくなると思うよ 内包表記だって1行で書きたいから書くって側面もあるわけじゃない。 >>816 掲示板に書く時におまえが気遣えよって言う指摘だぞw a = range_ni_osameru(_min, a, _max) どや! def range_ni_osameru(_min, a, _max): return _min if a < _min else a if a < _max else _max こうかな! >>823 俺なら return _min if a < _min else _max if _max < a else a って書くかな 行数というよりは、中間の変数を登場させたくない 合体させるにしても、後ろに繋げていく方式とネストを深くしていく方式があって、 ネストだとどうしても可読性を損なう 普段可読性重視だけどリスト内包表記だけは速度変わりすぎるから超複雑にしちゃう 100倍変わるなら考えるけど、倍程度ならどうでもいい 内包表記も+=も三項演算子もlambdaも、(言語設計者に対して)日和って半端なもん入れてんじゃねーよって思う。 ごてごて書けるラムダを入れないのは良心を感じるけどなあ >>827 処理時間がめちゃ長くて100倍速くしたいならそもそもCythonとか考える 処理時間ちょっとイラッとするぐらいだったら内包表記で倍速くなれば十分なので内包表記止まりかな サンプルコードがlambdaで書かれがちなのもあって その場で関数定義できるの知らずにごてごて書くケースよく見かける 悲しい なるほどlambdaに関しては色々意見あるな。半端な知識で物言った俺が悪かったわ。 Pythonやるならまず「多重継承」な! なぜ多重継承かというと、自然言語処理において語句の意味は「文脈」によって異なるからだ! 随意筋 不随意筋 ↖ ↗ チンポ チンコの随意筋と不随意筋 http://d.hatena.ne.jp/tottokotokoroten/20130516/1368716650 https://mobile.twitter.com/daikidomon/status/1385368820240437248 土門大貴/Daiki Domon @daikidomon Pythonの多重継承がわかりづらい。 継承クラスの左のクラス名を指定とかあたおか。 https://twitter.com/5chan_nel (5ch newer account) >>827 30分かかるループの中心で何度も使われてたら 倍速になったら15分短縮出来るし 100分の1なら数秒で終わるんだが >>828 内包表記: あり +=: あり lambda: あり 三項演算子: お前は遺憾 とりあえず読みやすいように書いて、速度で困ったら考える >>837 = 内包表記? あり :+= ? あり :lambda ?あり :三項演算子?お前は遺憾 :以下略 ということですね C言語とかの伝統的な三項演算子と違って、 pythonのはなかなかいけてると思うけど 他の言語なら三項演算子は大好きなんだけどPythonだと異物感がある 並びが (Trueの場合) (条件) (Falseの場合) になるのが気に食わん if <condition> then <val1> else <val2> も英語として不自然さは無い それを、?と:にするのは無理がある 冒頭からifで始まるとif文と区別が付かないので、少し倒置して、 <val1> if <condition> else <val2> も一応文として読める C言語よりはまし 通常のif文でも処理(結果)を先に書く新しい言語を作るか プログラミング言語に英文的な自然さとか求めて無いんだわ 読む順と評価順が入れ替わってんのがセンス無いと思う 処理をifで修飾するというのは既にある elseは知らん そうする合理的理由を説明すれば納得するものじゃないの? そういうのを聞きたいんだよ 英語だと if が後置されることもあるからなあ 内包表現は数学の集合の書き方からすれば普通 ラムダは lisp のラムダ関数から考えれば普通 一応理屈はあるけど 三項演算子だけじゃなくて、Perlみたいに後置ifを実装してれば違和感ないんだろうね (Trueの場合) if (条件) Falseの場合はなにもしないけど、Pythonだとpassがあるから三項演算子だけで十分って判断かな そうか結構、式である三項演算子や内包表記やlambdaも受け入れられてるんだなぁ。そうなるとなんでmatchを式にしなかったのか。コレガワカラナイ 後置ifは文だから値を返す必要がない(=elseは不要)。三項演算子は式だから値を返すのに必要。 なんでこの2つを混ぜたような文法にしたのかなんとも不思議。 どこが変なのかわからん 俺の英語スキルが高杉なせいか… lambdaといっしょでゴチャゴチャ書きづらいのが良心 実際は構文解析が楽だとか余計な()が不要とかあるんだろうけど 全部英単語でつなげるから、エディタで色変えたとしても見づらいってのはすごく感じる import re str = 'abc123456defg' s = 'bc' m = re.search(f'{s}(\d{2})', str) if m: print(m.groups()[0]) \d{2}だと12が表示される \d{1}とか\d{6}だと想定と違う なんで? そりゃ、想定が間違えているから、以外になんか考えられるのかい? 何を想定していてどうなったかも説明しないで、想定と違う!って 言われてもね、人に説明する気も無けりゃ教えを乞う態度でもないし 何したいの?日記ならよそでやってくれる? >>> f'{s}(¥d{2})' 'bc(¥d2)' まあまあ、お勉強スレなんだし未熟者同士で問題解決していくスタンスで良いんじゃないの f文字列で¥とか/区切りの一部だけを取るような事出来ないのかな? splitしてスライスで取るのはどうも好かん >>1 >>866 > ★Pythonのソースコードを5ちゃんに直貼はインデントが崩壊するので、 > ↓等のコードうp用サイトに貼ってきてくだしあ。(スクリーンショットをうpる「横着」禁止) > ttps://techiedelight.com/compiler/ Run Code機能あり。 > ttp://ideone.com/ デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。 > ttp://pastebin.com/ まずまずシンプル。 > ttp://dpaste.com/ とてもシンプル。消えるまでの日数は十分長ーく指定のこと。 それも必要悪だな 貼った先が無くなった後でログを見た人に何の知見も残せない >>876 >デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。 一回 python を選択すれば、あとはずっと選択したpythonのままになりますよ 外部を利用する根拠がインデントの崩壊だけなら、崩壊していないのだから不要 なるべく単体で完結していた方がいい コードが長いとか、修正後のコードと比較したいとかになると、 さすがに掲示板の機能を超える ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる