[過去ログ] Pythonのお勉強 Part68 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
782(1): (ワッチョイ 1b3b-spp/) 2022/11/12(土)15:46 ID:AXYSbt7W0(1) AAS
メモ化する関数でラップ
頻発するならデコレータ書く
783: (ワッチョイ c597-AMkR) 2022/11/12(土)15:58 ID:pkT2sKDg0(1) AAS
>>756
廃れないよ。Webって広告で成り立っている基本人間向けの情報発信ツールなんだから、人間向けのデータ(文章とかね)のスクレイピングは依然として残る。
APIは有料というのは広告収入につながらないから割と当たり前の話で。
利益を目的としないデータ公開はオープンデータ化していくだろうけれど、そういうのって政府や自治体のデータ公開、大学などぐらいしか基本的にはないだろう。
784: (ワッチョイ a300-9aJV) 2022/11/12(土)15:59 ID:QoJFyqg+0(3/4) AAS
>>782
メモ化だと結果は再利用できますが、同時に待つことができないように思います。
785(1): (ワッチョイ a301-xL83) 2022/11/12(土)16:11 ID:2L2Z04CZ0(1) AAS
>>778
task = asyncio.create_task(async_fn())
result = await task
result = await task
786: (ワッチョイ a300-9aJV) 2022/11/12(土)17:58 ID:QoJFyqg+0(4/4) AAS
>>785
うまく行きました! ありがとうございます!
TaskというのがJavaScriptのPromiseみたいな事してくれるんですね!
787(1): (ワッチョイ cd02-EHNx) 2022/11/13(日)15:06 ID:mAjRS9pi0(1) AAS
なんでOpenCVはちょっとしたことでぶっ壊れるんですか?
788(2): 2022/11/13(日)19:56 ID:S7gZHHW/(1/3) AAS
_max=7
_min=3
a=2
if a>_max:
a=_max
elif a<_min:
a=_min
print(a)
これってもっとスマートに書けませんでしたっけ
789: 2022/11/13(日)20:10 ID:S7gZHHW/(2/3) AAS
ちなみに0を含む自然数で
range(_min,_max,1)
です
これの範囲外は判定できるのですが
_minより小さく外したのか、_maxより大きく外したのか
って一行で短く書けなかったかな、と。
記憶違いかもしれません、無かったような気がしてきました
790(3): (ワッチョイ 4b10-TWxH) 2022/11/13(日)20:12 ID:cgKyROyF0(1) AAS
a=max(min(a,_max),_min)
791: 2022/11/13(日)20:16 ID:S7gZHHW/(3/3) AAS
>>790
できました!!
そうですこれです!
_max=7
_min=3
for i in range(10):
print(i,max(min(i,_max),_min))
ありがとうございます!!
792: (ワッチョイ 4b89-SmiF) 2022/11/13(日)20:31 ID:J0JT7kUN0(1) AAS
>>787
それ依存関係が壊れてるからじゃね?
793: (ワッチョイ 6347-gR3A) 2022/11/13(日)20:32 ID:xH4HHaxN0(1/2) AAS
最近excelで、答えがマイナスなら0にする、という処理がめんどくさいと思ったけど、
max(0,x)でシンプルに書けた
794(1): (テテンテンテン MM4b-SGX1) 2022/11/13(日)20:47 ID:ZI0YVyVbM(1) AAS
>>790は一見何をやっているのか、やりたいのかわからんし
メンテナンス性が悪そうだ
>>788の方はわかるし改造しやすい
コードは短ければ良いというものではないな
795: (ワッチョイ 6347-gR3A) 2022/11/13(日)21:04 ID:xH4HHaxN0(2/2) AAS
やりたいことをまず自然言語で書く
minとmaxの範囲内ならそのまま出力
範囲外ならばminとmaxでガードする
これだけの情報量があるので、コードがそれなりの長さになって当然
796: (ワッチョイ 1563-rv4X) 2022/11/13(日)21:55 ID:tnJyg4LP0(1) AAS
コードゴルフは面白いけどコミットはしないで欲しい
797: (ワッチョイ a301-xL83) 2022/11/13(日)22:26 ID:0j2qr49h0(1) AAS
>>788
np.clip(array, _min, _max)
798: (ブーイモ MM69-AMkR) 2022/11/13(日)22:58 ID:6O/r8caVM(1/2) AAS
何がコードゴルフかはジャンルにもよるよなあ。シェーダーなんかだとminmaxみたいなのは常套句みたいなものだし、
pythonの内包表記もちょっと凝り出すとコードゴルフ的になる。コーディングガイドラインがあればいいけどね。
799: (ガックシ 064b-FE2V) 2022/11/13(日)23:21 ID:m9TsWVuY6(1) AAS
>>794
さすがにこのくらいはグラフ考えて分かってよ
800: (ブーイモ MM69-AMkR) 2022/11/13(日)23:47 ID:6O/r8caVM(2/2) AAS
まあ、minmaxの良くないところは、慌てて順番反転させたりする事故が起きると何もクリップしてくれなくなるところなんだけど(良く使うなら関数化しておくべき)
とはいえ、minmax的なのNGって、関数型言語全否定に近いものがあると思うんで、その立場でいいのかは考えるべきだと思うけど。
もちろん手続き型メインのPython使ってるんだからPythonではそんなのお門違いだという意見も否定はしないけど
801: (ワッチョイ 4b46-X/jP) 2022/11/14(月)00:16 ID:RdGM128m0(1) AAS
maxとminでもいいと思うけど
頻繁に使うならclamp(val,lo,hi)みたいな関数作ればいい
802(1): (ワッチョイ ad2c-WM47) 2022/11/14(月)02:35 ID:Msnzn9MH0(1) AAS
初コメです。質問させてください。
ウィジェットに、押すとnotepad.exeを起動するボタンを作ったのですが、起動したテキストに文字を書き込む(テンプレート)ボタンを作りたいのですが、どのようにすれば良いでしょうか…
803(1): (ワッチョイ 0509-BvCT) 2022/11/14(月)06:45 ID:gWXr0Wl00(1) AAS
>>802
PyAutoGUI
内容次第ではPythonやめてAutoItだけの方が楽
804: (ワッチョイ 6347-gR3A) 2022/11/14(月)08:17 ID:z4y/4erZ0(1/2) AAS
AutoItとかAutoHotKeyとかキーボードやマウスをプログラムから操作して
自動化するツールはいろいろあるけど、
どれが最強なのか今ひとつ判らない
簡単にする為に出来ることを減らしていたり、
いろいろできるけど言語仕様が原始的すぎたり
pythonと同じ書き方ができて出来ないことがないのが理想
805: (アウアウウー Saa9-FFna) 2022/11/14(月)11:56 ID:EWF0SvAna(1) AAS
対象のプログラムやウィンドウが背面に行ったり最小化されててもちゃんと動くかどうかで選べばいい
806(1): (アウアウウー Saa9-OAfI) 2022/11/14(月)12:07 ID:K3emCbowa(1) AAS
対象プログラムが背面にあっても動くってウインドウハンドルにSendMessageを直接送る感じ?
807: (オッペケ Src1-wjvv) 2022/11/14(月)13:25 ID:99fRleugr(1) AAS
windowsのアプリをバックグラウンドで起動して動かすようなのが出来たらなぁ
マウス取られるから他の作業できないんだよね
808: (ガックシ 0669-AMkR) 2022/11/14(月)15:23 ID:yiG7YfVR6(1) AAS
WindowsをVMに入れるか、リモートデスクトップ複数人ログイン対応のWindowsならフォアグラウンドでも実質バックグラウンドにできるから困らなさそうだ
Win32APIを直で叩きまくればバックグラウンドでも動かせるような気がしないでもないけど、イベント処理のメインループが回るかは謎だね。全然詳しくないや。
809(1): (ワッチョイ 2302-9fhR) 2022/11/14(月)21:26 ID:LuassWmg0(1) AAS
>>790 がメンテ性悪いとか言う人は
プログラマー向いてないと思うの
810(2): (ワッチョイ 6347-gR3A) 2022/11/14(月)21:33 ID:z4y/4erZ0(2/2) AAS
temp = min(input, upper_limit)
output = max(temp ,lower_limit)
これを合体させただけなんだけどな
811: (ワッチョイ 1b3b-spp/) 2022/11/14(月)21:55 ID:aUHlXgrZ0(1) AAS
関数化せずにインラインでそれ書いてきたらレビューでハネる
812: (ワッチョイ 2514-FE2V) 2022/11/14(月)21:57 ID:CWXyQGgF0(1) AAS
頻度次第
813(1): (ワッチョイ 2301-v+FM) 2022/11/14(月)22:11 ID:gxurLVtj0(1) AAS
>>809
まあ適宜空白入れろよとは思う
a = max(min(a, _max), _min)
814: (テテンテンテン MM4b-SGX1) 2022/11/14(月)22:20 ID:xHaIXgz6M(1) AAS
>>810
そもそもmaxの中にminがある時点で頭がおかしくなる俺の場合
815: (ワッチョイ 2379-zDZ1) 2022/11/14(月)22:25 ID:SUeRZblV0(1) AAS
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
こんな感じかな
どのみち、どう処理されるかは相手次第になってしまうけど
背面とか最小化とか、最悪トップに出てきたり
816(1): (ワッチョイ 4b10-TWxH) 2022/11/14(月)22:50 ID:dRHiUVHI0(1) AAS
>>813
それは自動整形機能の仕事で人間が気遣うことではない
817: (スップ Sd03-WM47) 2022/11/14(月)23:20 ID:XZXiqJkqd(1) AAS
>>803
pyautoguiで一歩進みました!ありがとうございます!
818(1): (ブモー MMeb-p9cw) 2022/11/15(火)01:47 ID:qykSWSRkM(1) AAS
>>810
その2行なら受け入れるけど合体させるのは意味はないじゃんって思うよ
819: (ワッチョイ 2363-H0Ic) 2022/11/15(火)01:54 ID:JTzzJATw0(1/3) AAS
関数名と変数名を工夫すれば良いと思う
_付けるだけでそれを区別するのはちょっと
820: (ワッチョイ c597-AMkR) 2022/11/15(火)01:57 ID:7joAI/8k0(1) AAS
>>818
それは、+=や、f.write(','.join([若干長い内包表記]))が許されるかみたいな話とも繋がっていて、
ぶっちゃけ何度も出て来ればこんな簡単なのは1行にしたくなると思うよ
内包表記だって1行で書きたいから書くって側面もあるわけじゃない。
821: (ワッチョイ 2301-v+FM) 2022/11/15(火)04:53 ID:Ohwd0nE10(1/2) AAS
>>816
掲示板に書く時におまえが気遣えよって言う指摘だぞw
822: (ワントンキン MMa3-OAfI) 2022/11/15(火)05:06 ID:9j9A/xThM(1) AAS
a = range_ni_osameru(_min, a, _max)
どや!
823(1): (ワッチョイ 2379-zDZ1) 2022/11/15(火)07:01 ID:+rxWDVlZ0(1) AAS
def range_ni_osameru(_min, a, _max):
return _min if a < _min else a if a < _max else _max
こうかな!
824: (アウアウウー Saa9-v+FM) 2022/11/15(火)07:23 ID:GEd0aXfXa(1) AAS
>>823
俺なら
return _min if a < _min else _max if _max < a else a
って書くかな
825: (ワッチョイ 6347-gR3A) 2022/11/15(火)07:58 ID:gBqAZwZY0(1/7) AAS
行数というよりは、中間の変数を登場させたくない
合体させるにしても、後ろに繋げていく方式とネストを深くしていく方式があって、
ネストだとどうしても可読性を損なう
826: (オッペケ Src1-wjvv) 2022/11/15(火)09:57 ID:8PAOVKkjr(1) AAS
普段可読性重視だけどリスト内包表記だけは速度変わりすぎるから超複雑にしちゃう
827(2): (ワッチョイ 6347-gR3A) 2022/11/15(火)10:05 ID:gBqAZwZY0(2/7) AAS
100倍変わるなら考えるけど、倍程度ならどうでもいい
828(1): (ワッチョイ a300-9aJV) 2022/11/15(火)10:09 ID:UuLVn12M0(1/3) AAS
内包表記も+=も三項演算子もlambdaも、(言語設計者に対して)日和って半端なもん入れてんじゃねーよって思う。
829: (ブーイモ MM69-fwKM) 2022/11/15(火)11:23 ID:kX2rkZkfM(1) AAS
lambdaは1.0からあったような
830: (アウアウウー Saa9-qc8G) 2022/11/15(火)11:40 ID:f326q+3ca(1) AAS
ごてごて書けるラムダを入れないのは良心を感じるけどなあ
831: (ガックシ 0669-AMkR) 2022/11/15(火)11:49 ID:Hm3rex5D6(1) AAS
>>827
処理時間がめちゃ長くて100倍速くしたいならそもそもCythonとか考える
処理時間ちょっとイラッとするぐらいだったら内包表記で倍速くなれば十分なので内包表記止まりかな
832: (ワッチョイ 05e0-spp/) 2022/11/15(火)12:21 ID:8tiGCKxN0(1) AAS
サンプルコードがlambdaで書かれがちなのもあって
その場で関数定義できるの知らずにごてごて書くケースよく見かける
悲しい
833: (ワッチョイ a300-9aJV) 2022/11/15(火)12:29 ID:UuLVn12M0(2/3) AAS
なるほどlambdaに関しては色々意見あるな。半端な知識で物言った俺が悪かったわ。
834: (テテンテンテン MM4b-Os9u) 2022/11/15(火)12:41 ID:LyOwpv5bM(1) AAS
ランバダはアローより判りやすいとは思う
835: (アウアウウー Saa9-hD5E) 2022/11/15(火)15:38 ID:0yW3pQONa(1) AAS
AA省
836: (アウアウウー Saa9-FFna) 2022/11/15(火)16:33 ID:QGmQMBHUa(1/2) AAS
>>827
30分かかるループの中心で何度も使われてたら
倍速になったら15分短縮出来るし
100分の1なら数秒で終わるんだが
837(1): (アウアウウー Saa9-FFna) 2022/11/15(火)16:35 ID:QGmQMBHUa(2/2) AAS
>>828
内包表記: あり
+=: あり
lambda: あり
三項演算子: お前は遺憾
838: (ワッチョイ 6347-gR3A) 2022/11/15(火)17:03 ID:gBqAZwZY0(3/7) AAS
とりあえず読みやすいように書いて、速度で困ったら考える
839: (ワッチョイ 4bcf-gPc0) 2022/11/15(火)21:46 ID:9SlnRoJw0(1/2) AAS
>>837 =
内包表記? あり
:+= ? あり
:lambda ?あり
:三項演算子?お前は遺憾
:以下略
ということですね
840: (ワッチョイ 6347-gR3A) 2022/11/15(火)21:56 ID:gBqAZwZY0(4/7) AAS
C言語とかの伝統的な三項演算子と違って、
pythonのはなかなかいけてると思うけど
841: (ワッチョイ a300-9aJV) 2022/11/15(火)21:57 ID:UuLVn12M0(3/3) AAS
他の言語なら三項演算子は大好きなんだけどPythonだと異物感がある
842: (ワッチョイ 4b10-TWxH) 2022/11/15(火)22:05 ID:1JRqHGzu0(1/2) AAS
並びが
(Trueの場合) (条件) (Falseの場合)
になるのが気に食わん
843: (ワッチョイ 4b10-S5Kl) 2022/11/15(火)22:26 ID:5Bygj+p/0(1) AAS
わかる
慣れだろうけどさ
844: (ワッチョイ 2301-v+FM) 2022/11/15(火)22:38 ID:Ohwd0nE10(2/2) AAS
英文的には違和感無いのかもしれないけどねぇ...
845(1): (ワッチョイ 6347-gR3A) 2022/11/15(火)22:47 ID:gBqAZwZY0(5/7) AAS
if <condition> then <val1> else <val2>
も英語として不自然さは無い
それを、?と:にするのは無理がある
冒頭からifで始まるとif文と区別が付かないので、少し倒置して、
<val1> if <condition> else <val2>
も一応文として読める
C言語よりはまし
846(1): (ワッチョイ 4bcf-gPc0) 2022/11/15(火)22:59 ID:9SlnRoJw0(2/2) AAS
通常のif文でも処理(結果)を先に書く新しい言語を作るか
847(1): (ワッチョイ 4b10-TWxH) 2022/11/15(火)23:05 ID:1JRqHGzu0(2/2) AAS
プログラミング言語に英文的な自然さとか求めて無いんだわ
読む順と評価順が入れ替わってんのがセンス無いと思う
848: (ワッチョイ 6347-gR3A) 2022/11/15(火)23:08 ID:gBqAZwZY0(6/7) AAS
処理をifで修飾するというのは既にある
elseは知らん
849: (ワッチョイ 2363-H0Ic) 2022/11/15(火)23:10 ID:JTzzJATw0(2/3) AAS
~よりはましって、自信がないみたいな感じ
850: (ワッチョイ 6347-gR3A) 2022/11/15(火)23:17 ID:gBqAZwZY0(7/7) AAS
C言語よりは遥かにましである、ふはははは
851: (ワッチョイ 2363-H0Ic) 2022/11/15(火)23:20 ID:JTzzJATw0(3/3) AAS
そうする合理的理由を説明すれば納得するものじゃないの?
そういうのを聞きたいんだよ
852: (ワッチョイ 2302-gPc0) 2022/11/16(水)02:18 ID:+BRGBknF0(1) AAS
英語だと if が後置されることもあるからなあ
内包表現は数学の集合の書き方からすれば普通
ラムダは lisp のラムダ関数から考えれば普通
一応理屈はあるけど
853: (ワッチョイ 0509-BvCT) 2022/11/16(水)06:47 ID:hZtfMd7O0(1) AAS
三項演算子だけじゃなくて、Perlみたいに後置ifを実装してれば違和感ないんだろうね
(Trueの場合) if (条件)
Falseの場合はなにもしないけど、Pythonだとpassがあるから三項演算子だけで十分って判断かな
854(1): (ワッチョイ a300-5Hvp) 2022/11/16(水)07:48 ID:Mu0tRvhG0(1) AAS
そうか結構、式である三項演算子や内包表記やlambdaも受け入れられてるんだなぁ。そうなるとなんでmatchを式にしなかったのか。コレガワカラナイ
855: (ブモー MMeb-p9cw) 2022/11/16(水)08:23 ID:kn7mTN5OM(1) AAS
>>847
これ正解
856: (ワッチョイ 4bcf-H0Ic) 2022/11/16(水)08:33 ID:16ZvLDN40(1) AAS
後置ifは文だから値を返す必要がない(=elseは不要)。三項演算子は式だから値を返すのに必要。
なんでこの2つを混ぜたような文法にしたのかなんとも不思議。
857: (アウアウウー Saa9-89mF) 2022/11/16(水)10:19 ID:8bWIhcn5a(1/2) AAS
どこが変なのかわからん
俺の英語スキルが高杉なせいか…
858: (ワッチョイ 0557-spp/) 2022/11/16(水)11:29 ID:hZGrSsPO0(1) AAS
lambdaといっしょでゴチャゴチャ書きづらいのが良心
実際は構文解析が楽だとか余計な()が不要とかあるんだろうけど
859: (アウアウウー Saa9-+rXr) 2022/11/16(水)11:35 ID:OkTwZqPda(1) AAS
lambda calculus のif then else combinatorの語順やろ
外部リンク:ja.m.wikipedia.org
860: (ワッチョイ 6347-gR3A) 2022/11/16(水)11:56 ID:g3qERw/e0(1) AAS
lambdaは綴りが覚えられないから嫌だ
861: (アウアウウー Saa9-89mF) 2022/11/16(水)12:13 ID:8bWIhcn5a(2/2) AAS
ランバダっておぼえとけ
862: (ブーイモ MM69-fwKM) 2022/11/16(水)12:27 ID:U3lBmIjhM(1) AAS
全部英単語でつなげるから、エディタで色変えたとしても見づらいってのはすごく感じる
863: (アウアウウー Saa9-FFna) 2022/11/16(水)17:37 ID:z+sJwdsYa(1/3) AAS
>>846
uby
864: (アウアウウー Saa9-FFna) 2022/11/16(水)17:39 ID:z+sJwdsYa(2/3) AAS
>>845
findall で解決
865: (アウアウウー Saa9-FFna) 2022/11/16(水)17:39 ID:z+sJwdsYa(3/3) AAS
アンカ間違ってた >>854
866(1): (ワッチョイ 6347-gR3A) 2022/11/17(木)17:09 ID:HF5V3LeY0(1/5) AAS
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}だと想定と違う
なんで?
867: (ワッチョイ 237e-AMcT) 2022/11/17(木)17:18 ID:AwlB4ADs0(1) AAS
そりゃ、想定が間違えているから、以外になんか考えられるのかい?
何を想定していてどうなったかも説明しないで、想定と違う!って
言われてもね、人に説明する気も無けりゃ教えを乞う態度でもないし
何したいの?日記ならよそでやってくれる?
868: (ワッチョイ 05cd-spp/) 2022/11/17(木)17:57 ID:WlhESVTj0(1) AAS
>>> f'{s}(¥d{2})'
'bc(¥d2)'
869: (ワッチョイ 15cf-gPc0) 2022/11/17(木)18:01 ID:F2Az3Gmh0(1) AAS
インデントが全角スペースなのが全てを表してる
870: (ワッチョイ 6347-gR3A) 2022/11/17(木)18:02 ID:HF5V3LeY0(2/5) AAS
f文字列の中で{m,n}を使うにはどうすれば
871: (ワッチョイ dd08-G/DK) 2022/11/17(木)18:20 ID:OILH8ycX0(1) AAS
口のきき方覚えてから出直せ
872: (ワッチョイ ed02-OAfI) 2022/11/17(木)18:28 ID:qm+2WY7I0(1) AAS
まあまあ、お勉強スレなんだし未熟者同士で問題解決していくスタンスで良いんじゃないの
873(1): (ワッチョイ a301-xL83) 2022/11/17(木)18:31 ID:p1aORMOX0(1) AAS
そんなイライラしなくても{{´·ω·`}}
874: (ワッチョイ 6347-gR3A) 2022/11/17(木)18:42 ID:HF5V3LeY0(3/5) AAS
>>873
できた
875: (ワッチョイ cb68-Os9u) 2022/11/17(木)19:51 ID:SY2MYyO/0(1) AAS
f文字列で¥とか/区切りの一部だけを取るような事出来ないのかな?
splitしてスライスで取るのはどうも好かん
876(1): (ワッチョイ c533-BvCT) 2022/11/17(木)21:45 ID:SeoZPm6s0(1) AAS
AA省
877(1): (ワッチョイ 6347-gR3A) 2022/11/17(木)21:54 ID:HF5V3LeY0(4/5) AAS
それも必要悪だな
貼った先が無くなった後でログを見た人に何の知見も残せない
878: (US 0Ha3-XgLS) 2022/11/17(木)23:08 ID:kmneQuTyH(1/2) AAS
>>876
>デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。
一回 python を選択すれば、あとはずっと選択したpythonのままになりますよ
879: (US 0Ha3-XgLS) 2022/11/17(木)23:09 ID:kmneQuTyH(2/2) AAS
>>877
いまのところ ideone はずっと消えずに残っていますよ
2chスレ:tech
880: (ワッチョイ 2363-H0Ic) 2022/11/17(木)23:12 ID:lsW0mIad0(1/2) AAS
何年くらい残れば良いんですかい?
881: (ワッチョイ 6347-gR3A) 2022/11/17(木)23:18 ID:HF5V3LeY0(5/5) AAS
外部を利用する根拠がインデントの崩壊だけなら、崩壊していないのだから不要
なるべく単体で完結していた方がいい
コードが長いとか、修正後のコードと比較したいとかになると、
さすがに掲示板の機能を超える
上下前次1-新書関写板覧索設栞歴
あと 121 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.021s