[過去ログ]
Pythonのお勉強 Part68 (1002レス)
Pythonのお勉強 Part68 http://mevius.5ch.net/test/read.cgi/tech/1663235546/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
58: デフォルトの名無しさん (ワッチョイ 9763-eAa0) [sage] 2022/09/20(火) 20:23:11.29 ID:zGhXnhGV0 case-insensitiveで [\da-f] http://mevius.5ch.net/test/read.cgi/tech/1663235546/58
59: デフォルトの名無しさん (ワッチョイ 9f14-t1N9) [sage] 2022/09/21(水) 19:43:53.71 ID:b5Bal3Dn0 https://i.ibb.co/LkLcvky/CB-0001.jpg pathlibというのを使って>>52と同じことをやってみたのですが、書き方が間違ってる気がしてならないので指摘して欲しいです line14-15は何で上手くいかないのかも教えてほしいです http://mevius.5ch.net/test/read.cgi/tech/1663235546/59
60: デフォルトの名無しさん (ワッチョイ ffbb-hJeG) [sage] 2022/09/21(水) 20:06:17.61 ID:Qxk2XzJU0 まず、12行目のmkdirで例外発生してない? temporaryなんてらフォルダはchdirしてるからすでに存在してるんでしょう? http://mevius.5ch.net/test/read.cgi/tech/1663235546/60
61: デフォルトの名無しさん (ワッチョイ bf66-C6xl) [sage] 2022/09/21(水) 20:13:22.49 ID:VhW4jWqJ0 os関連の処理は互換性とか捨てて、subprocessでやるのが楽でしかも安定してる http://mevius.5ch.net/test/read.cgi/tech/1663235546/61
62: デフォルトの名無しさん (ワッチョイ ffdb-OuJ4) [sage] 2022/09/21(水) 20:30:50.72 ID:2GcRUbUk0 繰り返される任意の文字列を1回の繰り返しに直す方法ありませんか? "abcdabcdabcdefg"→"abcdefg"(abcdの繰り返し) "abababc"→"abc"(abの繰り返し) "aabbaabbc"→"aabbc"(aabbの繰り返し) パターンの長さはとりあえず固定でいいので(例えば4でabcdとaabbはマッチできる)一気に置換する方法ないでしょうか http://mevius.5ch.net/test/read.cgi/tech/1663235546/62
63: デフォルトの名無しさん (ワッチョイ 9f14-t1N9) [sage] 2022/09/21(水) 20:30:55.54 ID:b5Bal3Dn0 >>60 存在してます。path.rename()書いてない時は、同名のフォルダが作られて「すでに存在してる〜」みたいなエラーを吐いてました そもそもpathlib使って>>52をやりたい場合は、osを使う必要がなかったりもするのでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1663235546/63
64: デフォルトの名無しさん (ワッチョイ d733-E+l9) [] 2022/09/21(水) 20:31:19.96 ID:yjl6UhSi0 >>59 https://ideone.com/E4lQt0 http://mevius.5ch.net/test/read.cgi/tech/1663235546/64
65: デフォルトの名無しさん (ワッチョイ 9f14-t1N9) [sage] 2022/09/21(水) 20:52:17.39 ID:b5Bal3Dn0 >>64 参考に直して見たら無事にできました。ありがとうございます。 https://i.ibb.co/XSzr82B/CB-0002.jpg http://mevius.5ch.net/test/read.cgi/tech/1663235546/65
66: デフォルトの名無しさん (ワッチョイ 9f14-t1N9) [sage] 2022/09/21(水) 20:58:11.32 ID:b5Bal3Dn0 変数名とか色々、短く略して書いた方が良いのでしょうか? 入力時間的には大差ないので、見返した時に分かりやすいようにしてるのですが これは初心者だからで、経験者から見ると見苦しいとか、むしろ略されてた方が見やすいとかありますか? http://mevius.5ch.net/test/read.cgi/tech/1663235546/66
67: デフォルトの名無しさん (ワッチョイ d733-E+l9) [] 2022/09/21(水) 22:11:39.31 ID:yjl6UhSi0 >>62 競プロの問題? http://mevius.5ch.net/test/read.cgi/tech/1663235546/67
68: デフォルトの名無しさん (ワッチョイ 9f01-E+l9) [sage] 2022/09/21(水) 22:25:22.90 ID:sVtx8qcf0 >>62 質問の意味がよくわからん "abcdabcdefcdefg"の場合どうしたいの http://mevius.5ch.net/test/read.cgi/tech/1663235546/68
69: デフォルトの名無しさん (ワッチョイ d763-DwLj) [sage] 2022/09/21(水) 22:30:53.91 ID:4122FyYT0 LZ78の考え方の応用で行け http://mevius.5ch.net/test/read.cgi/tech/1663235546/69
70: デフォルトの名無しさん (ワッチョイ ffdb-OuJ4) [sage] 2022/09/21(水) 22:52:22.34 ID:2GcRUbUk0 >>67 普通に処理したいだけです >>68 "abcdabcdefcdefg"なら"(abcdabcd)efcdefg"→"abcdefcdefg"だと思います http://mevius.5ch.net/test/read.cgi/tech/1663235546/70
71: デフォルトの名無しさん (ワッチョイ ffdb-OuJ4) [sage] 2022/09/21(水) 22:55:15.34 ID:2GcRUbUk0 あ、cdefcdefが繰り返されていたんですね… 最終的に人がチェックする工程があるので、先にマッチした方優先とかで大丈夫です http://mevius.5ch.net/test/read.cgi/tech/1663235546/71
72: デフォルトの名無しさん (ワッチョイ d733-E+l9) [] 2022/09/21(水) 23:11:15.16 ID:yjl6UhSi0 'abcabcdabcabcdefg' だったら? http://mevius.5ch.net/test/read.cgi/tech/1663235546/72
73: デフォルトの名無しさん (ワッチョイ d74c-ldZd) [sage] 2022/09/21(水) 23:16:47.91 ID:VS1qJent0 長さ4固定でいいなら、正規表現あたりで >>> import re >>> re.sub(r'(....)\1+', r'\1', "abcdabcdabcdefg") 'abcdefg' >>> re.sub(r'(....)\1+', r'\1', "aabbaabbc") 'aabbc' http://mevius.5ch.net/test/read.cgi/tech/1663235546/73
74: デフォルトの名無しさん (ワッチョイ 9f01-bNpc) [sage] 2022/09/21(水) 23:21:53.64 ID:757dNGj40 >>62 https://www.online-python.com/36ZCD0xAqV http://mevius.5ch.net/test/read.cgi/tech/1663235546/74
75: デフォルトの名無しさん (ワッチョイ ffbb-hJeG) [sage] 2022/09/21(水) 23:30:41.78 ID:Qxk2XzJU0 そこにforを使うなんて http://mevius.5ch.net/test/read.cgi/tech/1663235546/75
76: デフォルトの名無しさん (ワッチョイ ffdb-OuJ4) [sage] 2022/09/21(水) 23:49:19.41 ID:2GcRUbUk0 >>73 >>74 ありがとうございます! 文中に含まれてるものにも対処したいので73を長さ変えながら複数回適用で使いたいと思います http://mevius.5ch.net/test/read.cgi/tech/1663235546/76
77: デフォルトの名無しさん (アウアウウー Sa5b-8eP5) [] 2022/09/22(木) 11:05:41.34 ID:u9/ouAZsa >>39 いらね http://mevius.5ch.net/test/read.cgi/tech/1663235546/77
78: デフォルトの名無しさん (アウアウウー Sa5b-8eP5) [] 2022/09/22(木) 11:11:13.09 ID:u9/ouAZsa >>72 の回答はよ http://mevius.5ch.net/test/read.cgi/tech/1663235546/78
79: デフォルトの名無しさん (ワッチョイ bf66-C6xl) [sage] 2022/09/22(木) 11:12:02.23 ID:ufV304t80 見てすぐ判らんようなもんは使うべきではないな http://mevius.5ch.net/test/read.cgi/tech/1663235546/79
80: デフォルトの名無しさん (ワッチョイ f7da-PMJU) [sage] 2022/09/22(木) 13:04:09.56 ID:kBSagdtc0 abracadabra http://mevius.5ch.net/test/read.cgi/tech/1663235546/80
81: デフォルトの名無しさん (ワッチョイ d72c-3X0R) [] 2022/09/23(金) 06:05:04.44 ID:l/gDdEyB0 x = [i for i in range(10)] idxs = [start, end] # 0 <= start <= end <= max(x)かつend +=1 xが上記の場合 最小はidxs = [0, 1] 最大は idxs = [0, 11] です。このとき for i in idxs: __x[i] だと最後が11のときindexErrorになるんだけど try exceptでcontinueする以外にいい書き方ないですか if i == len(x): breakみたいなのとか _idxs[1] -= 1 for i in idxs: みたいなのは嫌です http://mevius.5ch.net/test/read.cgi/tech/1663235546/81
82: デフォルトの名無しさん (ガックシ 068f-G+99) [sage] 2022/09/23(金) 06:29:46.22 ID:ciin+wbx6 その11にはどういう意味があるんですか http://mevius.5ch.net/test/read.cgi/tech/1663235546/82
83: デフォルトの名無しさん (テテンテンテン MM8f-UC+/) [sage] 2022/09/23(金) 06:42:29.24 ID:j5q+73vfM >>82 そもそも、「いい書き方」って何ですか http://mevius.5ch.net/test/read.cgi/tech/1663235546/83
84: デフォルトの名無しさん (ワッチョイ ffbb-AZvI) [sage] 2022/09/23(金) 07:14:40.79 ID:ILPrLpfC0 これ、やべぇな https://gigazine.net/news/20220922-python-old-bug-unpatched-15-years/ GitHub Copilot とかで広まっちゃうのか http://mevius.5ch.net/test/read.cgi/tech/1663235546/84
85: デフォルトの名無しさん (スッププ Sdbf-HYId) [sage] 2022/09/23(金) 09:31:57.58 ID:nucVVsrtd >>84 これは完全に誤訳 翻訳元では、GitHub上の数多くのOSSにこの脆弱性が存在するからCopilot等がそれを学習して広がるかもしれないと言っているだけ http://mevius.5ch.net/test/read.cgi/tech/1663235546/85
86: デフォルトの名無しさん (ワッチョイ bf66-C6xl) [sage] 2022/09/23(金) 09:39:19.95 ID:08DmGtnT0 そんな風に読んだけど違うの? http://mevius.5ch.net/test/read.cgi/tech/1663235546/86
87: デフォルトの名無しさん (ワッチョイ d763-DwLj) [sage] 2022/09/23(金) 10:22:01.14 ID:7VR4OLWz0 確かにtarを使うリポジトリではcopilot経由で広がる可能性があるけど、tarを使うリポジトリなんてリポジトリ検索してもそんなにないので実数としては眉唾 依存関係から侵入してくる方がよっぽど可能性が高い Copilotが批判されがちなので批判の文脈で喋ったほうが肯定的に聞いてもらえるだろうという余計な意図が入ってるのではと邪推してしまうね:) http://mevius.5ch.net/test/read.cgi/tech/1663235546/87
88: デフォルトの名無しさん (スッププ Sdbf-HYId) [sage] 2022/09/23(金) 12:26:25.28 ID:nucVVsrtd >>86 > Trellixによると、35万件を超えるリポジトリがこの脆弱性に脅かされていると見られ、その多くでGitHub Copilotなどの自動ツールが使われているとのこと。 前知識なく普通にこれ読んだら、35万件のリポジトリがGitHub Copilptを使っている、そして、Copilotがその脆弱性の原因であると思うでしょ というかこの記事書いた人はたぶんそのように誤解してる > https://www.trellix.com/en-us/about/newsroom/stories/research/open-source-intelligence.html まあソースも推計方法や論理がガバガバで似たようなレベルだが http://mevius.5ch.net/test/read.cgi/tech/1663235546/88
89: デフォルトの名無しさん (アウアウウー Sa5b-8eP5) [] 2022/09/23(金) 13:17:45.83 ID:esyqbAqHa >>81 が何を考えてるのか詳しく知りたいなωωω http://mevius.5ch.net/test/read.cgi/tech/1663235546/89
90: デフォルトの名無しさん (ワッチョイ b302-nX9g) [sage] 2022/09/24(土) 01:05:33.05 ID:WVAdUwxP0 >>81 インデックスなら0~10の番号で管理すべきじゃないの endを取り出して使うときに+1すれば良いんじゃない スライシングと混同してるのかな http://mevius.5ch.net/test/read.cgi/tech/1663235546/90
91: デフォルトの名無しさん (JP 0H1f-nvXy) [] 2022/09/24(土) 02:03:35.51 ID:6DJLRQJMH >>90 外部入力でスライス範囲を受け取ってて(start, end) その値を使いまわしてインデックスアクセスしたいんだろう テーブル扱うGUIとかでままある http://mevius.5ch.net/test/read.cgi/tech/1663235546/91
92: デフォルトの名無しさん (ワッチョイ 1201-ut7I) [sage] 2022/09/24(土) 07:13:39.52 ID:52DloiQc0 単にインデックスの範囲とスライスを混同してるだけだろ 外部からの入力なら値のチェックは必須だしその時に調整しとけばいいだけ http://mevius.5ch.net/test/read.cgi/tech/1663235546/92
93: デフォルトの名無しさん (ワッチョイ 1610-Nf8B) [sage] 2022/09/24(土) 07:29:05.56 ID:RoHmfu6K0 一昔前のseabornのカラーマップだか忘れたけど1から数えて最後の数字を入れるようなインデックス指定を偶に見かける [0, 10] → 0から9までと [1, 10] → そもそも0が存在せず1から10 この2つの書き方にそれぞれ名前ついてたりする? http://mevius.5ch.net/test/read.cgi/tech/1663235546/93
94: デフォルトの名無しさん (ワッチョイ f2b7-AIux) [sage] 2022/09/24(土) 08:37:46.88 ID:3mLYFKO40 >>93 前者は「半開区間」として [0,10) といった表記にするのをよく見る http://mevius.5ch.net/test/read.cgi/tech/1663235546/94
95: デフォルトの名無しさん (ワッチョイ 1610-Nf8B) [sage] 2022/09/24(土) 09:09:58.79 ID:RoHmfu6K0 >>94 あーたしかに数学で見るわ http://mevius.5ch.net/test/read.cgi/tech/1663235546/95
96: デフォルトの名無しさん (ワッチョイ 1e66-yYUR) [sage] 2022/09/24(土) 09:21:01.36 ID:P3HsQQA/0 メモリマップとかで、 A: 0x0000 - 0x0fff B: 0x1000 - 0x1fff みたいに末尾をfffにせずに、末尾は1足して表記する、という約束にした方が使いやすい http://mevius.5ch.net/test/read.cgi/tech/1663235546/96
97: デフォルトの名無しさん (ワッチョイ 9279-tX/F) [sage] 2022/09/24(土) 09:53:57.04 ID:N1C+NhRL0 そうすると最後は F: 0xf000 - 0x10000 と最後だけ2バイトでは表記しきれなくなるね http://mevius.5ch.net/test/read.cgi/tech/1663235546/97
98: デフォルトの名無しさん (ワッチョイ 1e66-yYUR) [sage] 2022/09/24(土) 10:03:22.17 ID:P3HsQQA/0 それはもう0でいい http://mevius.5ch.net/test/read.cgi/tech/1663235546/98
99: デフォルトの名無しさん (ワッチョイ 1228-AIux) [sage] 2022/09/24(土) 10:26:03.89 ID:8OhmHPew0 すみません、プログラミング初心者です、python構築について質問があります python3.10.7をインストールしたのですがコンドプロンプトで確認したらpython 3.9.12になっています もしかしたら以前DLしてたのかと思って探しても見つからないのですが こういうものなのでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1663235546/99
100: デフォルトの名無しさん (ワッチョイ 1228-AIux) [sage] 2022/09/24(土) 10:37:33.81 ID:8OhmHPew0 すみません、調べてみたらanacondaの方にpythonが入ってたみたいです http://mevius.5ch.net/test/read.cgi/tech/1663235546/100
101: デフォルトの名無しさん (ワッチョイ 372c-nvXy) [] 2022/09/24(土) 10:54:04.69 ID:gdtERKOB0 まーたanaconda被害者がひとり… http://mevius.5ch.net/test/read.cgi/tech/1663235546/101
102: デフォルトの名無しさん (ワッチョイ 1228-AIux) [sage] 2022/09/24(土) 10:55:37.98 ID:8OhmHPew0 >>101 そんなに有名な事でしたか… 調べても出てこなかったので http://mevius.5ch.net/test/read.cgi/tech/1663235546/102
103: デフォルトの名無しさん (ワッチョイ 3733-6qsd) [] 2022/09/24(土) 11:18:28.18 ID:4ctEaw520 君は悪くない、anacondaも悪くない anacondaを進める入門的な書籍やサイトが悪い http://mevius.5ch.net/test/read.cgi/tech/1663235546/103
104: デフォルトの名無しさん (ワッチョイ 3763-eFJV) [sage] 2022/09/24(土) 11:29:33.35 ID:8t4kL4/n0 pipでバイナリを配布できなかった時代ならまだしも、今そんな時代じゃないしな~ http://mevius.5ch.net/test/read.cgi/tech/1663235546/104
105: デフォルトの名無しさん (ワッチョイ 1e66-yYUR) [sage] 2022/09/24(土) 11:34:58.91 ID:P3HsQQA/0 何かのツールをインストールするとpythonも一緒にインストールされるのはよくある python2だったりもする 大抵は、自分用のバイナリを自分で使うだけなので迷惑はかけないけど、 行儀の悪い奴もいる http://mevius.5ch.net/test/read.cgi/tech/1663235546/105
106: デフォルトの名無しさん (ワッチョイ 1201-ut7I) [sage] 2022/09/24(土) 12:01:38.29 ID:52DloiQc0 >>98 さすがにそれはアホすぎる http://mevius.5ch.net/test/read.cgi/tech/1663235546/106
107: デフォルトの名無しさん (ワッチョイ 372c-nvXy) [] 2022/09/24(土) 12:23:45.45 ID:gdtERKOB0 未だにpython事始めで検索すると 無責任な入門サイトの「anaconda入れとけ☆」 ばっかり いやべつにいいんだけどさあanacondaでも。オールインワンで便利なのも分かるけど http://mevius.5ch.net/test/read.cgi/tech/1663235546/107
108: デフォルトの名無しさん (ワッチョイ 4b17-NGtF) [sage] 2022/09/24(土) 13:25:40.55 ID:mEJjKZc00 anacondaでもpipでも両方使えばいいジャマイカ http://mevius.5ch.net/test/read.cgi/tech/1663235546/108
109: デフォルトの名無しさん (オッペケ Sr47-Nf8B) [sage] 2022/09/24(土) 13:33:00.23 ID:+zHy6u5Kr condaのコマンドで新しい環境作れるようにしたらスタンドアロンのpythonが外れた記憶ある http://mevius.5ch.net/test/read.cgi/tech/1663235546/109
110: デフォルトの名無しさん (ワッチョイ 5f01-DGnU) [sage] 2022/09/24(土) 15:33:58.69 ID:BGgCMaIl0 俺も初心者の頃はアナコンダ入れてた。 けど後から無駄も多く必要ないことがわかったのでアンインストールした。 pythonとVSCodeあれば事足りる。 http://mevius.5ch.net/test/read.cgi/tech/1663235546/110
111: デフォルトの名無しさん (ワッチョイ 1214-P81A) [sage] 2022/09/24(土) 17:32:16.78 ID:nYu0cH9J0 ファイル名に使えない文字を全角に変換するコードってこんなに長くなるものなんですか? https://qiita.com/kusunamisuna/items/a32679874afedc032158 name_ng = ["/","\",":","*","?","<",">","|"] こんな感じでリストに入れてfor文の中で replace で置換すれば良いんじゃないかと思ったけど、リストにする段階でエラーになります 上記のURLの記述が最適解? 簡略化された書き方があったら教えてほしいです。 http://mevius.5ch.net/test/read.cgi/tech/1663235546/111
112: デフォルトの名無しさん [sage] 2022/09/24(土) 17:37:12.69 ID:xsaou6hs a=True b=True aかつbがTrue、それ以外の全て の条件って if not (a and b): でよかったっけ・・? http://mevius.5ch.net/test/read.cgi/tech/1663235546/112
113: デフォルトの名無しさん (ブーイモ MMde-zdrj) [sage] 2022/09/24(土) 18:00:41.70 ID:thjqxE2JM >>111 translate使えばforすらいらない http://mevius.5ch.net/test/read.cgi/tech/1663235546/113
114: デフォルトの名無しさん (ワッチョイ b247-tX/F) [sage] 2022/09/24(土) 18:29:31.09 ID:LDtPUxey0 >>111 その記事が最適かどうかは別問題として、まず0x5cをちゃんとエスケープして、あなたの考えを動くコードとして完成させよう その上で、記事のコードと分かりやすさや速度を気の済むまで比較してみればよい http://mevius.5ch.net/test/read.cgi/tech/1663235546/114
115: デフォルトの名無しさん (ワッチョイ 1214-P81A) [sage] 2022/09/24(土) 19:22:50.96 ID:nYu0cH9J0 >>113 調べて試してみます >>114 そもそも ”\” は文字列としても単体では使うことができない感じですかね? 知らなかったです。教えてくれてありがとうございます http://mevius.5ch.net/test/read.cgi/tech/1663235546/115
116: デフォルトの名無しさん (アウアウウー Sa43-a1Je) [] 2022/09/24(土) 20:25:24.85 ID:7pBAspe1a r'hoge\hoge' http://mevius.5ch.net/test/read.cgi/tech/1663235546/116
117: デフォルトの名無しさん (ワッチョイ 127d-nvXy) [] 2022/09/25(日) 00:00:20.77 ID:TfTFVrn20 >>112 if all([a, b]): else http://mevius.5ch.net/test/read.cgi/tech/1663235546/117
118: デフォルトの名無しさん (ワッチョイ 1e66-yYUR) [sage] 2022/09/25(日) 00:30:59.06 ID:wq9M03AC0 allとanyは積極的に使おう フラグを別に持つとか途中で抜けてループ変数を見るとか、 何でレガシーな言語はそれで満足してたのか判らん http://mevius.5ch.net/test/read.cgi/tech/1663235546/118
119: デフォルトの名無しさん (ワッチョイ b302-QcAE) [] 2022/09/25(日) 02:03:20.35 ID:ouzeiwB30 今日からPython始めたんだけど、エラーが出て動かなくて悩んでたらインデントが原因だったw 調べたらインデント自体プログラム構造的に意味を持ってたんだな。。。 http://mevius.5ch.net/test/read.cgi/tech/1663235546/119
120: デフォルトの名無しさん (ワッチョイ 1214-P81A) [sage] 2022/09/25(日) 05:32:21.54 ID:WCcUyzUQ0 少しコードが長くなってきたので、関数を定義してみようと思ったのですが 関数を使うくらいなら、最初からclassとmethodでやった方が後々便利ですかね? それから現段階ではまだinstance変数を使うかどうかは不明ですが classの最初に__init__は決まり文句として書いておいて良いのでしょうか? 仮に全く使わなかった場合にバグの元になったりするのでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1663235546/120
121: デフォルトの名無しさん (ワッチョイ 372c-nvXy) [] 2022/09/25(日) 05:38:14.60 ID:iEmY5l+s0 そのレベルならまず関数に慣れよう classはそのあと http://mevius.5ch.net/test/read.cgi/tech/1663235546/121
122: デフォルトの名無しさん (ワッチョイ 1214-P81A) [sage] 2022/09/25(日) 05:54:55.13 ID:WCcUyzUQ0 了解しました http://mevius.5ch.net/test/read.cgi/tech/1663235546/122
123: デフォルトの名無しさん (ワッチョイ 96bb-sDLX) [sage] 2022/09/25(日) 11:02:47.56 ID:sQFmQmse0 classを使うほうが常に優れていると思ってるなら認識を改めたほうがいいよ。 classと関数両方使えるがpythonのメリット。 標準ライブラリだって両方共存してるのにどちらかを捨てるなんてもったいない http://mevius.5ch.net/test/read.cgi/tech/1663235546/123
124: デフォルトの名無しさん (ワッチョイ 4b17-NGtF) [sage] 2022/09/25(日) 11:22:42.32 ID:Sdaj2srm0 自己満だからといっていつも意識的にそれらを考えていかなければより良い設計はできないのかもしれない http://mevius.5ch.net/test/read.cgi/tech/1663235546/124
125: デフォルトの名無しさん (ワッチョイ b302-nX9g) [sage] 2022/09/25(日) 11:43:23.68 ID:rlnwElI30 クラスはメンバ変数にselfが強制だからコードが冗長になって嫌だわ http://mevius.5ch.net/test/read.cgi/tech/1663235546/125
126: デフォルトの名無しさん (オッペケ Sr47-d9EM) [] 2022/09/25(日) 12:37:00.29 ID:uj3dGGMEr >>125 インデントも深くなるし、状態持つ必要が無ければモジュール化で十分よな http://mevius.5ch.net/test/read.cgi/tech/1663235546/126
127: デフォルトの名無しさん (ワッチョイ 1e66-yYUR) [sage] 2022/09/25(日) 12:49:19.19 ID:wq9M03AC0 大仰なクラスを作ろうとするから インスタンス変数が2つだけ、みたいなのでも十分役立つ http://mevius.5ch.net/test/read.cgi/tech/1663235546/127
128: デフォルトの名無しさん (ワッチョイ 1610-d9EM) [] 2022/09/25(日) 17:18:10.55 ID:hs4ndUhv0 >>127 それくらいならNamedTupleでも良いかな http://mevius.5ch.net/test/read.cgi/tech/1663235546/128
129: デフォルトの名無しさん (ワッチョイ 372c-nvXy) [] 2022/09/25(日) 17:41:46.06 ID:iEmY5l+s0 dataclassええで http://mevius.5ch.net/test/read.cgi/tech/1663235546/129
130: デフォルトの名無しさん (ワッチョイ 4b08-KM/t) [sage] 2022/09/25(日) 17:54:34.18 ID:AFTbeWYX0 クラスは実装の詳細を見せたくない時に限る http://mevius.5ch.net/test/read.cgi/tech/1663235546/130
131: デフォルトの名無しさん (ワッチョイ 1610-Nf8B) [sage] 2022/09/26(月) 07:24:51.77 ID:ciNDFZ6I0 クラス名をclass Hoge ファイル名をhoge.py インポートでimport hoge インスタンス名何にしようかいつも悩む ??? = hoge.Hoge() http://mevius.5ch.net/test/read.cgi/tech/1663235546/131
132: デフォルトの名無しさん (ワッチョイ 2f97-5djn) [] 2022/09/26(月) 09:07:29.52 ID:P9G+/qqR0 >>81 そもそも[0,1]のときにx[0]を2つ取り出したいのかどうかがよくわからないな あと、最大(?)は[0,10]じゃないか? [0,9]のときと[0,10]のときでどう処理を変えたいのかよくわからない 半開区間に含まれる最小最大を取り出したいなら、 for i in [idxs[0], idxs[1] - 1]でいいと思うのだけどこれは嫌? http://mevius.5ch.net/test/read.cgi/tech/1663235546/132
133: デフォルトの名無しさん (ワッチョイ 2f97-5djn) [] 2022/09/26(月) 09:12:30.59 ID:P9G+/qqR0 木構造とかグラフ構造を自作したいなら(間々ある)、 クラスにした方が便利なときある気がするけどな。 get_tree_children(node)とかしだすなら、node.children()の方が名前空間がすっきりしていいし。 実装の詳細を見せたくないかどうかというよりは、関心の分離をしたいかどうかによるような気がするな。 確かにクラス作るまでもないようなことは多いけど。 http://mevius.5ch.net/test/read.cgi/tech/1663235546/133
134: デフォルトの名無しさん (ワッチョイ 1e66-yYUR) [sage] 2022/09/26(月) 20:32:27.38 ID:b9hyANFk0 >>128 値が変えられないがな http://mevius.5ch.net/test/read.cgi/tech/1663235546/134
135: デフォルトの名無しさん (ワッチョイ 429b-+bWc) [sage] 2022/09/26(月) 23:15:54.08 ID:QR+uVx8I0 python 3.9.10 a = (1, 2, 3) b = a c = (1, 2, 3) print(a==b) print(a is b) print(a==c) print(a is c) #True? なぜ a is c が true になるのでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1663235546/135
136: デフォルトの名無しさん (ワッチョイ 429b-+bWc) [sage] 2022/09/26(月) 23:17:59.46 ID:QR+uVx8I0 >>135 ideone に貼っときます https://ideone.com/yVmxfv なぜでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1663235546/136
137: デフォルトの名無しさん (ワッチョイ 1e66-yYUR) [sage] 2022/09/26(月) 23:31:03.60 ID:b9hyANFk0 a = 1 c = 1 の時と同じ理由 http://mevius.5ch.net/test/read.cgi/tech/1663235546/137
138: デフォルトの名無しさん (ワッチョイ 4b17-NGtF) [sage] 2022/09/26(月) 23:32:02.41 ID:Gide+MMY0 >>136 ならない http://mevius.5ch.net/test/read.cgi/tech/1663235546/138
139: デフォルトの名無しさん (ワッチョイ 4b17-NGtF) [sage] 2022/09/26(月) 23:33:01.37 ID:Gide+MMY0 ほらよ https://i.imgur.com/mESpBvj.jpg http://mevius.5ch.net/test/read.cgi/tech/1663235546/139
140: デフォルトの名無しさん (ワッチョイ d201-/Peb) [sage] 2022/09/26(月) 23:49:19.92 ID:eE4Lst2k0 >>139 それREPLでやってるからinterningが効いてないじゃないかな >>135 Tupleはimmutableだからaとcが同じオブジェクトを指しても問題なくて Pythonが最適化をした場合はa is cがTrueになるケースがある 「interning」でググってみて 例えばTupleを関数で返すようにすればinterningされずにFalseになると思う def foo(x): return (x, x+1, x+2) a = foo(1) c = foo(1) http://mevius.5ch.net/test/read.cgi/tech/1663235546/140
141: デフォルトの名無しさん (ワッチョイ 4212-+bWc) [sage] 2022/09/27(火) 00:20:20.92 ID:LFY5tutJ0 >>140 ありがとうございます、オプティマイゼーションの余地がある、ということですね、納得しました http://mevius.5ch.net/test/read.cgi/tech/1663235546/141
142: デフォルトの名無しさん (ワッチョイ 2f97-5djn) [] 2022/09/27(火) 19:02:24.07 ID:zjZtbJ3M0 a is cが真になるかはかなりケースバイケースな気がするし、 中身を比較したいんだったら使うべきじゃないね 本当に同じtupleインスタンスかどうかを確認したいときだけにすべき http://mevius.5ch.net/test/read.cgi/tech/1663235546/142
143: デフォルトの名無しさん (ワッチョイ 3733-tX/F) [] 2022/09/27(火) 22:33:08.85 ID:3OHfLHhN0 tupleだけの話ではなくてどの型でも同じだけどね 例えば文字列とか http://mevius.5ch.net/test/read.cgi/tech/1663235546/143
144: デフォルトの名無しさん [sage] 2022/09/27(火) 23:35:04.66 ID:tKd9rAjb n=12345.67 小数点以下が何桁あるのか調べたいのですが len(str(n).split(".")[1]) if isinstance(n, float) else 0 こんなんでいいですかね・・? http://mevius.5ch.net/test/read.cgi/tech/1663235546/144
145: デフォルトの名無しさん (ワッチョイ 3733-tX/F) [] 2022/09/27(火) 23:51:45.87 ID:3OHfLHhN0 >>144 https://ideone.com/pSUvOH http://mevius.5ch.net/test/read.cgi/tech/1663235546/145
146: デフォルトの名無しさん (ワッチョイ 1610-DrlT) [] 2022/09/27(火) 23:53:56.84 ID:+joc5Asc0 >>144 誤差で予想外の挙動しそうだからDecimal使う方がいい http://mevius.5ch.net/test/read.cgi/tech/1663235546/146
147: デフォルトの名無しさん (ワッチョイ 2701-tX/F) [sage] 2022/09/28(水) 02:27:12.38 ID:OOL0jr8Q0 >>144 それだと n=1.0 -> 1 n=0.00001 -> IndexError になる len(format(n,".17f").split(".")[1].rstrip("0")) 後ろのif isinstance(n, float) else 0も不要 n=1.0 -> 0 n=0.00001 -> 5 http://mevius.5ch.net/test/read.cgi/tech/1663235546/147
148: デフォルトの名無しさん [sage] 2022/09/28(水) 09:19:00.77 ID:9I9ISsCh >>145-147 たしかに 0.30000000000000004に対して17得られたのは正解だと思いますが 0.00001で1e-05になっててエラーでました Decimalかformat使ってみようと思います ありがとうございました http://mevius.5ch.net/test/read.cgi/tech/1663235546/148
149: デフォルトの名無しさん [sage] 2022/09/28(水) 10:07:58.97 ID:9I9ISsCh やりたかったことは 受けとった1234.56や0.12345などの固定小数点数に 0.1とかを掛けたり足したりして計算、変形したのを 受け取った固定小数点数の整数部と小数部の数を維持したまま 固定小数点か文字列で処理したかったのですが 改めてやってみるとなんか勝手に桁数が変わってしまいますね・・ 1234.56で受け取った場合、1.05を掛けたとき→1296.288ではなく1296.29 0.12345で受け取った場合、1.05を掛けたとき→0.1296225ではなく0.12962 1234で受け取った場合、1.05を掛けたとき→1295.7でもいいし1296でもいいし1296.0でもいい みたいにしたかったのですが難しい・・ http://mevius.5ch.net/test/read.cgi/tech/1663235546/149
150: デフォルトの名無しさん [sage] 2022/09/28(水) 10:17:26.42 ID:9I9ISsCh from decimal import Decimal str(Decimal(0.123456)) str(Decimal(0.123456)*Decimal(1.05)) #'0.1296288000000000015945911258' あれ、そもそも0.123456の小数部の桁数はどうやって知るんだっけ?? てところで詰まってます・・ http://mevius.5ch.net/test/read.cgi/tech/1663235546/150
151: デフォルトの名無しさん [sage] 2022/09/28(水) 11:25:04.93 ID:9I9ISsCh 冗長な気がしますがこんな感じにしてみました 何かバグが発生しそうな気がします from decimal import Decimal ary=[1234.5,165,0.34,0.0001,0.000001,3.00001,0.1*3,123456] def f(n): s=format(n) return int(s.split("-")[1]) if "-" in s else len(s.split(".")[1].rstrip("0")) if "." in s else 0 r=1.05 for n in ary: d=f(n) c=Decimal(n)*Decimal(r) rs=c.quantize(Decimal("0."+("0"*d))) print(n,c,d) print("-->",rs,"\n") http://mevius.5ch.net/test/read.cgi/tech/1663235546/151
152: デフォルトの名無しさん [sage] 2022/09/28(水) 11:30:47.23 ID:9I9ISsCh 連投すみません 結果です https://ideone.com/exojEw http://mevius.5ch.net/test/read.cgi/tech/1663235546/152
153: デフォルトの名無しさん (ワンミングク MM42-nX9g) [sage] 2022/09/28(水) 13:38:45.48 ID:E42G0/DqM 元々の桁数でroundしたいって感じなのかな http://mevius.5ch.net/test/read.cgi/tech/1663235546/153
154: デフォルトの名無しさん (ワッチョイ 2701-tX/F) [sage] 2022/09/28(水) 18:25:19.27 ID:OOL0jr8Q0 >>152 format使うの提案したけど使わないほうがよさそう、誤差がでる f(n): 負数で落ちる s=str(n).lstrip("-") c=Decimal(n*r) のところで n*r で誤差がでる c=Decimal(str(n)) * Decimal(str(r)) 負数対応四捨五入 -0.015 を四捨五入して -0.02 rs=((c > 0) - (c < 0)) * abs(c).quantize(Decimal("0."+("0"*d)), rounding=ROUND_HALF_UP) -0.015 を四捨五入して -0.01のようにしたい場合 rs=c.quantize(Decimal("0."+("0"*d)), rounding=ROUND_HALF_UP) 四捨五入したいのかよくわからんかった、roundingは好みのオプションでどうぞ http://mevius.5ch.net/test/read.cgi/tech/1663235546/154
155: デフォルトの名無しさん [sage] 2022/09/28(水) 19:37:21.94 ID:9I9ISsCh >>154 ありがとうございます やはり至るところで誤差が発生するのですね 四捨五入は今回の用途ではどちらでも良い感じです せっかくなのでまとめてみました https://ideone.com/JmTu06 ありがとうございました http://mevius.5ch.net/test/read.cgi/tech/1663235546/155
156: デフォルトの名無しさん (ワッチョイ 96bb-nd6Q) [sage] 2022/09/28(水) 19:42:02.44 ID:o0cHd3Tq0 先にIEEE754読んでみては? 誤差に関しての勘所がわかるようになる http://mevius.5ch.net/test/read.cgi/tech/1663235546/156
157: デフォルトの名無しさん (ワッチョイ 2f97-5djn) [] 2022/09/28(水) 20:32:50.93 ID:x5UMfEp40 Pythonに限らず浮動小数点数を使う場合は常に誤差の問題がつきまとう。 0.1というのがすでに二進数ではきっちり表現できない数字なので、有効数字を何桁にするのかというのは実装の段階で決めなくちゃならない。 https://docs.python.org/ja/3/tutorial/floatingpoint.html 正確に表現できるのは、0.5,0.25,0.125...と1を2で割っていった数とその整数倍のみ 0.1は1/(2×5)となり1/5が2進数では循環小数となり浮動小数点数では正確に表せない。 ということを念頭に置いてまず何がやりたいか考えた方がいいよ。 decimalモジュールは便利そうだね。 http://mevius.5ch.net/test/read.cgi/tech/1663235546/157
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 845 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.054s