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
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]で削るのが手堅いよ
安価なかったので心配
599デフォルトの名無しさん (アウアウエー Sabf-J/8e)
垢版 |
2025/02/04(火) 12:24:19.84ID:AbihjpY6a
data1=b'Z\x00V\x00-\x00E\x001\x000\x00\x00\x00'
じゃないのは何故なんだぜ
600デフォルトの名無しさん (ワッチョイ 3f86-vucM)
垢版 |
2025/02/04(火) 19:51:38.43ID:Nh0/7bRn0
Google Colaboratoryで自動でカッコやシングルクォーテーション、ダブルクォーテーションを閉じてくれるのはいいのですが
改行するのに右小指を右矢印まで移動させるのが面倒くさいです
この機能を有効にしながらタイピングのホームポジションから極力指を動かさずにプログラムを改行する方法はどういったものがありますか
2025/02/04(火) 20:02:33.96ID:Q6BV74Me0
ダイヤモンドカーソル
2025/02/04(火) 20:05:48.54ID:Yb/oB3W3M
wordmasterですね?
2025/02/04(火) 20:15:46.13ID:bltbnC560
キーボードショートカット表示させたら発見多い
vimバインドがあるのにも気づける
2025/02/04(火) 20:16:37.26ID:Q6BV74Me0
capsキーをモディファイア化して、カーソルとpgup/dn, home, end, ctrl-home, ctrl-end
なんかをそのへんのキーにアサインすると便利
ctrlなんかにするのはもったいない
605デフォルトの名無しさん (ワッチョイ cf3e-fK0e)
垢版 |
2025/02/05(水) 12:03:09.56ID:0aVaPzHU0
textwrap --- テキストの折り返しと詰め込み
https://docs.python.org/ja/3.12/library/textwrap.html

標準ライブラリにこんなモジュールあったの初めてしった
606デフォルトの名無しさん (アウアウエー Sabf-J/8e)
垢版 |
2025/02/05(水) 14:41:00.30ID:RWIQAOlpa
ctrl+J ctrl+M
2025/02/05(水) 18:14:35.27ID:d15iAK/y0
WindowsだとCtrl+EやCtrl+Aは動かないんだっけ?
2025/02/05(水) 18:53:32.47ID:dNg2S/kf0
アンダースコア2個の変数って
VSCodeのデバックでも見えなくなるんだな
そこは値みせろよ
2025/02/05(水) 21:07:19.31ID:4wonhmBO0
https://www.deback.be
選択肢にないからドイツ語圏は弱小なんだな
学びがある
610デフォルトの名無しさん (ワッチョイ 63c4-SXYI)
垢版 |
2025/02/09(日) 17:06:41.88ID:cm7GCNiQ0
スレッド処理できんぞこのポンコツ
2025/02/09(日) 17:14:28.12ID:tUOkxeUe0
ThreadPoolExecutor使えば簡単に実装できるだろ
GIL無効のはまだ試したことないけど
2025/02/09(日) 22:07:58.46ID:DVKKH7160
enumerate()はindexが追加される、と覚えてるから、
indexを2番目にしてしまうという間違いを繰り返す

大抵は、for val in array: と書いてて、
indexが必要になって追加すると思うので、
前に挿入という変更にも抵抗がある
2025/02/09(日) 22:42:27.28ID:1H3Dm2g50
使い勝手からするとindexは先頭であってんだけど
tupleやなくクラスだったらよかったかな
挿入という感覚はないな
2025/02/10(月) 09:56:50.77ID:JMZMJPbu0
items() が key, valueの順で渡してくるのは納得なんだよな
enumerate() も意味的には似てるんだけど、
dictはforで読んだらkeyが返るけど、listは中身だしな

まあ、複数同時に返して順番意識しないと間違う仕様が全部悪
2025/02/13(木) 17:02:51.99ID:uy7D7eTZ0
windowsでリアルタイムで画像を描かせるとウィンドウが反応なしになる
最初pygameで作って、Pyxelでも駄目で、matplotlibも駄目だった
どう見ても原因はwindows側なんだけど、どうやったら回避できるんだろう
2025/02/13(木) 17:53:45.53ID:iuf/njBUM
メッセージキューの状態は?
2025/02/13(木) 18:21:00.45ID:gV1L3zya0
型ヒント、どうやって書くとおK?

>>> a:int, b:int = 1, 2
File "<stdin>", line 1
a:int, b:int = 1, 2
^
SyntaxError: invalid syntax
2025/02/13(木) 18:50:18.04ID:UcNEd134M
>>617
そういう書き方しなければならない理由ある?
619デフォルトの名無しさん (ワッチョイ 232a-6f6K)
垢版 |
2025/02/13(木) 20:34:08.66ID:gV1L3zya0
>>618
そういう書き方とは何を指したの。
書き方がおかしいので、正しい書き方を質問した。
2025/02/13(木) 21:07:07.34ID:1OgGkneUp
二ついっぺんに?
2025/02/13(木) 21:41:07.46ID:uy7D7eTZ0
def func(a:int = 0, b:int = 0): # OK
a, b = 0, 0 # OK
a:int = 0, b:int = 0 #NG

ということだな
2025/02/13(木) 23:08:28.29ID:FScSEbGI0
>>619
回答がでてるから(俺は確認してない)
気にしてないと思うけど
コードは手段であって目的ではない
エラーが出てよくわからないなら別の方法探すのが合理的だろ?
2025/02/13(木) 23:20:12.60ID:uy7D7eTZ0
a, b = 0, 0
のケースは、
(a, b) = (0, 0)
というタプルへの代入の省略形だと思うので、
関数定義の引数の列とは本質的に別物

タプルだと思って書くと、
(a:int, b:int) = (0, 0)
これが文法的に許されてるかという個別の話になって、
単純にタプルに型アノテーションは書けません
という誤りに帰着する
2025/02/13(木) 23:39:49.88ID:3i0teOTZ0
>>621
>a:int = 0, b:int = 0 #NG
a:int = 0; b:int = 0 #OK

7.2.2. Annotated assignment statements
The difference from normal Assignment statements is that only a single target is allowed.
https://docs.python.org/3/reference/simple_stmts.html#annotated-assignment-statements
2025/02/13(木) 23:48:39.44ID:3i0teOTZ0
変数の数が多かったりアノテーションが長かったりするのであれば
一旦1つの変数で受けといてからunpackすればいいんじゃないか思う
style guideとかでこの辺りが確立されてるやつがあるのかどうかは知らん

xs: Tuple[Optional[int]] = 1, 2, 3
x, y, z = xs
2025/02/13(木) 23:50:55.54ID:uy7D7eTZ0
a:int = 0, b:int = 0
だと何が不味くてエラーにしたのか、ピンとこないな
誤解の余地はどこにもないと思うけど
2025/02/14(金) 00:40:32.45ID:itWJ0HMk0
文法規則に沿ってないからエラーになってるだけでしょ

a:int = 0, の時点でパーサーからすると`0, `はタプルなのに
b:intのコロンようなサポートされてない表現が来てるから文法エラー
2025/02/14(金) 00:52:13.45ID:kUuP9oE90
いや、言語設計の話ね
引数の列みたいなタプル的なもので許されてるなら、
タプルでも許されるような規則になってる方がコンシスタント

それを許すと別の問題が生じるなら仕方ないけど、
特にそんなのがあるような気がしない
2025/02/14(金) 01:53:56.51ID:itWJ0HMk0
54氏に絡んだ私が馬鹿だったみたいだね
2025/02/14(金) 07:12:48.02ID:P2h4GvQIH
型アノテーションはどう考えてもコードを冗長にするだけの効果しかなかった
次期バージョンからは廃止して欲しい
アノテーションありとなしのコードが混在する世界は誰も得しない
2025/02/14(金) 07:34:58.64ID:8QRTr0+h0
01氏は相変わらずだのう
よく知らんけど
■ このスレッドは過去ログ倉庫に格納されています