!extend:default:vvvvv:1000:1024
!extend:default:vvvvv:1000:1024
↑スレ立てる毎に減るので、減ってたら3つに補充すること。
・当スレにRubyのソースコード類を書くことを禁ず
・Ruby等、Pythonではないプログラミング言語での回答類・質問を書くのも禁止
・「Ruby では」「Rubyでは」「Rails」正規表現→「^クソチョンw$」をNGワード登録推奨
・エラーを解決したいときは、かならず
エラー文(勝手に省略orスクショうp等の横着禁止)と
おま環(Pythonのバージョン番号+OS名とバージョン+IDE名)を書け。
★Pythonのソースコードを5ちゃんに直貼はインデントが崩壊するので、
↓等のコードうp用サイトに貼ってきてくだしあ。(スクリーンショットをうpる「横着」禁止)
ttps://techiedelight.com/compiler/ Run Code機能あり。
ttp://ideone.com/ デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。
ttp://pastebin.com/ まずまずシンプル。
ttp://dpaste.com/ とてもシンプル。消えるまでの日数は十分長ーく指定のこと。
◇Pythonオフィシャルサイト http://www.python.org/
◇Pythonドキュメント https://docs.python.org/ja/3/
◇まとめwiki ttp://python.rdy.jp/
●関連スレ● 自称初心者は↓へ
【まず1嫁】くだすれPython(超初心者用) その57
http://mevius.5ch.net/test/read.cgi/tech/1653225908/
〇前スレ〇
Pythonのお勉強 Part67
https://mevius.5ch.net/test/read.cgi/tech/1653540315/
次スレの建立は>>985が挑戦する。(980通過して24h後も落ちなくなった)
### END of TEMPLATE ###
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
探検
Pythonのお勉強 Part68
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ ab79-ia8c)
2022/09/15(木) 18:52:26.67ID:VqLViKoX062デフォルトの名無しさん (ワッチョイ ffdb-OuJ4)
2022/09/21(水) 20:30:50.72ID:2GcRUbUk0 繰り返される任意の文字列を1回の繰り返しに直す方法ありませんか?
"abcdabcdabcdefg"→"abcdefg"(abcdの繰り返し)
"abababc"→"abc"(abの繰り返し)
"aabbaabbc"→"aabbc"(aabbの繰り返し)
パターンの長さはとりあえず固定でいいので(例えば4でabcdとaabbはマッチできる)一気に置換する方法ないでしょうか
"abcdabcdabcdefg"→"abcdefg"(abcdの繰り返し)
"abababc"→"abc"(abの繰り返し)
"aabbaabbc"→"aabbc"(aabbの繰り返し)
パターンの長さはとりあえず固定でいいので(例えば4でabcdとaabbはマッチできる)一気に置換する方法ないでしょうか
63デフォルトの名無しさん (ワッチョイ 9f14-t1N9)
2022/09/21(水) 20:30:55.54ID:b5Bal3Dn064デフォルトの名無しさん (ワッチョイ d733-E+l9)
2022/09/21(水) 20:31:19.96ID:yjl6UhSi065デフォルトの名無しさん (ワッチョイ 9f14-t1N9)
2022/09/21(水) 20:52:17.39ID:b5Bal3Dn066デフォルトの名無しさん (ワッチョイ 9f14-t1N9)
2022/09/21(水) 20:58:11.32ID:b5Bal3Dn0 変数名とか色々、短く略して書いた方が良いのでしょうか?
入力時間的には大差ないので、見返した時に分かりやすいようにしてるのですが
これは初心者だからで、経験者から見ると見苦しいとか、むしろ略されてた方が見やすいとかありますか?
入力時間的には大差ないので、見返した時に分かりやすいようにしてるのですが
これは初心者だからで、経験者から見ると見苦しいとか、むしろ略されてた方が見やすいとかありますか?
67デフォルトの名無しさん (ワッチョイ d733-E+l9)
2022/09/21(水) 22:11:39.31ID:yjl6UhSi0 >>62
競プロの問題?
競プロの問題?
68デフォルトの名無しさん (ワッチョイ 9f01-E+l9)
2022/09/21(水) 22:25:22.90ID:sVtx8qcf069デフォルトの名無しさん (ワッチョイ d763-DwLj)
2022/09/21(水) 22:30:53.91ID:4122FyYT0 LZ78の考え方の応用で行け
70デフォルトの名無しさん (ワッチョイ ffdb-OuJ4)
2022/09/21(水) 22:52:22.34ID:2GcRUbUk071デフォルトの名無しさん (ワッチョイ ffdb-OuJ4)
2022/09/21(水) 22:55:15.34ID:2GcRUbUk0 あ、cdefcdefが繰り返されていたんですね…
最終的に人がチェックする工程があるので、先にマッチした方優先とかで大丈夫です
最終的に人がチェックする工程があるので、先にマッチした方優先とかで大丈夫です
72デフォルトの名無しさん (ワッチョイ d733-E+l9)
2022/09/21(水) 23:11:15.16ID:yjl6UhSi0 'abcabcdabcabcdefg'
だったら?
だったら?
73デフォルトの名無しさん (ワッチョイ d74c-ldZd)
2022/09/21(水) 23:16:47.91ID:VS1qJent0 長さ4固定でいいなら、正規表現あたりで
>>> import re
>>> re.sub(r'(....)\1+', r'\1', "abcdabcdabcdefg")
'abcdefg'
>>> re.sub(r'(....)\1+', r'\1', "aabbaabbc")
'aabbc'
>>> import re
>>> re.sub(r'(....)\1+', r'\1', "abcdabcdabcdefg")
'abcdefg'
>>> re.sub(r'(....)\1+', r'\1', "aabbaabbc")
'aabbc'
74デフォルトの名無しさん (ワッチョイ 9f01-bNpc)
2022/09/21(水) 23:21:53.64ID:757dNGj4075デフォルトの名無しさん (ワッチョイ ffbb-hJeG)
2022/09/21(水) 23:30:41.78ID:Qxk2XzJU0 そこにforを使うなんて
76デフォルトの名無しさん (ワッチョイ ffdb-OuJ4)
2022/09/21(水) 23:49:19.41ID:2GcRUbUk077デフォルトの名無しさん (アウアウウー Sa5b-8eP5)
2022/09/22(木) 11:05:41.34ID:u9/ouAZsa >>39
いらね
いらね
78デフォルトの名無しさん (アウアウウー Sa5b-8eP5)
2022/09/22(木) 11:11:13.09ID:u9/ouAZsa >>72 の回答はよ
79デフォルトの名無しさん (ワッチョイ bf66-C6xl)
2022/09/22(木) 11:12:02.23ID:ufV304t80 見てすぐ判らんようなもんは使うべきではないな
80デフォルトの名無しさん (ワッチョイ f7da-PMJU)
2022/09/22(木) 13:04:09.56ID:kBSagdtc0 abracadabra
81デフォルトの名無しさん (ワッチョイ d72c-3X0R)
2022/09/23(金) 06:05:04.44ID: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:
みたいなのは嫌です
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:
みたいなのは嫌です
82デフォルトの名無しさん (ガックシ 068f-G+99)
2022/09/23(金) 06:29:46.22ID:ciin+wbx6 その11にはどういう意味があるんですか
83デフォルトの名無しさん (テテンテンテン MM8f-UC+/)
2022/09/23(金) 06:42:29.24ID:j5q+73vfM >>82
そもそも、「いい書き方」って何ですか
そもそも、「いい書き方」って何ですか
84デフォルトの名無しさん (ワッチョイ ffbb-AZvI)
2022/09/23(金) 07:14:40.79ID:ILPrLpfC0 これ、やべぇな
https://gigazine.net/news/20220922-python-old-bug-unpatched-15-years/
GitHub Copilot とかで広まっちゃうのか
https://gigazine.net/news/20220922-python-old-bug-unpatched-15-years/
GitHub Copilot とかで広まっちゃうのか
85デフォルトの名無しさん (スッププ Sdbf-HYId)
2022/09/23(金) 09:31:57.58ID:nucVVsrtd86デフォルトの名無しさん (ワッチョイ bf66-C6xl)
2022/09/23(金) 09:39:19.95ID:08DmGtnT0 そんな風に読んだけど違うの?
87デフォルトの名無しさん (ワッチョイ d763-DwLj)
2022/09/23(金) 10:22:01.14ID:7VR4OLWz0 確かにtarを使うリポジトリではcopilot経由で広がる可能性があるけど、tarを使うリポジトリなんてリポジトリ検索してもそんなにないので実数としては眉唾
依存関係から侵入してくる方がよっぽど可能性が高い
Copilotが批判されがちなので批判の文脈で喋ったほうが肯定的に聞いてもらえるだろうという余計な意図が入ってるのではと邪推してしまうね:)
依存関係から侵入してくる方がよっぽど可能性が高い
Copilotが批判されがちなので批判の文脈で喋ったほうが肯定的に聞いてもらえるだろうという余計な意図が入ってるのではと邪推してしまうね:)
88デフォルトの名無しさん (スッププ Sdbf-HYId)
2022/09/23(金) 12:26:25.28ID:nucVVsrtd >>86
> Trellixによると、35万件を超えるリポジトリがこの脆弱性に脅かされていると見られ、その多くでGitHub Copilotなどの自動ツールが使われているとのこと。
前知識なく普通にこれ読んだら、35万件のリポジトリがGitHub Copilptを使っている、そして、Copilotがその脆弱性の原因であると思うでしょ
というかこの記事書いた人はたぶんそのように誤解してる
> https://www.trellix.com/en-us/about/newsroom/stories/research/open-source-intelligence.html
まあソースも推計方法や論理がガバガバで似たようなレベルだが
> Trellixによると、35万件を超えるリポジトリがこの脆弱性に脅かされていると見られ、その多くでGitHub Copilotなどの自動ツールが使われているとのこと。
前知識なく普通にこれ読んだら、35万件のリポジトリがGitHub Copilptを使っている、そして、Copilotがその脆弱性の原因であると思うでしょ
というかこの記事書いた人はたぶんそのように誤解してる
> https://www.trellix.com/en-us/about/newsroom/stories/research/open-source-intelligence.html
まあソースも推計方法や論理がガバガバで似たようなレベルだが
89デフォルトの名無しさん (アウアウウー Sa5b-8eP5)
2022/09/23(金) 13:17:45.83ID:esyqbAqHa >>81 が何を考えてるのか詳しく知りたいなωωω
90デフォルトの名無しさん (ワッチョイ b302-nX9g)
2022/09/24(土) 01:05:33.05ID:WVAdUwxP091デフォルトの名無しさん (JP 0H1f-nvXy)
2022/09/24(土) 02:03:35.51ID:6DJLRQJMH92デフォルトの名無しさん (ワッチョイ 1201-ut7I)
2022/09/24(土) 07:13:39.52ID:52DloiQc0 単にインデックスの範囲とスライスを混同してるだけだろ
外部からの入力なら値のチェックは必須だしその時に調整しとけばいいだけ
外部からの入力なら値のチェックは必須だしその時に調整しとけばいいだけ
93デフォルトの名無しさん (ワッチョイ 1610-Nf8B)
2022/09/24(土) 07:29:05.56ID:RoHmfu6K0 一昔前のseabornのカラーマップだか忘れたけど1から数えて最後の数字を入れるようなインデックス指定を偶に見かける
[0, 10] → 0から9までと
[1, 10] → そもそも0が存在せず1から10
この2つの書き方にそれぞれ名前ついてたりする?
[0, 10] → 0から9までと
[1, 10] → そもそも0が存在せず1から10
この2つの書き方にそれぞれ名前ついてたりする?
94デフォルトの名無しさん (ワッチョイ f2b7-AIux)
2022/09/24(土) 08:37:46.88ID:3mLYFKO40 >>93
前者は「半開区間」として [0,10) といった表記にするのをよく見る
前者は「半開区間」として [0,10) といった表記にするのをよく見る
95デフォルトの名無しさん (ワッチョイ 1610-Nf8B)
2022/09/24(土) 09:09:58.79ID:RoHmfu6K0 >>94
あーたしかに数学で見るわ
あーたしかに数学で見るわ
96デフォルトの名無しさん (ワッチョイ 1e66-yYUR)
2022/09/24(土) 09:21:01.36ID:P3HsQQA/0 メモリマップとかで、
A: 0x0000 - 0x0fff
B: 0x1000 - 0x1fff
みたいに末尾をfffにせずに、末尾は1足して表記する、という約束にした方が使いやすい
A: 0x0000 - 0x0fff
B: 0x1000 - 0x1fff
みたいに末尾をfffにせずに、末尾は1足して表記する、という約束にした方が使いやすい
97デフォルトの名無しさん (ワッチョイ 9279-tX/F)
2022/09/24(土) 09:53:57.04ID:N1C+NhRL0 そうすると最後は
F: 0xf000 - 0x10000
と最後だけ2バイトでは表記しきれなくなるね
F: 0xf000 - 0x10000
と最後だけ2バイトでは表記しきれなくなるね
98デフォルトの名無しさん (ワッチョイ 1e66-yYUR)
2022/09/24(土) 10:03:22.17ID:P3HsQQA/0 それはもう0でいい
99デフォルトの名無しさん (ワッチョイ 1228-AIux)
2022/09/24(土) 10:26:03.89ID:8OhmHPew0 すみません、プログラミング初心者です、python構築について質問があります
python3.10.7をインストールしたのですがコンドプロンプトで確認したらpython 3.9.12になっています
もしかしたら以前DLしてたのかと思って探しても見つからないのですが
こういうものなのでしょうか?
python3.10.7をインストールしたのですがコンドプロンプトで確認したらpython 3.9.12になっています
もしかしたら以前DLしてたのかと思って探しても見つからないのですが
こういうものなのでしょうか?
100デフォルトの名無しさん (ワッチョイ 1228-AIux)
2022/09/24(土) 10:37:33.81ID:8OhmHPew0 すみません、調べてみたらanacondaの方にpythonが入ってたみたいです
101デフォルトの名無しさん (ワッチョイ 372c-nvXy)
2022/09/24(土) 10:54:04.69ID:gdtERKOB0 まーたanaconda被害者がひとり…
102デフォルトの名無しさん (ワッチョイ 1228-AIux)
2022/09/24(土) 10:55:37.98ID:8OhmHPew0103デフォルトの名無しさん (ワッチョイ 3733-6qsd)
2022/09/24(土) 11:18:28.18ID:4ctEaw520 君は悪くない、anacondaも悪くない
anacondaを進める入門的な書籍やサイトが悪い
anacondaを進める入門的な書籍やサイトが悪い
104デフォルトの名無しさん (ワッチョイ 3763-eFJV)
2022/09/24(土) 11:29:33.35ID:8t4kL4/n0 pipでバイナリを配布できなかった時代ならまだしも、今そんな時代じゃないしな~
105デフォルトの名無しさん (ワッチョイ 1e66-yYUR)
2022/09/24(土) 11:34:58.91ID:P3HsQQA/0 何かのツールをインストールするとpythonも一緒にインストールされるのはよくある
python2だったりもする
大抵は、自分用のバイナリを自分で使うだけなので迷惑はかけないけど、
行儀の悪い奴もいる
python2だったりもする
大抵は、自分用のバイナリを自分で使うだけなので迷惑はかけないけど、
行儀の悪い奴もいる
106デフォルトの名無しさん (ワッチョイ 1201-ut7I)
2022/09/24(土) 12:01:38.29ID:52DloiQc0 >>98
さすがにそれはアホすぎる
さすがにそれはアホすぎる
107デフォルトの名無しさん (ワッチョイ 372c-nvXy)
2022/09/24(土) 12:23:45.45ID:gdtERKOB0 未だにpython事始めで検索すると
無責任な入門サイトの「anaconda入れとけ☆」 ばっかり
いやべつにいいんだけどさあanacondaでも。オールインワンで便利なのも分かるけど
無責任な入門サイトの「anaconda入れとけ☆」 ばっかり
いやべつにいいんだけどさあanacondaでも。オールインワンで便利なのも分かるけど
108デフォルトの名無しさん (ワッチョイ 4b17-NGtF)
2022/09/24(土) 13:25:40.55ID:mEJjKZc00 anacondaでもpipでも両方使えばいいジャマイカ
109デフォルトの名無しさん (オッペケ Sr47-Nf8B)
2022/09/24(土) 13:33:00.23ID:+zHy6u5Kr condaのコマンドで新しい環境作れるようにしたらスタンドアロンのpythonが外れた記憶ある
110デフォルトの名無しさん (ワッチョイ 5f01-DGnU)
2022/09/24(土) 15:33:58.69ID:BGgCMaIl0 俺も初心者の頃はアナコンダ入れてた。
けど後から無駄も多く必要ないことがわかったのでアンインストールした。
pythonとVSCodeあれば事足りる。
けど後から無駄も多く必要ないことがわかったのでアンインストールした。
pythonとVSCodeあれば事足りる。
111デフォルトの名無しさん (ワッチョイ 1214-P81A)
2022/09/24(土) 17:32:16.78ID:nYu0cH9J0 ファイル名に使えない文字を全角に変換するコードってこんなに長くなるものなんですか?
https://qiita.com/kusunamisuna/items/a32679874afedc032158
name_ng = ["/","\",":","*","?","<",">","|"]
こんな感じでリストに入れてfor文の中で replace で置換すれば良いんじゃないかと思ったけど、リストにする段階でエラーになります
上記のURLの記述が最適解?
簡略化された書き方があったら教えてほしいです。
https://qiita.com/kusunamisuna/items/a32679874afedc032158
name_ng = ["/","\",":","*","?","<",">","|"]
こんな感じでリストに入れてfor文の中で replace で置換すれば良いんじゃないかと思ったけど、リストにする段階でエラーになります
上記のURLの記述が最適解?
簡略化された書き方があったら教えてほしいです。
112デフォルトの名無しさん
2022/09/24(土) 17:37:12.69ID:xsaou6hs a=True
b=True
aかつbがTrue、それ以外の全て
の条件って
if not (a and b): でよかったっけ・・?
b=True
aかつbがTrue、それ以外の全て
の条件って
if not (a and b): でよかったっけ・・?
113デフォルトの名無しさん (ブーイモ MMde-zdrj)
2022/09/24(土) 18:00:41.70ID:thjqxE2JM >>111
translate使えばforすらいらない
translate使えばforすらいらない
114デフォルトの名無しさん (ワッチョイ b247-tX/F)
2022/09/24(土) 18:29:31.09ID:LDtPUxey0 >>111
その記事が最適かどうかは別問題として、まず0x5cをちゃんとエスケープして、あなたの考えを動くコードとして完成させよう
その上で、記事のコードと分かりやすさや速度を気の済むまで比較してみればよい
その記事が最適かどうかは別問題として、まず0x5cをちゃんとエスケープして、あなたの考えを動くコードとして完成させよう
その上で、記事のコードと分かりやすさや速度を気の済むまで比較してみればよい
115デフォルトの名無しさん (ワッチョイ 1214-P81A)
2022/09/24(土) 19:22:50.96ID:nYu0cH9J0116デフォルトの名無しさん (アウアウウー Sa43-a1Je)
2022/09/24(土) 20:25:24.85ID:7pBAspe1a r'hoge\hoge'
117デフォルトの名無しさん (ワッチョイ 127d-nvXy)
2022/09/25(日) 00:00:20.77ID:TfTFVrn20118デフォルトの名無しさん (ワッチョイ 1e66-yYUR)
2022/09/25(日) 00:30:59.06ID:wq9M03AC0 allとanyは積極的に使おう
フラグを別に持つとか途中で抜けてループ変数を見るとか、
何でレガシーな言語はそれで満足してたのか判らん
フラグを別に持つとか途中で抜けてループ変数を見るとか、
何でレガシーな言語はそれで満足してたのか判らん
119デフォルトの名無しさん (ワッチョイ b302-QcAE)
2022/09/25(日) 02:03:20.35ID:ouzeiwB30 今日からPython始めたんだけど、エラーが出て動かなくて悩んでたらインデントが原因だったw
調べたらインデント自体プログラム構造的に意味を持ってたんだな。。。
調べたらインデント自体プログラム構造的に意味を持ってたんだな。。。
120デフォルトの名無しさん (ワッチョイ 1214-P81A)
2022/09/25(日) 05:32:21.54ID:WCcUyzUQ0 少しコードが長くなってきたので、関数を定義してみようと思ったのですが
関数を使うくらいなら、最初からclassとmethodでやった方が後々便利ですかね?
それから現段階ではまだinstance変数を使うかどうかは不明ですが
classの最初に__init__は決まり文句として書いておいて良いのでしょうか?
仮に全く使わなかった場合にバグの元になったりするのでしょうか?
関数を使うくらいなら、最初からclassとmethodでやった方が後々便利ですかね?
それから現段階ではまだinstance変数を使うかどうかは不明ですが
classの最初に__init__は決まり文句として書いておいて良いのでしょうか?
仮に全く使わなかった場合にバグの元になったりするのでしょうか?
121デフォルトの名無しさん (ワッチョイ 372c-nvXy)
2022/09/25(日) 05:38:14.60ID:iEmY5l+s0 そのレベルならまず関数に慣れよう
classはそのあと
classはそのあと
122デフォルトの名無しさん (ワッチョイ 1214-P81A)
2022/09/25(日) 05:54:55.13ID:WCcUyzUQ0 了解しました
123デフォルトの名無しさん (ワッチョイ 96bb-sDLX)
2022/09/25(日) 11:02:47.56ID:sQFmQmse0 classを使うほうが常に優れていると思ってるなら認識を改めたほうがいいよ。
classと関数両方使えるがpythonのメリット。
標準ライブラリだって両方共存してるのにどちらかを捨てるなんてもったいない
classと関数両方使えるがpythonのメリット。
標準ライブラリだって両方共存してるのにどちらかを捨てるなんてもったいない
124デフォルトの名無しさん (ワッチョイ 4b17-NGtF)
2022/09/25(日) 11:22:42.32ID:Sdaj2srm0 自己満だからといっていつも意識的にそれらを考えていかなければより良い設計はできないのかもしれない
125デフォルトの名無しさん (ワッチョイ b302-nX9g)
2022/09/25(日) 11:43:23.68ID:rlnwElI30 クラスはメンバ変数にselfが強制だからコードが冗長になって嫌だわ
126デフォルトの名無しさん (オッペケ Sr47-d9EM)
2022/09/25(日) 12:37:00.29ID:uj3dGGMEr >>125
インデントも深くなるし、状態持つ必要が無ければモジュール化で十分よな
インデントも深くなるし、状態持つ必要が無ければモジュール化で十分よな
127デフォルトの名無しさん (ワッチョイ 1e66-yYUR)
2022/09/25(日) 12:49:19.19ID:wq9M03AC0 大仰なクラスを作ろうとするから
インスタンス変数が2つだけ、みたいなのでも十分役立つ
インスタンス変数が2つだけ、みたいなのでも十分役立つ
128デフォルトの名無しさん (ワッチョイ 1610-d9EM)
2022/09/25(日) 17:18:10.55ID:hs4ndUhv0 >>127
それくらいならNamedTupleでも良いかな
それくらいならNamedTupleでも良いかな
129デフォルトの名無しさん (ワッチョイ 372c-nvXy)
2022/09/25(日) 17:41:46.06ID:iEmY5l+s0 dataclassええで
130デフォルトの名無しさん (ワッチョイ 4b08-KM/t)
2022/09/25(日) 17:54:34.18ID:AFTbeWYX0 クラスは実装の詳細を見せたくない時に限る
131デフォルトの名無しさん (ワッチョイ 1610-Nf8B)
2022/09/26(月) 07:24:51.77ID:ciNDFZ6I0 クラス名をclass Hoge
ファイル名をhoge.py
インポートでimport hoge
インスタンス名何にしようかいつも悩む
??? = hoge.Hoge()
ファイル名をhoge.py
インポートでimport hoge
インスタンス名何にしようかいつも悩む
??? = hoge.Hoge()
132デフォルトの名無しさん (ワッチョイ 2f97-5djn)
2022/09/26(月) 09:07:29.52ID:P9G+/qqR0 >>81
そもそも[0,1]のときにx[0]を2つ取り出したいのかどうかがよくわからないな
あと、最大(?)は[0,10]じゃないか?
[0,9]のときと[0,10]のときでどう処理を変えたいのかよくわからない
半開区間に含まれる最小最大を取り出したいなら、
for i in [idxs[0], idxs[1] - 1]でいいと思うのだけどこれは嫌?
そもそも[0,1]のときにx[0]を2つ取り出したいのかどうかがよくわからないな
あと、最大(?)は[0,10]じゃないか?
[0,9]のときと[0,10]のときでどう処理を変えたいのかよくわからない
半開区間に含まれる最小最大を取り出したいなら、
for i in [idxs[0], idxs[1] - 1]でいいと思うのだけどこれは嫌?
133デフォルトの名無しさん (ワッチョイ 2f97-5djn)
2022/09/26(月) 09:12:30.59ID:P9G+/qqR0 木構造とかグラフ構造を自作したいなら(間々ある)、
クラスにした方が便利なときある気がするけどな。
get_tree_children(node)とかしだすなら、node.children()の方が名前空間がすっきりしていいし。
実装の詳細を見せたくないかどうかというよりは、関心の分離をしたいかどうかによるような気がするな。
確かにクラス作るまでもないようなことは多いけど。
クラスにした方が便利なときある気がするけどな。
get_tree_children(node)とかしだすなら、node.children()の方が名前空間がすっきりしていいし。
実装の詳細を見せたくないかどうかというよりは、関心の分離をしたいかどうかによるような気がするな。
確かにクラス作るまでもないようなことは多いけど。
134デフォルトの名無しさん (ワッチョイ 1e66-yYUR)
2022/09/26(月) 20:32:27.38ID:b9hyANFk0 >>128
値が変えられないがな
値が変えられないがな
135デフォルトの名無しさん (ワッチョイ 429b-+bWc)
2022/09/26(月) 23:15:54.08ID: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 になるのでしょうか?
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 になるのでしょうか?
136デフォルトの名無しさん (ワッチョイ 429b-+bWc)
2022/09/26(月) 23:17:59.46ID:QR+uVx8I0137デフォルトの名無しさん (ワッチョイ 1e66-yYUR)
2022/09/26(月) 23:31:03.60ID:b9hyANFk0 a = 1
c = 1
の時と同じ理由
c = 1
の時と同じ理由
138デフォルトの名無しさん (ワッチョイ 4b17-NGtF)
2022/09/26(月) 23:32:02.41ID:Gide+MMY0 >>136
ならない
ならない
139デフォルトの名無しさん (ワッチョイ 4b17-NGtF)
2022/09/26(月) 23:33:01.37ID:Gide+MMY0140デフォルトの名無しさん (ワッチョイ d201-/Peb)
2022/09/26(月) 23:49:19.92ID:eE4Lst2k0141デフォルトの名無しさん (ワッチョイ 4212-+bWc)
2022/09/27(火) 00:20:20.92ID:LFY5tutJ0 >>140
ありがとうございます、オプティマイゼーションの余地がある、ということですね、納得しました
ありがとうございます、オプティマイゼーションの余地がある、ということですね、納得しました
142デフォルトの名無しさん (ワッチョイ 2f97-5djn)
2022/09/27(火) 19:02:24.07ID:zjZtbJ3M0 a is cが真になるかはかなりケースバイケースな気がするし、
中身を比較したいんだったら使うべきじゃないね
本当に同じtupleインスタンスかどうかを確認したいときだけにすべき
中身を比較したいんだったら使うべきじゃないね
本当に同じtupleインスタンスかどうかを確認したいときだけにすべき
143デフォルトの名無しさん (ワッチョイ 3733-tX/F)
2022/09/27(火) 22:33:08.85ID:3OHfLHhN0 tupleだけの話ではなくてどの型でも同じだけどね
例えば文字列とか
例えば文字列とか
144デフォルトの名無しさん
2022/09/27(火) 23:35:04.66ID:tKd9rAjb n=12345.67
小数点以下が何桁あるのか調べたいのですが
len(str(n).split(".")[1]) if isinstance(n, float) else 0
こんなんでいいですかね・・?
小数点以下が何桁あるのか調べたいのですが
len(str(n).split(".")[1]) if isinstance(n, float) else 0
こんなんでいいですかね・・?
145デフォルトの名無しさん (ワッチョイ 3733-tX/F)
2022/09/27(火) 23:51:45.87ID:3OHfLHhN0146デフォルトの名無しさん (ワッチョイ 1610-DrlT)
2022/09/27(火) 23:53:56.84ID:+joc5Asc0 >>144
誤差で予想外の挙動しそうだからDecimal使う方がいい
誤差で予想外の挙動しそうだからDecimal使う方がいい
147デフォルトの名無しさん (ワッチョイ 2701-tX/F)
2022/09/28(水) 02:27:12.38ID: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
それだと
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
148デフォルトの名無しさん
2022/09/28(水) 09:19:00.77ID:9I9ISsCh >>145-147
たしかに
0.30000000000000004に対して17得られたのは正解だと思いますが
0.00001で1e-05になっててエラーでました
Decimalかformat使ってみようと思います
ありがとうございました
たしかに
0.30000000000000004に対して17得られたのは正解だと思いますが
0.00001で1e-05になっててエラーでました
Decimalかformat使ってみようと思います
ありがとうございました
149デフォルトの名無しさん
2022/09/28(水) 10:07:58.97ID: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でもいい
みたいにしたかったのですが難しい・・
受けとった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でもいい
みたいにしたかったのですが難しい・・
150デフォルトの名無しさん
2022/09/28(水) 10:17:26.42ID:9I9ISsCh from decimal import Decimal
str(Decimal(0.123456))
str(Decimal(0.123456)*Decimal(1.05))
#'0.1296288000000000015945911258'
あれ、そもそも0.123456の小数部の桁数はどうやって知るんだっけ??
てところで詰まってます・・
str(Decimal(0.123456))
str(Decimal(0.123456)*Decimal(1.05))
#'0.1296288000000000015945911258'
あれ、そもそも0.123456の小数部の桁数はどうやって知るんだっけ??
てところで詰まってます・・
151デフォルトの名無しさん
2022/09/28(水) 11:25:04.93ID: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")
何かバグが発生しそうな気がします
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")
152デフォルトの名無しさん
2022/09/28(水) 11:30:47.23ID:9I9ISsCh 連投すみません 結果です
https://ideone.com/exojEw
https://ideone.com/exojEw
153デフォルトの名無しさん (ワンミングク MM42-nX9g)
2022/09/28(水) 13:38:45.48ID:E42G0/DqM 元々の桁数でroundしたいって感じなのかな
154デフォルトの名無しさん (ワッチョイ 2701-tX/F)
2022/09/28(水) 18:25:19.27ID: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は好みのオプションでどうぞ
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は好みのオプションでどうぞ
155デフォルトの名無しさん
2022/09/28(水) 19:37:21.94ID:9I9ISsCh >>154
ありがとうございます
やはり至るところで誤差が発生するのですね
四捨五入は今回の用途ではどちらでも良い感じです
せっかくなのでまとめてみました
https://ideone.com/JmTu06
ありがとうございました
ありがとうございます
やはり至るところで誤差が発生するのですね
四捨五入は今回の用途ではどちらでも良い感じです
せっかくなのでまとめてみました
https://ideone.com/JmTu06
ありがとうございました
156デフォルトの名無しさん (ワッチョイ 96bb-nd6Q)
2022/09/28(水) 19:42:02.44ID:o0cHd3Tq0 先にIEEE754読んでみては?
誤差に関しての勘所がわかるようになる
誤差に関しての勘所がわかるようになる
157デフォルトの名無しさん (ワッチョイ 2f97-5djn)
2022/09/28(水) 20:32:50.93ID: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モジュールは便利そうだね。
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モジュールは便利そうだね。
158デフォルトの名無しさん (ワッチョイ 23da-QqKk)
2022/09/28(水) 23:21:28.71ID:FDPwu/KN0 log2で有効桁数計算出来るでしょ
159デフォルトの名無しさん (ワッチョイ 2701-tX/F)
2022/09/29(木) 00:26:06.29ID:3C3gpnCY0160デフォルトの名無しさん (ワッチョイ 9202-XjGR)
2022/09/30(金) 00:55:04.52ID:qun5+YRs0 昔から不思議なんだけど
何で分数で処理しないのかな?
最後に割り算を一回だけすれば
誤差がでないじゃないの
何で分数で処理しないのかな?
最後に割り算を一回だけすれば
誤差がでないじゃないの
161デフォルトの名無しさん (ガックシ 06de-TTgm)
2022/09/30(金) 01:46:32.47ID:0IYvIpx66 掛け算でも足し算でも誤差が出るから
162デフォルトの名無しさん (ワッチョイ b302-nX9g)
2022/09/30(金) 01:53:32.93ID:sForoGQI0 Pythonは整数側の桁数制限が無いのを利用して高精度にできそう
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【速報】中国外務省報道官 高市首相発言撤回なければ「断固たる対抗措置」 ★2 [蚤の市★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★4 [ぐれ★]
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★3 [BFU★]
- 中国、日本行き“50万人”キャンセル 渡航自粛でコロナ禍以来最大 [お断り★]
- 【速報】日本産牛肉の対中国輸出再開協議が中止 ★2 [おっさん友の会★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 [ぐれ★]
- 【速報】中国政府、ゲームを禁輸。原神やブルアカ、荒野行動が日本で影響 [347751896]
- 中国「私達が怒ってるのは日本の政治家に対してで、日本の観光客や日本企業はこれまで通り歓迎する。これこそが大国としての余裕」 [377482965]
- 【高市悲報】インドネシアの山が大爆発。日本への影響調査中。2025/11/19 19:35 [253245739]
- 高市コイン、ガチで156円突入へwwwwwwwwww [246620176]
- 【高市悲報】北朝鮮🇰🇵、大人しすぎるwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww [573041775]
- 【👊専】ロケット🚀👊😅👊🚀パーンチww🏡
