Pythonのお勉強 Part74

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 0b4a-lz98)
垢版 |
2024/09/21(土) 10:14:02.15ID:ZHy4g+PL0
!extend:default:vvvvv:1000:1024
!extend:default:vvvvv:1000:1024
↑スレ立てる毎に減るので、減ってたら3つに補充すること。

※前スレ
Pythonのお勉強 Part73
https://mevius.5ch.net/test/read.cgi/tech/1717631290/
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
499デフォルトの名無しさん (ワッチョイ dbad-JGez)
垢版 |
2025/01/04(土) 01:01:54.24ID:PFHZ5xFT0
True Typeフォントの使う文字の座標系を引っ張りだしてきて
その最小と最大の座標を取得して、フォントサイズのポイント相当のドット幅を計算する
使うすべての文字を1文字ずつ計算
って やればできるが現実的でない...よね
単純に 12ポイントが16x16ドットで計算するとか
2025/01/04(土) 01:21:50.54ID:M4FF0WkE0
カーニングとか考えないならそうなんだろうな
501デフォルトの名無しさん (アウアウエー Sa52-fscC)
垢版 |
2025/01/04(土) 10:12:43.18ID:9AJmtK0Pa
>>498
Windowsなら表示される文字列全体の表示幅を還すAPIがあるのでそれを使う
pythonだけで適当にやるなら実際に描画する前に表示されないメモリDCに先に描画して
背景と比較してどこまで描画されたかを調べて表示幅を取得すれば良いんじゃね
502デフォルトの名無しさん (スプッッ Sdca-Qywu)
垢版 |
2025/01/12(日) 00:27:05.77ID:dTcIHoiJd
角括弧[T]構文とかなんか汚ねえな
ジェネリックだのアノテーション方面から汚れてきてるな
すでにPerlより汚いのでは
前方参照とか__init__()だの
2025/01/12(日) 20:36:54.45ID:jie/PZI00
内包表記の書き方は覚えてても、内包表記という名称をいつも忘れる
504デフォルトの名無しさん (アウアウウー Sa91-HZB4)
垢版 |
2025/01/13(月) 13:34:17.99ID:g4/CTboDa
うbyよりはマシだよ
2025/01/13(月) 18:30:48.03ID:yjxCA/ti0
comprehensionの、もっと良い訳はなかったのか
2025/01/13(月) 18:40:00.54ID:2a7ZU6nP0
python初めて触れたけど、インデントが判断、ループブロックの意味を持つってクソすぎだろw
やっぱ、レス見ると同じ様に思ってる奴多いな。
どうしてこうなったw
2025/01/13(月) 20:43:50.82ID:0Vj63HhM0
インデント自体はクソだけど平易に書くように働く点で有能
そういう要素が多い
lambdaもそうでdefで書くようになる
2025/01/13(月) 21:00:08.60ID:S0OuVEz70
行内ではフリーフォーマットだけど、行頭のインデントだけは厳密
という態度豹変に面食らうんだよな

まあ、インデント間違ってても許される言語の方が実害多い
509デフォルトの名無しさん (ワッチョイ 862a-Zdzc)
垢版 |
2025/01/14(火) 08:11:01.41ID:SrCf5X7D0
>>508
> 行内ではフリーフォーマット

がよく分からない。
2025/01/14(火) 08:32:04.72ID:KhgfrG4BM
カラム位置まで指定されている RPGとかを想定しているんじゃね?
しらんけど
511デフォルトの名無しさん (ワッチョイ 1dae-fuva)
垢版 |
2025/01/14(火) 14:34:05.45ID:i6PsXw8T0
Pythonでスクレイピングの質問よろしいでしょうか。

IPローテーションでインスタライブの情報を取得したいと考えています。
かつて、PythonでInstagramの非公開APIに繰り返しアクセスし、インスタライブの配信情報を取得していましたが、IPブロックのせいか前述の方法でアクセスできなくなりました。
bright dataのような有料サービスを利用し、IPローテーションでアクセスを試みたいのですが、Instagram関連のAPIに有効でしょうか。

お試しされた方がいらっしゃたら、コメントいただけると幸いです。
2025/01/14(火) 15:00:45.78ID:pTMFifAu0
アクセス制限されたなら使うべきじゃないんでは
大陸人の思想だな
2025/01/14(火) 15:52:41.71ID:49OmJo2t0
別に大陸とか関係なくクズはクズよ
最低賃金の仕事してからそう思うようになったわ
話がそれたけどブロックされてるならただのクラッキングだから辞めとけってのが答え
2025/01/14(火) 15:53:47.83ID:49OmJo2t0
クラッキングだから辞めとけ
2025/01/14(火) 19:43:05.09ID:VlX9UfuO0
堂々と違法行為の相談するとかおそろしい
2025/01/14(火) 19:50:11.75ID:6TReUIVg0
IPローテーションが有効かどうかはpython関係ないしな
517デフォルトの名無しさん (スップ Sdca-Qywu)
垢版 |
2025/01/14(火) 20:04:54.54ID:4a6i7DXld
今後はblackみたいな完全に機械的なフォーマットに従って書くようになっていくんだろ
ぱいちょんって
2025/01/16(木) 08:53:44.52ID:vHBJCVRy0
とはいえ皆カスタムするから結局バラバラなフォーマットになる
デフォルトの1行88文字制限とかアホすぎるし
2025/01/17(金) 10:42:50.01ID:w4z8H3gJ0
今更だが、本屋のコンピュータ関連書籍のトコ、
Python入門書が狂い咲きだね。
敷居が低くなるのは良い事だけど。
520デフォルトの名無しさん (ワッチョイ 862a-Zdzc)
垢版 |
2025/01/17(金) 10:53:59.70ID:eoeaxZuy0
>>519
君も著作したまえ。内容なんてどれもチュートリアル丸写しだ。
2025/01/17(金) 11:09:19.33ID:lUhfcPef0
リスト内包表記は数学の集合の内包的表記から来ている
内包的表記は外延的表記と対になる概念で、要素を列挙するか、要素の特徴で表すかの違い
内包的表記は定義域と命題関数から構成される
{x∈R | 2x}
こう書くと定義域がRで、命題関数が2x
Rに含まれるxに対して、2xで評価されるもので構成される集合

同じことをリスト内包表記で書くと、
[2*x for x in R]
になる
定義域と命題関数の順序が逆なのは、'for' というキーワードの意味と合わせる為だろう
2025/01/17(金) 11:41:18.37ID:lUhfcPef0
仮に数学と同じ順序で書くと
[x in R | 2*x]
[x in R such that 2*x]
[x in R s.t. 2*x]
こんな感じになっていただろう
言語仕様として微妙なので却下したけれど、
such that抜きでいきなり命題関数が現れるので、読んでも意味が判らなくなった
2025/01/17(金) 14:52:11.51ID:lUhfcPef0
2*xといきなり書く時点でxは初登場なので、普通に考えるとNameErrorになる
後で出てくるx in Rのxだよと言われても、そこだけ文法が歪んでいる
for x in R に対して 2*xのリストを作る、という順序で読めた方が明らかに判りやすい
2025/01/17(金) 16:46:49.13ID:Ik5FlFRf0
間違い。命題関数ってのは平たく言えば条件のことで、Pythonの内包表記のif節に相当する。
例えば [2*x for x in R if x < 5] は数学の内包表記では {2*x | x ∈ R, x < 5} と表記する。同じだろ?
2025/01/18(土) 08:37:19.38ID:naGWW37A0
seleniumはパスワードとかcookieを保存するとかより、
profileそのものを保持した方が無敵だったけど、
何かの拍子にprofile無効になっちゃうな
2025/01/18(土) 10:43:38.07ID:0UqLKpkd0
いまさら selenium
527デフォルトの名無しさん (ワッチョイ bef1-B4N5)
垢版 |
2025/01/18(土) 16:09:23.54ID:wtp0JU6d0
英文テキストを入力として,ロンゲストマッチ,というか,最長の部分列を探すプログラムを書きたいのだが,CだとPrograming Pearlsのコラム15にあるのでいいのだが,そのままだとpythonに乗らないし,何かいい方法はないかなあ.
2025/01/18(土) 16:19:53.66ID:FL3+FJ2v0
いうほどいまさらか?
なんかいい代わりになるものある?
2025/01/18(土) 16:30:43.24ID:BqhOY8myM
>>527
それそのまんまAIに聞けばいいよ
手元でGemini 2.0 Experimental Advancedに聞いてみたら見事な回答をくれたぞ
2025/01/18(土) 16:38:42.51ID:8uvwUc2N0
課金できないんだろ
察してやれ
2025/01/18(土) 17:32:09.61ID:vWHjWIZo0
>>528
Playwright とか?
2025/01/18(土) 19:20:33.75ID:FL3+FJ2v0
>>531
良さそうだな
試してみるわ
533デフォルトの名無しさん (ワッチョイ 43ad-4fJb)
垢版 |
2025/01/19(日) 00:35:41.94ID:WuaBvw6S0
文字列なんて、正規表現を使えば、最長一致・最短一致なんて簡単にできるのでは?
2025/01/19(日) 00:58:15.54ID:GNlIXdkj0
単純に文字列を探すなら最長も何もない訳で
最長と言ってる時点で正規表現のワイルドカードが前提なのでは
2025/01/19(日) 01:07:38.45ID:aE0XKMyP0
2つの文字列に共通する最長の部分文字列を探すやつでしょ
2025/01/19(日) 01:20:41.36ID:npat2aPV0
find the longest duplicated substringってやつでしょ
Programming Pearlsの一番簡単な例でいくと“Ask not what your country can do for you, but what you can do for your country”という文字列なら”can do for you”が答え
2025/01/19(日) 18:08:17.85ID:LhzIGXPA0
ここで質問するのとgeminiとかcopilotに質問すんのどっちが効率いいかな?
2025/01/19(日) 18:20:45.02ID:GNlIXdkj0
そもそも質問スレではない
539デフォルトの名無しさん (ワッチョイ cf2a-wVPw)
垢版 |
2025/01/19(日) 18:42:00.94ID:QRrLEXGb0
お勉強スレで質問するなとは無理すぎ。
2025/01/20(月) 01:08:32.20ID:BsvendGF0
pyscriptって最近どうなの?
js苦手だから当初は期待してたんだけど
2025/01/20(月) 15:05:27.82ID:7WH6y8fWM
最近もクソも今も昔もこれからもオモチャであり実用するようなものではない
js書きたくないならpythonで書いて翻訳してもらえばよい
2025/01/20(月) 20:50:18.86ID:uBkCdSeR0
その手のは大体アホが始めてやってるうちにアホらしくなって開発が止まる
Jythonとかね
2025/01/20(月) 21:03:17.22ID:6bfYmu3O0
pythonで書くのは簡単に書きたいという要求があると思うけど、
簡単に書きたいと厳密に書きたいは相反するので、
大抵は徒花言語として散っていくんだよな

pythonが意外と厳密な用途にも使えるのは、バランスが良かったのだろう
544デフォルトの名無しさん (ワッチョイ a3dc-rbLX)
垢版 |
2025/01/20(月) 22:50:09.23ID:08Nyz7B30
簡単に書けない言語って何?
2025/01/20(月) 22:55:39.50ID:6bfYmu3O0
C++
546デフォルトの名無しさん (アウアウウー Saa7-C2Lh)
垢版 |
2025/01/21(火) 08:23:31.58ID:yRL5l1cZa
rubyっぽい文法が売りのナントカとscriptでjsにするのもあったな
名前も忘れちゃったよ
547デフォルトの名無しさん (アウアウウー Saa7-C2Lh)
垢版 |
2025/01/21(火) 08:25:23.93ID:yRL5l1cZa
coffeescriptだ思い出した
2025/01/21(火) 11:52:18.11ID:gA/FmHct0
>>543
はえ~勉強になるぅ
549デフォルトの名無しさん (ワッチョイ 6ff8-Jbvc)
垢版 |
2025/01/21(火) 12:02:24.94ID:ZMbV0RT+0
やりたいことがやりたいように出来るのはC++
550デフォルトの名無しさん (アウアウエー Sadf-C2Lh)
垢版 |
2025/01/22(水) 15:36:19.34ID:3ss9Z0B7a
やりたいことがやりたいように出来るのはC
2025/01/22(水) 16:41:12.84ID:rqHpU9Ud0
C++に気に食わない機能や作法があっても
使わずに独自で書けばええんよ
552デフォルトの名無しさん (アウアウエー Sadf-C2Lh)
垢版 |
2025/01/23(木) 10:18:36.86ID:MfXmmgFNa
C++の要らない機能を無理に使わず
BetterThanCとしてCの範囲で使っておくのが正解
553デフォルトの名無しさん (ワッチョイ 2391-VyPR)
垢版 |
2025/01/23(木) 17:36:52.16ID:zJefYyzo0
拷問現在の日本でもある
https://nazology.kusuguru.co.jp/archives/168908
2025/01/24(金) 20:46:41.96ID:AnpieBwS0
forでリストを処理するときに
そのリストから値をremoveすると次の値が飛ばされる
その対策として
for i in tuple(リスト名):
としてタプルに変換して問題解決はしているのだけど
王道的な別な解決策ってある?
2025/01/24(金) 21:01:24.34ID:g+2OlWgu0
別のコピーなら何でもいいんでしょ
2025/01/24(金) 21:59:09.40ID:oJDbtKku0
王道は破壊的な処理をせずフィルタ動作にする
必要なら元の変数にアサインし直す
2025/01/24(金) 22:02:58.75ID:g+2OlWgu0
文脈が判らんけど、リストを条件に合うように作り直すなら、
あるべきリストを別に生成して、完成したら元のリストを更新するかな
2025/01/24(金) 22:24:39.69ID:CNUIUSvw0
リスト内包表記でいいじゃん
関数型言語的に書いた方がいいよ
forは使うところない
2025/01/24(金) 22:42:35.20ID:Js6GMDZG0
>>554
王道はin-placeで削除しようとせずにフィルターして削除済みの新しいリストを生成する
(Pythonでフィルターするときはcomprehensionを使うのがデフォ)

in-placeで削除したい時はリストの最後からインデックスで回して削除する

↓これはO(n)でいいところをO(n^2)で処理してるからNG
for i in tuple(リスト名):
 if predicate(i):
  リスト名.remove(i)
2025/01/24(金) 22:47:32.12ID:rKtZO0PM0
文が必要な場合には内包表記では書けないでしょ。
561デフォルトの名無しさん (アウアウウー Saa7-LZB9)
垢版 |
2025/01/24(金) 22:51:11.07ID:CUf3ZumHa
忌み数字を踏ませる業者、アプリ、コンピュータプログラムの嫌がらせ

動画再生回数、表示回数、登録者数、フォロワー数、評価数、コメント数、レベル、経験値、ポイント、HP、通貨、価格、メッセージ数、通知数、フレンド数

4(死)、13(キリスト教における忌み数字)

18(嫌)、24(〜に死)、34(〜さん死)

40、42、44

56(殺)、64(無視)

71(無い)、74(無し)、79(無く、亡く)

84(〜は死)、94(〜君死)、96(黒)

このような数字と名前や生年月日、IDなどを組み合わせて執拗に強調することで、精神攻撃をする業者やストーカー、嫌がらせ組織がキモい。
2025/01/24(金) 22:51:58.63ID:Js6GMDZG0
関数化するだけでしょ。
2025/01/24(金) 22:53:05.01ID:g+2OlWgu0
王道がわらわら出てくるっていう
2025/01/24(金) 22:57:24.27ID:oJDbtKku0
>>560
それよね
各操作を関数化したところで、短い=簡潔で分かりやすいとは限らない
デメリットもあるけどコロンとインデントで見通しよく書けるのも強み
2025/01/24(金) 22:59:26.00ID:rKtZO0PM0
内包表記は便利だけど、内包表記で書くためだけに関数を作るのは個人的にはちょっと嫌かな。そこはfor文と適宜使い分ければいいのでは。
2025/01/24(金) 23:07:41.94ID:g+2OlWgu0
わかりやすさの為なら何でもする
内包表記も関数化も抽象化でありわかりやすさ
説明変数もばんばん使うべき
2025/01/24(金) 23:44:28.59ID:bnSBcaeW0
>>554です
書き方が悪かったようですいません
リストの値をフィルターしたいのではなく
リストの値で処理した結果で削除が発生する処理をしています
実際は画像名のリストで画像判定をして
その結果で様々な処理をしているのですが
その処理の一つが削除というものです

>>559
逆回しは思い付きませんでした
削除しても飛ばされず処理出来ますね
2025/01/25(土) 00:01:16.03ID:JgWImGBF0
>>567
>リストの値で処理した結果で削除が発生する処理をしています
mapしてfilterしてるのと同じことでは?
2025/01/25(土) 00:28:58.11ID:PCXbr1vN0
>>567
日本語が意味不明だからコード出せよ
2025/01/25(土) 00:33:36.06ID:YBOPAb6b0
コード出せを悪口だと思ってるな
お前の母ちゃんコード出せ
2025/01/25(土) 01:04:29.61ID:ta403zjD0
結果保存用に空リストを作って、そこに加工後の画像だか画像名だかをappendしていくみたいな原始的なやり方ではダメかな?
2025/01/25(土) 02:05:52.81ID:PCXbr1vN0
なぜそこまで頑なにコードを出したくないのか理解不能
573デフォルトの名無しさん (アウアウエー Sadf-C2Lh)
垢版 |
2025/01/25(土) 15:55:30.71ID:9QNSyzV2a
逆回しは良くやるけど万能ではない
2025/01/25(土) 16:15:16.97ID:kYeOXsrBM
そもそもオリジナルのリストの削除をバックワードに進めないとおかしくなるのは自明だろ
なんで先頭から消す必要あるの?
2025/01/25(土) 16:22:51.45ID:YBOPAb6b0
表が巨大でコピーなんか作ってられないなら仕方なく対象そのものをいじるけど、
その場合は削除するだけでも大変なので、やっぱりいい方法ではない
2025/01/25(土) 17:05:22.09ID:I/LFBEOt0
逆回しにしたところでリストの場合は途中の要素を削除したらそれ以降の要素(のポインタ)をコピーして詰める必要があるから非効率なんだよね
2025/01/25(土) 17:19:09.28ID:YBOPAb6b0
どう考えもバグりやすいし、大丈夫だと判っても他人や未来の自分は不安だし、
理解するのも時間かかるし、何もいいことがない

時間がかかったとしても、判りやすく堅牢な方法で書いて、
速度で困った時に初めてトリッキーな方法を検討する
2025/01/25(土) 19:02:59.44ID:ue9pmKTV0
for i in original_list[:]:
some_process( i )
みたいな感じでやるんじゃなかったっけ。

特に問題がないケースなら、
res = []
for i in original_list:
some_process( i )
と新しいリストを作ってsome_processの中で適宜res.appendする方が分かりやすいかなと思う。
2025/01/26(日) 00:49:53.92ID:tS9IC3AC0
ソースが巨大なら印だけつけてあとで一括削除
2025/01/26(日) 08:01:06.06ID:W6rEvGvT0
対象を直接操作して一括で削除するアルゴリズムってどんなの
581デフォルトの名無しさん (アウアウエー Sa52-FFa5)
垢版 |
2025/01/28(火) 10:16:11.80ID:dqvH8r5Ca
循環参照ありのRCGC
2025/01/28(火) 10:44:41.07ID:jWrC9Jca0
それリストの話じゃなくなってるやん
2025/01/28(火) 16:47:42.00ID:GmSjCRuqd
去年poetryでやってたけど
uv圧倒的に速いな
2025/01/30(木) 17:48:17.31ID:VLQDVSyo0
光る君への公式ホームページが31日で消去されるから保存したい
シンプルだしwgetでいけるかと思ったら表示にjavascript使ってるから
それのせいで保存できなかった

調べていくうちにpythonとヘッドレスブラウザを利用する方法があると知った
しかし、プログラミングのプの字もさっぱりです。pythonも昨日インスコしたばっかり
pythonとヘッドレスブラウザを利用した方法、解説されているようなサイトやヒントご存じでしたら教えてください
2025/01/30(木) 18:08:53.47ID:+zNA14SN0
まるっとローカルに保存してくれるツールを買え
2025/01/30(木) 18:13:37.22ID:x7iBFXJ9d
>>584
https://ja.m.wikipedia.org/wiki/波乗野郎
2025/01/30(木) 18:14:18.23ID:x7iBFXJ9d
>>584
PerMan Surfer 波乗野郎でごっそり保管
https://ja.m.wikipedia.org/wiki/波乗野郎
2025/01/30(木) 18:27:40.22ID:lxoi8Hgj0
HTTrackのProxyTrackつかうのがええんでは
2025/01/30(木) 19:59:08.37ID:rlxtAv1y0
画像だけ全部落としたい、みたいな時も大抵は汎用ツールは使えなくて、
サイト毎に特化したのを作るな

サイトまるごとだとさらに難易度が上がる
リンク先は含めるのかみたいな判断付かない問題が出てくる
外部サイトは含めないとしたくても、ページの内容が複数のサイトで構成されてたりする
590デフォルトの名無しさん (アウアウエー Sa52-FFa5)
垢版 |
2025/02/01(土) 12:23:22.67ID:Dm0gVBeEa
imgタグもファイル名とかじゃなくてbase64で展開されてたりするよな
591デフォルトの名無しさん (ワッチョイ 3f3d-ZuVD)
垢版 |
2025/02/03(月) 09:45:21.23ID:gwlnb/NB0
data1からdata2に変換したい。
data1=b'Z\x00V\x00-\x00E\x001\x000\x00\x00'
data2="ZV-E10"

data1はバイナリデーターで元はtcpのパケットの一部。
(英数+x00) (英数+x00) (英数+x00) ・・・・
というふうになってる。
2025/02/03(月) 10:56:25.39ID:CGp2zuw30
変換したいのならすればいいじゃない
593デフォルトの名無しさん (ワッチョイ 3f3d-ZuVD)
垢版 |
2025/02/03(月) 12:03:25.53ID:gwlnb/NB0
>>592
どうやって?
2025/02/03(月) 12:46:11.42ID:eVgE9/na0
https://docs.python.org/ja/3.13/library/stdtypes.html#bytes
bytesはバイトのシーケンスだから好きにすればいいけど
一見UTF-16LEにもみえるから
data2 = data1.decode('utf-16le', errors='ignore')
でもいけそう
2025/02/03(月) 12:46:55.10ID:CGp2zuw30
えー
置換すりゃあいいじゃん
文字列短いかいならsplit/joinでもまあいい
2025/02/03(月) 12:48:55.52ID:CGp2zuw30
たよねー
俺もnull終端させたutf16-leだと思う
ignoreせずにstripしてからdecodeかな
597デフォルトの名無しさん (ワッチョイ 3f3d-ZuVD)
垢版 |
2025/02/03(月) 14:44:29.24ID:gwlnb/NB0
>>594
THXです。
できました。
2025/02/03(月) 15:00:49.10ID:eVgE9/na0
596さんが書いてるけどignoreだと不正なシーケンスに弱いから
末尾0か確認してスライス[:-1]で削るのが手堅いよ
安価なかったので心配
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況