- 1 名前:デフォルトの名無しさん [2024/09/21(土) 10:14:02.15 ID:ZHy4g+PL0.net]
- !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
- 684 名前:デフォルトの名無しさん mailto:sage [2025/02/16(日) 23:06:15.10 ID:38lJcH0O0.net]
- じゃ左辺のタプルも意味が通じればなんでもいいんじゃない?
- 685 名前:デフォルトの名無しさん (ワッチョイ cb10-+v22) mailto:sage [2025/02/17(月) 00:13:36.55 ID:S+Nz3ahz0.net]
- 要素に代入できるタプルというものを観念して、いわば特殊なタプルと位置付けてタプル概念に含める方向性で考えるのか、タプルとは区別して整理する方向性を指向するのかというのは、理屈としてはタプル概念の外縁の画定に関する1つの態度決定の問題だから、重要でないとはいえないだろうし、タプルに含める立場をとる場合でも、通常の意味でのタプル(immutableな固定長コンテナとしてのタプル)とは質的に異なるということを意識しておくことは実践的にも意味がある……と自分なんかは思うけど、人の考え方はさまざまだからね。674が、用語法の違いと同程度のどうでもいい問題だと思うのなら、実際674にとってはそうなんでしょ。そのことを否定はしないよ。
- 686 名前:デフォルトの名無しさん mailto:sage [2025/02/17(月) 00:31:13.10 ID:ROCyt//h0.net]
- 利用者から観察できんし内部処理知ってると最適化できる類のもんでもなさそう
今の処理系でどういう扱いしてるのか知りたいならわかるけど 個人的にはどうでもいい寄りというかあえて意識したくない話かな
- 687 名前:デフォルトの名無しさん mailto:sage [2025/02/17(月) 11:24:47.42 ID:5+w8yWyk0.net]
- 「正確にはタプルじゃない!」とイキった手前どんなに見苦しい言い訳を繰り返してでも自己正当化したいのだろう
- 688 名前:デフォルトの名無しさん mailto:sage [2025/02/17(月) 12:14:13.77 ID:kwgQ3IwM0.net]
- タプルオブジェクトではないとでも言っておけば不毛なレスバしなくてよかったのにね
- 689 名前:デフォルトの名無しさん (ワッチョイ e327-g3m2) mailto:sage [2025/02/17(月) 12:36:50.89 ID:Ta1N8VfU0.net]
- レスバしたという感覚はないし、そんなに間違ったことを書いたつもりもないんだけどな。678のいう「タプルオブジェクトではない」という表現の方が受け入れやすいということなら別にそれで構わないと思うし。
- 690 名前:デフォルトの名無しさん mailto:sage [2025/02/17(月) 16:30:08.05 ID:33cG7id30.net]
- 5chで細かいところまで正確に伝えるのは難しいんだし
あんまり気にしなくていいんじゃね SNSは議論に向かないしさ
- 691 名前:デフォルトの名無しさん [2025/02/18(火) 01:50:34.73 ID:kyyl/iJD0.net]
- 辞書に追加する方法を教えてほしいです
存在しないキーを追加してその中にさらにキーを追加したいです 以下だとエラーになりました https://pastebin.com/k1VaU5GZ
- 692 名前:デフォルトの名無しさん mailto:sage [2025/02/18(火) 02:55:12.14 ID:a4UZNug90.net]
- >>681
d["tomorrow"] = {"トマト": 70} ではどうだろう。(未検証)
- 693 名前:デフォルトの名無しさん [2025/02/18(火) 03:32:54.30 ID:kyyl/iJD0.net]
- >>682
うまくいきました! どうもありがとうございます!
- 694 名前:デフォルトの名無しさん [2025/02/18(火) 03:48:38.37 ID:kyyl/iJD0.net]
-
- 695 名前:"reply_link">>>681
この関連ですけど、辞書の中の辞書の一部のキーのバリューを変更するにはどうしたらいいですか? todayのりんごの値はそのままでみかんだけ40にしたいです []- [ここ壊れてます]
- 696 名前:デフォルトの名無しさん [2025/02/18(火) 08:18:06.27 ID:goEKoJkr0.net]
- >>684
値の変更はこれで良いのでは。 > d["tomorrow"]["トマト"] = 70 # これだとエラーになる
- 697 名前:デフォルトの名無しさん mailto:sage [2025/02/18(火) 08:51:43.27 ID:aG61gPOQ0.net]
- 混乱させるかもしれんけど標準モジュールcollectionsにあるdefaultdict使えば
from collections import defaultdict d = defaultdict(dict, {"today": {"りんご": 100, "みかん": 50}}) d["tomorrow"]["トマト"] = 70 でエラーにならない d["tomorrow"] の時点で {} が自動生成される
- 698 名前:デフォルトの名無しさん (ワッチョイ e5b1-+v22) mailto:sage [2025/02/18(火) 09:17:41.68 ID:UncCeV9C0.net]
- get, setdefault, collections.defaultdict, __missing__ の違いについては、たしかEffectivePythonで2〜3項目さかれていたね。
- 699 名前:デフォルトの名無しさん [2025/02/18(火) 11:02:20.10 ID:HbHlBTpRa.net]
- まあうまくいくだろうし便利だろうけど
キーのスペル間違いとかがチェックされない怖さはあるな
- 700 名前:デフォルトの名無しさん [2025/02/19(水) 07:26:57.60 ID:if5TaTL20.net]
- 亀レスすみません
みなさんありがとうございます >>685 これでうまくいきました >>686 エラーにならず.getのように自動生成されるのはいいですね
- 701 名前:デフォルトの名無しさん mailto:sage [2025/02/19(水) 07:46:07.12 ID:ouE8cAfi0.net]
- いきなり参照してエラーになるのは嫌なので、
いつもgetを使うようにしよう というのは必ずしもいい考えじゃないんだよな エラーにならない筈のものがエラーになるなら異常なので捕まえるべき 本気で何が入ってるか予想できないケースではgetを使うしかないけど、 そんな状況になるのも何か間違ってる
- 702 名前:デフォルトの名無しさん mailto:sage [2025/02/19(水) 08:27:04.14 ID:mSxUrXXi0.net]
- noneが帰るならそれキャッチしとけば同じじゃない?
- 703 名前:デフォルトの名無しさん mailto:sage [2025/02/19(水) 09:44:18.83 ID:tY+HC/mE0.net]
- 新しいキーが挿入されるのはsetdefaultやcollections.defaultdictであって、getは別に新しいキーは挿入されないんじゃなかったっけ?
- 704 名前:デフォルトの名無しさん mailto:sage [2025/02/19(水) 16:01:59.58 ID:7/rbEKea0.net]
- 想定していないことは例外にする
局所的に意図してフォールバックさせたいときはget 恒常的にはdefaultってだけよ
- 705 名前:デフォルトの名無しさん (ワッチョイ cd54-3IcV) mailto:sage [2025/02/19(水) 20:05:14.43 ID:O180uynF0.net]
- 継承したクラスにあった__repr__()をそのまま使って欲しいのにうまく行かない
- 706 名前:デフォルトの名無しさん mailto:sage [2025/02/19(水) 21:58:33.63 ID:S2Edg5gIM.net]
- keyerrorとかindexerrorとか事前にかわせるやつも例外にするのどうなの?
なんかコスト高そうな印象だけど
- 707 名前:デフォルトの名無しさん mailto:sage [2025/02/19(水) 22:19:23.68 ID:7/rbEKea0.net]
- VMといえど高いし気になるならin (__contains__)を使えばとしか
オレはコードの意図がつかみやすいかで使い分けてる
- 708 名前:デフォルトの名無しさん mailto:sage [2025/02/19(水) 22:48:10.15 ID:/AQQIY230.net]
- Rustとか最近の言語って例外ないらしいじゃない。そっちの方が優れているというのがコンセンサスになったらPython4とか5とかのメジャーパージョンアップのときにそちらに舵を切るということもありうるのかな? 自分は3以降でPythonを知ったので、2→3のときの大改革ってのは未経験なんだけど。
- 709 名前:デフォルトの名無しさん mailto:sage [2025/02/19(水) 22:56:14.91 ID:O180uynF0.net]
- 3での変更点って、ええー2ではまだそんなこと考えてたのという、
3が先進的というよりは2が後進的で、 pythonなら当然そうするでしょという感じなんだよな 2の頃はまだperlをメインに使ってた
- 710 名前:デフォルトの名無しさん mailto:sage [2025/02/19(水) 22:59:08.90 ID:aJXoRfiD0.net]
- 2はprintがステートメントで
ステートメント?!と驚いた と思ったら3でもdelがステートメントでまた驚いた
- 711 名前:デフォルトの名無しさん mailto:sage [2025/02/20(木) 00:52:57.36 ID:laXgRgOS0.net]
- パイチョンはインタプリタが全然頑張らないアホの子
- 712 名前:デフォルトの名無しさん mailto:sage [2025/02/20(木) 04:49:24.69 ID:2izZplM70.net]
- 毎日が新鮮な驚きに溢れて楽しそうですね
- 713 名前:デフォルトの名無しさん (ベーイモ MM2b-gW//) mailto:sage [2025/02/20(木) 11:00:03.67 ID:gDWkqRFJM.net]
- >>697
Pythonは、ぼくこんぴゅーたのむずかしいことわかんないけどえーあいあぷりつくるんだもん!な子を満足させる使命があるから例外は必要 彼らが例外を放置してもアプリが止まってしまわないのはフレームワークが最終的にケツを拭いてくれているおかげ
- 714 名前:デフォルトの名無しさん mailto:sage [2025/02/20(木) 19:27:27.78 ID:qCo+divFH.net]
- 例外処理って必要?
書かなくてもPython自身が例外を出して止まるよね
- 715 名前:デフォルトの名無しさん mailto:sage [2025/02/20(木) 19:58:06.02 ID:YvSU5J1d0.net]
- 変な値が入力されたらエラーを表示したい
でも入力部分はずっと下の階層の処理なので、 エラーの情報を上までバトンリレーしないといけない 例外なら言語がやってくれる
- 716 名前:デフォルトの名無しさん [2025/02/21(金) 06:33:27.06 ID:dPC4thbz0.net]
- ギャンブルのデータ分析?とai予想したいのですが、どういう環境がいいんでしょうか?
anacondaが定番のような気がしますが、ローカルだとマシンパワーがどうなのかなと。 unityみたいなゲームエンジン上でも出来たりしますか?
- 717 名前:デフォルトの名無しさん mailto:sage [2025/02/21(金) 10:53:50.45 ID:ebrhUf4S0.net]
- GoogleのColabでええよ
- 718 名前:デフォルトの名無しさん [2025/02/21(金) 11:17:38.16 ID:0EY3V3nR0.net]
- >>703
例外処理っていうのは例外が発生した場合にリカバリー可能な処理を書くんだぞ その辺わかってなくて単純に例外の時にって思ってる奴が多い 具体例で言うと通信 ゲームとかのアップデート想像してみればいい 大容量データダウンロードしてる時に通信状況が悪くなった 例外処理が無ければそのまま例外吐いて失敗となる ここで例外処理として通信状況が良い所に移動しろ的なメッセージを出して続行ボタン押させたり、数秒から数十秒間隔で通信を再開させるようにした場合は処理がスムーズになるやろ こういう風にリカバリー可能な処理を書くのが例外処理やで
- 719 名前:デフォルトの名無しさん [2025/02/21(金) 11:41:35.66 ID:vI88dzmZa.net]
- >>705
もちろんUnityでも出来るよ
- 720 名前:デフォルトの名無しさん [2025/02/21(金) 13:53:02.83 ID:dPC4thbz0.net]
- >>708
一般的にデータ分析ってアナコンダとか使うんですかね? ゲーム目的じゃないですから
- 721 名前:デフォルトの名無しさん [2025/02/21(金) 15:26:48.94 ID:NDdeWha40.net]
- 現実世界の様子やUIを理解してタスクをこなせるマルチモーダルAIエージェントの基盤モデル「Magma」をMicrosoftが発表
https://gigazine.net/news/20250221-microsoft-magma/ 悪用されている
- 722 名前:デフォルトの名無しさん [2025/02/21(金) 17:14:00.29 ID:0EY3V3nR0.net]
- >>709
anacondaというよりjupyterを使う なのでgoogle colabでも良いしvscodeのプラグイン入れてでも良い
- 723 名前:デフォルトの名無しさん [2025/02/21(金) 18:41:20.24 ID:dPC4thbz0.net]
- >>711
ありがとう jupyterlってのが必要なんすね 機械学習をunityでやろうとしてましたけど、それと別途で用意します
- 724 名前:デフォルトの名無しさん [2025/02/21(金) 18:53:52.10 ID:YTEtnXyW0.net]
- >>712
>>711みたいな馬鹿を信じるなよ
- 725 名前:デフォルトの名無しさん [2025/02/21(金) 19:06:12.50 ID:hCnqiwLw0.net]
- LLM の推論機能を活用する新しいバックドア攻撃「DarkMind」が提唱される
https://gigazine.net/news/20250221-darkmind-chain-of-thought/ AIはチェスで負けそうになるとチートする https://gigazine.net/news/20250221-ai-chess-cheating/
- 726 名前:デフォルトの名無しさん [2025/02/21(金) 23:21:50.44 ID:TllVjNz50.net]
- from datetime import datetime
t_start: str = "23:00" t_end: str = "24:00" t_start_dt: datetime.datetime = datetime.strptime(t_start, "%H:%M") t_end_dt: datetime.datetime = datetime.strptime(t_end, "%H:%M") unix_t_start: float = t_start_dt.timestamp() unix_t_end: float = t_end_dt.timestamp() x = int(unix_t_end - unix_t_start) print(x) t_endが24だと以下のエラーが出ます 24時間表記の時は%Hではないんでしょうか? ValueError: time data '24:00' does not match format '%H:%M'
- 727 名前:デフォルトの名無しさん mailto:sage [2025/02/22(土) 00:07:13.49 ID:Oo9CzgQsM.net]
- >>715
知らんけど時間って 00:00:00~23:59:59 ちゃうの?
- 728 名前:デフォルトの名無しさん mailto:sage [2025/02/22(土) 00:28:58.03 ID:rVspP8iQ0.net]
- 不親切なエラーだよね
- 729 名前:デフォルトの名無しさん mailto:sage [2025/02/22(土) 00:58:09.16 ID:eBlj03Lj0.net]
- 境界値の問題って定番じゃね
テストケースにも必ずいれるだろ
- 730 名前:デフォルトの名無しさん mailto:sage [2025/02/22(土) 07:44:50.26 ID:mdQ5EfsK0.net]
- 閏秒なんか廃止で当然だよな
- 731 名前:デフォルトの名無しさん [2025/02/22(土) 12:10:03.03 ID:kWiPacnr0.net]
- >>716
ありがとうございます このようにしてみましたがもっとスマートな方法ってありますか? from datetime import datetime t_start: str = "23:00" t_end: str = "24:00" if t_end[0:2] == "24": t_end = f"00:{t_end[3:5]}" t_start_dt: datetime.datetime = datetime.strptime(t_start, "%H:%M") t_end_dt: datetime.datetime = datetime.strptime(t_end, "%H:%M") unix_t_start: float = t_start_dt.timestamp() unix_t_end: float = t_end_dt.timestamp() if t_end[0:2] == "00": unix_t_end += 86400 # 24時間足す x = int(unix_t_end - unix_t_start) print(x)
- 732 名前:デフォルトの名無しさん mailto:sage [2025/02/22(土) 12:19:18.21 ID:mdQ5EfsK0.net]
- 何がしたいのか不明だけど、時間の計算にはtimedeltaを使う
- 733 名前:デフォルトの名無しさん [2025/02/22(土) 12:35:47.16 ID:kWiPacnr0.net]
- >>721
ありがとうございます 調べてみます
- 734 名前:デフォルトの名無しさん [2025/02/22(土) 12:42:40.44 ID:kWiPacnr0.net]
- やりたいことはt_startとt_endの中に入ってる文字列の時刻の差分を求めたいです
- 735 名前:デフォルトの名無しさん mailto:sage [2025/02/22(土) 12:44:39.38 ID:mdQ5EfsK0.net]
- といいつつ、日付ではなく時間の長さをhh:mm:ss形式で書きたい時用に、
秒単位のfloatと文字列の相互変換ライブラリを自作した 標準にはいいの無い
- 736 名前:デフォルトの名無しさん mailto:sage [2025/02/22(土) 12:51:12.03 ID:mdQ5EfsK0.net]
- うちのライブラリで書くと、
delta = str_sec(t_end)-str_sec(t_start) print(sec_str(delta)) こんな感じになる
- 737 名前:デフォルトの名無しさん [2025/02/22(土) 13:11:12.71 ID:kWiPacnr0.net]
- 途中経過ですけど今こんな状態です
t_start: str = "23:00" t_end: str = "24:00" dt_now = datetime.now() t_start_dt = datetime(year=dt_now.year, month=dt_now.month, day=dt_now.day, hour=int(t_start[0:2]), minute=int(t_start[3:5])) if t_end[0:2] == "24": dt_d = dt_now.day + 1 # もし現在が月の最終日だとエラーになる "ValueError: day is out of range for month" t_end_dt = datetime(year=dt_now.year, month=dt_now.month, day=dt_d, hour=0, minute=int(t_end[3:5])) else: t_end_dt = datetime(year=dt_now.year, month=dt_now.month, day=dt_now.day, hour=int(t_end[0:2]), minute=int(t_end[3:5])) x = t_end_dt - t_start_dt print(t_start_dt) print(t_end_dt) print(x)
- 738 名前:デフォルトの名無しさん [2025/02/22(土) 13:58:51.98 ID:kWiPacnr0.net]
- 何度もすみません
とりあえずこうなりました なんだが余計に長くなった気がします from datetime import datetime def strToDt(str_dt: str): dt_now = datetime.now() # TODO 25や26の場合があるかもしれないので24決め打ちはやめる if str_dt[0:2] == "24": next_dt = dt_now + timedelta(days=1) dt_dt = datetime(year=next_dt.year, month=next_dt.month, day=next_dt.day, hour=0, minute=int(str_dt[3:5])) else: dt_dt = datetime(year=dt_now.year, month=dt_now.month, day=dt_now.day, hour=int(str_dt[0:2]), minute=int(str_dt[3:5])) return dt_dt t_start: str = "23:00" t_end: str = "24:00" t_start_dt = strToDt(t_start) t_end_dt = strToDt(t_end) x = t_end_dt - t_start_dt print(t_start_dt) print(t_end_dt) print(x) # 時間:分:秒 形式 # TODO xを分形式に変換する
- 739 名前:デフォルトの名無しさん mailto:sage [2025/02/22(土) 14:01:58.99 ID:92tqsAYeM.net]
- 初学者だと思うけど
end>startが保証されてるなら >725
- 740 名前:
みたいに秒に変換して引き算が正解じゃない? [] - [ここ壊れてます]
- 741 名前:デフォルトの名無しさん [2025/02/22(土) 14:16:15.84 ID:kWiPacnr0.net]
- >>728
Endが24までなのか25や26もあるのか、それとも24の次は1なのか確実じゃないのでその辺考えて修正してみます やっぱりタイムスタンプに変換した方が短くなりますか? あと、727のインポートでtimedeltaが抜けてました
- 742 名前:デフォルトの名無しさん mailto:sage [2025/02/22(土) 14:22:19.90 ID:mdQ5EfsK0.net]
- print(datetime.now())
これの出力が 2025-02-22 14:20:40.735896 これになるのが嫌 秒を整数にしてくれたらそのまま使えるのに
- 743 名前:デフォルトの名無しさん [2025/02/22(土) 15:29:44.08 ID:kWiPacnr0.net]
- 何度もすみません
こうなりました 今のところt_startよりもt_endが小さいとエラーになります https://techiedelight.com/compiler/?119b
- 744 名前:デフォルトの名無しさん mailto:sage [2025/02/22(土) 18:46:10.84 ID:/k68f2f30.net]
- pandasなら+“:00”してHH:mm:ss形式に揃えれば25:00や26:00でもパースできるけど簡単な処理だから自分で計算すればいいんじゃないかと思う
def parse_as_minutes(hhmm): hours, minutes = [int(x) for x in hhmm.split(':')] return hours * 60 + minutes
- 745 名前:デフォルトの名無しさん mailto:sage [2025/02/22(土) 18:52:17.77 ID:mdQ5EfsK0.net]
- そんなのを毎回作ってられない
2回くらいは作る 3回目あたりで、本腰入れて部品化する
- 746 名前:デフォルトの名無しさん (ワッチョイ 43ce-qk/j) [2025/02/22(土) 23:02:04.13 ID:eBlj03Lj0.net]
- >>731
https://techiedelight.com/compiler/?96ec これじゃ駄目なのか?
- 747 名前:デフォルトの名無しさん mailto:sage [2025/02/22(土) 23:31:26.22 ID:d1IFpLYA0.net]
- 劣化しとるやないかーい
- 748 名前:デフォルトの名無しさん (ワッチョイ 6e9a-1YEc) [2025/02/23(日) 09:47:38.74 ID:BUMkVt7f0.net]
- 個人レベルで機械学習学んでも意味無いですかね?
例えば競馬予想aiを作りたいとして しかし、けっきょくのところデータがないと、学習モデルだけあっても意味ないですもんね 競馬なら馬場状態を数値化したデータというのがないと、学習させられないですよね
- 749 名前:デフォルトの名無しさん mailto:sage [2025/02/23(日) 10:33:41.64 ID:2+mAKcn80.net]
- >>730
そのくらいは標準で簡単に出来るだろ
- 750 名前:デフォルトの名無しさん mailto:sage [2025/02/23(日) 10:36:52.09 ID:foL9AaqB0.net]
- >>736
自分で学習すりゃいいじゃん データなんていくらでもあるんだし
- 751 名前:デフォルトの名無しさん mailto:sage [2025/02/23(日) 11:58:59.62 ID:uSqDrBD8M.net]
- >>736
他人の後追いするぐらいなら他人のシステム使えばよい 競輪なんて放送でAI予想の倍率出しながら中継してる
- 752 名前:デフォルトの名無しさん mailto:sage [2025/02/23(日) 12:29:42.21 ID:TNVZaLWv0.net]
- オッズの計算に投票だけではなくAI予想も加味したら、
面白さと利益率が上がるのでは
- 753 名前:デフォルトの名無しさん [2025/02/23(日) 13:11:05.65 ID:BUMkVt7f0.net]
- >>739
例えばバンクのホコリっぽさとか、選手の体調とか、そういった不確定要素ってデータがないですよね なので、公式のデータ以外ないとするなら、あまりやる意味がないのかなと
- 754 名前:デフォルトの名無しさん mailto:sage [2025/02/23(日) 13:17:20.60 ID:TNVZaLWv0.net]
- 確率が計算できて、オッズがその確率通りならば、どこに賭けても期待値は同じ
実際には、確率とオッズに乖離が発生する そこに着目して、確率の高いところではなく、期待値の高いところに掛けると儲かるかもしれない
- 755 名前:デフォルトの名無しさん mailto:sage [2025/02/23(日) 14:34:58.45 ID:uSqDrBD8M.net]
- >>741
競輪AIだと雨が降ってると硬い結果になる 選手が雨の中危険な勝負して事故ったりしたくないんだろ
- 756 名前:デフォルトの名無しさん mailto:sage [2025/02/23(日) 15:42:44.26 ID:TNVZaLWv0.net]
- early continue 便利だな
行は増えるけどネストは浅い方がいいので積極的に使おう
- 757 名前:デフォルトの名無しさん [2025/02/23(日) 16:11:59.81 ID:r171NbV30.net]
- >>744
横からだけどサンクスこれいい
- 758 名前:な []
- [ここ壊れてます]
- 759 名前:デフォルトの名無しさん (ワッチョイ cd79-Ro5/) mailto:sage [2025/02/23(日) 16:59:33.82 ID:SH8eoGXi0.net]
- そんな言い方があるんだな
同じように関数で場合分けごとにさっさとreturnしてるけど これもearly returnっていうのを知らなかった
- 760 名前:デフォルトの名無しさん mailto:sage [2025/02/23(日) 17:13:57.05 ID:TNVZaLWv0.net]
- 例えばループで文字列を処理していて
m = re.search(pattern, str) found = m.groups()[0] これだと見つからない時にエラーになる で、 if m := にしたりするけど、見つからなかったら飛ばしたいなら、 else: continue になって、なんか変 最初から m = のままで、 if not m: continue を付ければすっきりする セイウチは絶滅の方向で
- 761 名前:デフォルトの名無しさん mailto:sage [2025/02/23(日) 18:43:24.49 ID:ap5ufkCU0.net]
- それ最初からelse: continue必要ないじゃん
- 762 名前:デフォルトの名無しさん mailto:sage [2025/02/23(日) 19:01:50.10 ID:TNVZaLWv0.net]
- elseをほっとくと、foundの中身が不定になってしまう
事前にNoneを入れておいたりして、後の処理でNoneなら飛ばす みたいなことになる そんなことするくらいなら、continueしてしまった方が後腐れない
- 763 名前:デフォルトの名無しさん (アウアウウー Sa39-c/TO) [2025/02/23(日) 19:46:23.76 ID:CZU86cpwa.net]
- >>709
Unityがゲームしか造れないという考え方は改めるべき
- 764 名前:デフォルトの名無しさん (アウアウウー Sa39-c/TO) [2025/02/23(日) 19:48:54.69 ID:CZU86cpwa.net]
- re.findall(pattern, str)
- 765 名前:デフォルトの名無しさん (ワッチョイ 0154-ePnC) mailto:sage [2025/02/23(日) 20:05:27.12 ID:TNVZaLWv0.net]
- もしかしてfindallって全ての点でsearchに勝ってる?
- 766 名前:デフォルトの名無しさん mailto:sage [2025/02/23(日) 20:54:18.71 ID:ap5ufkCU0.net]
- なんでだよw
めちゃくちゃ要領悪いな
- 767 名前:デフォルトの名無しさん [2025/02/23(日) 22:37:16.02 ID:R0b4DHIEd.net]
- >>749
gotoを多用しそうな人発見
- 768 名前:デフォルトの名無しさん mailto:sage [2025/02/23(日) 23:03:58.66 ID:LVu8ljPH0.net]
- pythonのreはAPI設計に難があるよね
他の言語から戻って来るたびに仕様の確認が必要
- 769 名前:デフォルトの名無しさん mailto:sage [2025/02/23(日) 23:09:23.71 ID:TNVZaLWv0.net]
- perlから来たからsearchばっかり使ってるけど、
findallの方がこなれてそうだな
- 770 名前:デフォルトの名無しさん (ワッチョイ 6e9a-1YEc) [2025/02/24(月) 05:49:40.37 ID:ujJrcFED0.net]
- >>750
tensorflowとかunityで使えるんすか(´・ω・`)
- 771 名前:デフォルトの名無しさん (ワッチョイ 752a-xrb0) [2025/02/24(月) 08:23:49.32 ID:TCszVRfv0.net]
- >>747
> 最初から m = のままで、 > if not m: > continue > を付ければすっきりする > セイウチは絶滅の方向で 話題をよく理解していないのだけれど、 コロンイコールを使って、そのように論理を逆転してやればすっきりする、というハナシとも違うの? if not (m := re.search(pattern, str)): continue
- 772 名前:デフォルトの名無しさん mailto:sage [2025/02/24(月) 12:12:57.30 ID:4WrA9fgL0.net]
- >>758
747じゃないがセイウチはどうもPythonicじゃない感ある 他言語のletみたいにスコープも閉じてないし
- 773 名前:デフォルトの名無しさん mailto:sage [2025/02/24(月) 14:57:43.47 ID:d83yxTtH0.net]
- いくつかのパターンのどれかに合致する、みたいな時は
if m := elif m := elif m := みたいにしか書きようがない パターン検査と結果取得を同時に書かないと、同じことを2回書くことになる
- 774 名前:デフォルトの名無しさん mailto:sage [2025/02/24(月) 15:09:39.96 ID:Jwc6B7rV0.net]
- >>756
ほんとにperl使ってた? gフラグ + リストコンテキストを真似したのがfindallなんだが
- 775 名前:デフォルトの名無しさん mailto:sage [2025/02/24(月) 15:27:48.14 ID:d83yxTtH0.net]
- だからこそ、1行で決まった数キャプチャーする時はsearchで、
全体からいくつあるか判らないけどあるだけ取ってくる時はfindallという使い分け という設計だったけど、 1回しかマッチしないと判っててもfindallして[0]だけ使う方が使いやすいっていう
- 776 名前:デフォルトの名無しさん mailto:sage [2025/02/24(月) 15:29:10.34 ID:4WrA9fgL0.net]
- >>760
人それぞれではあるけども 検査先を単一にしてパターンマッチングに持ち込めないんなら 一緒くたにしないで個別のifと必要なら早期return/continueにする Pythonの簡潔さって表現力があって強力な他言語とは趣がちがう
- 777 名前:デフォルトの名無しさん mailto:sage [2025/02/24(月) 16:51:44.97 ID:Jwc6B7rV0.net]
- >>762
pythonでも使い分けできてないみたいだな 自分の不出来をperlのせいにしたらだめだぞ
- 778 名前:デフォルトの名無しさん [2025/02/24(月) 17:00:02.49 ID:qXEt7oPpr.net]
- C#のLINQは優秀だよな
async/awaitみたいにあれも貰ってきてくれよ
- 779 名前:デフォルトの名無しさん mailto:sage [2025/02/24(月) 18:19:27.76 ID:xkCGwjl20.net]
- >>760
そういうのはパターンとアクションをコレクションにまとめる
- 780 名前:デフォルトの名無しさん mailto:sage [2025/02/24(月) 18:26:57.10 ID:d83yxTtH0.net]
- 具体的に何してるか書くと、日付や時刻をファイル名に含んだいろんなファイルを時系列ソートする
日付時刻の表記方法は10種類あって、どれでもない場合はタイムスタンプで代用する 日付は必ず含むが、時刻は無い場合もある なかなか統一的には書けないので、if m := elifのかたまりになる
- 781 名前:デフォルトの名無しさん [2025/02/24(月) 18:37:53.69 ID:qXEt7oPpr.net]
- 都度ファイル名を解析して時系列ソートするんじゃなくて一発バッチでファイル名を統一してしまうわけにはいかんのか
- 782 名前:デフォルトの名無しさん mailto:sage [2025/02/24(月) 19:03:25.46 ID:Ts/aFZR80.net]
- >>767
そういうのこそコレクションにまとめるべき 10個もif-elseで同じことしない
- 783 名前:デフォルトの名無しさん mailto:sage [2025/02/24(月) 22:53:00.73 ID:Wgnd8zr+0.net]
- 本人は同じ処理を繰り返し書いてる認識自体がないんじゃないかな
すごくベーシックなリファクタリング方法だけどメソッド抽出やクラス分割や統合に比べて認識できない人が多い印象がある
- 784 名前:デフォルトの名無しさん [2025/02/25(火) 09:13:08.75 ID:DokSK96w0.net]
- >>770
コードを例示してあげなよ。 プログラム板でコードで話さないのもどうかと思うよ。ベーシックならそうマル秘でもないのでしょう。
|

|