Pythonのお勉強 Part68

■ このスレッドは過去ログ倉庫に格納されています
2022/09/15(木) 18:52:26.67ID:VqLViKoX0
!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
2022/11/02(水) 19:36:39.11ID:oCOyjRuB0
VM上は指すオブジェクト変わってないのにid変わったらあかんでしょ
2022/11/02(水) 19:40:00.28ID:rAnbDRgM0
適当にリンクリストあたりかと思ってた
2022/11/02(水) 19:40:29.11ID:ul/vZuFO0
appendしても同じオブジェクトという時点で違和感があるんだよな
明らかに別物やん

仮にappendが非破壊で
list = list.append()
とした時にidが変わる方が納得できる
2022/11/02(水) 19:40:29.75ID:5K2+hbiBa
>>605
逆だよ
ob_item自体は大きさが変わる時にreallocでアドレスが変わるけど
中身の方はポインタをコピーするだけだから変わらない
2022/11/02(水) 19:42:07.37ID:1xZXeW2Ya
>>597
違うって理解できた?
2022/11/02(水) 19:51:27.03ID:5K2+hbiBa
>>609
そもそもが全部Cで実装されてるんだからそういうメモリモデルなんだ、という理解で良いと思うよ
2022/11/02(水) 19:53:06.08ID:4MCwg8YuM
>>611
あなたは何もわかってないのは理解できました
2022/11/02(水) 19:57:27.92ID:1xZXeW2Ya
>>613
わかんない?
違うよ
どんどん主張が後退するんじゃねえかなという期待の下、繰り返すけど
615デフォルトの名無しさん (ワッチョイ 7997-uk66)
垢版 |
2022/11/02(水) 21:11:39.58ID:CsBXjP5R0
リンクリストはリスト的なものを作るときに第一の選択肢としてはこないと思うよ。
任意の要素へのアクセスがO(n)かかるから。
必ず頭から順番に読んで、途中に挿入したいことが多いとかいう状況だったら使うけど、こういう特性を、癖があると思う人の方が多いんじゃないかな。
そういうコンピュータサイエンスの初歩みたいなところの実装が気になるなら、Javaを勉強してみるといいかもね。
リストも辞書もセットも、複数の実装方法が標準で用意されてて明示的にどれを使うか決めなくちゃいけないから。
そう考えると初心者にJava教えてた頃ってコレクションで付いていけなくなり勉強を諦めた人多いんだろうか。
616デフォルトの名無しさん (ワッチョイ 7997-uk66)
垢版 |
2022/11/02(水) 21:16:31.46ID:CsBXjP5R0
>>609
夕飯を食べる前の自分と食べた後の自分は別のインスタンスか?って問いにyesと答えられるならばイミュータブルなものにしかidを付けてはいけないと考えているのだろう(そういう言語もある、Haskellとか)
そうでなければ、ミュータブルなインスタンスはミュータブルなんだからidが同じでも中身は変化すると考えるべきだろう
2022/11/02(水) 21:22:30.41ID:jJasVlr90
idってCでのアドレスそのものなんでしょ
実装の都合でアドレスが変わったらidも変わるというだけの話で、
何らかのポリシーみたいなものは背景に無いような
618デフォルトの名無しさん (ワッチョイ 7997-uk66)
垢版 |
2022/11/02(水) 21:30:55.81ID:CsBXjP5R0
>>617
CPythonではな。(すみません知りませんでした)
しかしGCがかかりまくるVM上で動くPythonの実装もあるから、CPythonではそうっていう認識に留めておいたほうがいいんじゃないかなあ。
2022/11/02(水) 21:42:19.23ID:2orW5ow60
idが変わる/変わらないとミュータブル/イミュータブルは一対一対応?
620デフォルトの名無しさん (ワッチョイ 7997-uk66)
垢版 |
2022/11/02(水) 22:06:28.39ID:CsBXjP5R0
>>619
まず、イミュータブルというのをどう定義するかによると思うけど
(タプルはイミュータブルだが、タプルの中にリストを入れた場合、リストほミュータブルで、リストに変更を加えてもタプルのインスタンスが新しくできるわけではない)
そういうややこしい例を除いても、
イミュータブルならば、値を変えたらidが変わる
値を変えてもidが変わらないならミュータブル
しか言えないんじゃない?
2022/11/02(水) 22:13:30.31ID:F9kh54e50
定義や実装で何がミュータブルかがころころ変わってはいけなくて、
pythonではどんな環境でも同じものがミュータブルであるべき

で、idが変わる/変わらないが環境依存ならば、idとミュータブルは関係ないことになる
2022/11/02(水) 22:18:06.81ID:jyU6y3CY0
わけわからん
2022/11/02(水) 22:20:05.72ID:yCeW62XuM
pythonの辞書ってc++のmapと違って内部でソートされてないからアクセス遅いっぽいんだよね
keysで取り出しても登録した順だし
文字列でも数値でもキーにできるからそういうものなのか
2022/11/02(水) 22:50:50.14ID:rAnbDRgM0
>>615
最後尾への追加削除がO(1)だったからリンクリストだと思ったけど
リアロケートの実装でどうにかそれっぽくなるんだねぇ
全く気にしてなかったけど、勉強になったわ
2022/11/02(水) 22:58:46.37ID:P6hHm0TD0
ループで一つずつappendしていくようなコードは、
溜めておいて一気にどーんで高速化できそう
2022/11/02(水) 23:13:03.99ID:Vdzb0Lkj0
Elixir なんて片方向リストだから、先頭の要素の追加・削除のみ速い。
末尾では全要素をたどる

Ruby は両方向リストだったかな?
627デフォルトの名無しさん (ワッチョイ 8b10-WE8j)
垢版 |
2022/11/02(水) 23:41:13.42ID:d827SSNz0
>>623
pythonの辞書は順番を保持することが仕様で規定されてる
2022/11/03(木) 00:20:58.38ID:gcHdWorI0
3年くらい前からだっけ?
キーバリューやから順番気にしたことなかったわ
2022/11/03(木) 00:37:59.14ID:vWeFXHff0
順番が同じだとセキュリティの問題があるから意図的にランダムにしてなかったっけ
630デフォルトの名無しさん (ワッチョイ 7997-uk66)
垢版 |
2022/11/03(木) 00:45:24.21ID:9oLRzF140
>>624
C++のvectorとか、JavaのArrayListの典型的な実装だと、リアロケートが発生するときに倍ぐらいの領域を予め確保しておく、ってのが普通って読んだな
コードレベルで読んだ訳じゃないから確たるエビデンスがあるわけじゃないけど。
631デフォルトの名無しさん (ワッチョイ 7997-uk66)
垢版 |
2022/11/03(木) 00:49:20.51ID:9oLRzF140
辞書は3.5だかそのぐらいで入れた順になるように仕様が決まったよね
それまではバラバラだったはず
あとソート済みが欲しいならsortedcollectionsがあるんじゃないの
Pythonでパフォーマンス気にするようなコード書いたことないから速くなるかは知らないが
パフォーマンス気になるならもう普通にpybind11よ
2022/11/03(木) 01:13:09.17ID:t2qUW0n10
動的配列は償却計算量の典型例だぞ
2022/11/03(木) 09:06:43.51ID:b87ZSO0X0
半島人w
2022/11/03(木) 13:19:41.92ID:M31+WIXk0
ネトウヨはコードすら書けない
635デフォルトの名無しさん (ワッチョイ 692c-3A4z)
垢版 |
2022/11/03(木) 17:39:13.22ID:JzcJhjtx0
isPrime(n: int):
__for i in range(2, n//2 + 1):
____if (not n%i):
______return 0
__return 1

numPrimes = 0

for i in range(2, 250001):
__numPrimes += isPrime(i)

print(numPrimes)

cとかだと5秒以下で終わると思うんですが
pythonではどうやって高速化できますか?
2022/11/03(木) 17:50:53.27ID:6cc1wOit0
全角スペースでインデントするといい
2022/11/03(木) 17:57:37.28ID:t2qUW0n10
エラトステネスの篩みたいなまともなアルゴリズムを使え
2022/11/03(木) 18:05:57.27ID:pngFKRCN0
>>635
range(2, n//2 + 1) を range(2, int(n**0.5)+1)
にするだけで速くなると言うのは違うか。

n**0.5 は math を import するのが面倒だっただけ。。。
2022/11/03(木) 18:12:13.51ID:Tny9BBIXa
しょーもないネタ振り
640デフォルトの名無しさん (JP 0He5-3A4z)
垢版 |
2022/11/03(木) 18:58:51.96ID:Ppt07bQPH
>>637
言語間の速度差を埋めたいという文脈で
片方により効率的なアルゴリズム使えというのは筋が違うと思う
それやったら相手のCも早くなるやん
2022/11/03(木) 19:15:26.76ID:t2qUW0n10
それはそうだけどPythonをできるだけ速くしようというのは徒労に終わるんだよな
2022/11/03(木) 19:17:29.83ID:5fumPTTR6
>>635
allかanyか使う
2022/11/03(木) 19:45:13.49ID:NbsIPyEs0
>>640
> 言語間の速度差を埋めたいという文脈で
そうか、単にPythonで高速化したいだけに見えるけど?

> pythonではどうやって高速化できますか?
2022/11/03(木) 20:09:45.07ID:6A5YXZlC0
>>635
sympy.isprime()
2022/11/03(木) 20:13:41.27ID:6A5YXZlC0
>>635
そもそもこのプログラムは一行で済む
print(sympy.primepi(250001))
2022/11/03(木) 20:16:42.18ID:gDosIilW0
SymPy無いさー
2022/11/03(木) 22:42:51.75ID:qK/YTuYk0
Numpyさぁ
2022/11/04(金) 11:06:17.40ID:RgN4dMLC0
公式のドキュメント読むと
「pip は推奨されるインストーラ・プログラムです。 Python 3.4 からは、 Python バイナリ・インストーラに最初から付属するようになりました。」
とか見るけど、触る環境どれも最初からインストールされてた試しがなくて手動インストールばっかなんだが
649デフォルトの名無しさん (ワッチョイ 7933-MTQz)
垢版 |
2022/11/04(金) 11:16:46.46ID:+Vzk9d850
>>648
どこのバイナリインストーラ使ってるの?
2022/11/04(金) 11:23:08.55ID:eh042CP4a
>>648
たぶん入ってるけど実行ファイルのパスが通ってないんだよ
2022/11/04(金) 11:26:42.20ID:iSP9CUI40
debianとかはOSのスクリプトを実行するための環境なので
最小限になるようパッケージが分かれている
不便にみえるけどユーザが使う場合はパッケージ外で導入した方が
特定のバージョンも好きにえらべてシンプル
2022/11/04(金) 13:14:21.89ID:xdVLdIYL0
npm/yarn, Ruby のbundler などは、デフォルトでコマンド実行できるけど

多分これらは、デフォルトで環境変数PATH にあるフォルダにインストールされるのだろう
653デフォルトの名無しさん (ブーイモ MMdd-uk66)
垢版 |
2022/11/04(金) 19:16:21.95ID:7+yqrzWjM
>>648
python -m pipするのが安全やで(pipコマンドだと、複数バージョン入ってると意図したpythonに紐づいてないpipが実行される場合がある)
2022/11/05(土) 21:26:42.31ID:MH3sXGrP0
pythonつかって紙に書いた文字判別するとかって簡単にできますか?
2022/11/05(土) 21:34:23.73ID:7lAZ3AaJ0
簡単だけど有料
656デフォルトの名無しさん (ワッチョイ f568-Cw2/)
垢版 |
2022/11/05(土) 21:51:22.37ID:MH3sXGrP0
>>655
無料のライブラリなんかありませんかね?無いんなら諦めます
2022/11/05(土) 21:58:26.55ID:yxkEcNx60
>>654
判別とはどういうことをしたいのかよくわからんけどとりあえず python ocr とかでぐぐればいいんじゃね?
https://gammasoft.jp/blog/ocr-by-python/
2022/11/05(土) 21:58:41.35ID:j6cTC8iG0
自分で無料ライブラリーを作る、しか
2022/11/05(土) 22:07:24.17ID:MH3sXGrP0
>>657
ありがとうございます!
660デフォルトの名無しさん (ワッチョイ d204-ocuO)
垢版 |
2022/11/06(日) 18:38:56.63ID:hWJeexFN0
pythonでなんかかっこいいことがしたいです
でもやることが見つかりません。どうしたらいいですかね
今までポイントサイトをseleniumで自動化したりdiscordのbot作ったり動画編集自動化したりしてきたんですが先というか続きが見えません
2022/11/06(日) 19:03:47.89ID:tSvQZNnX0
PyPIザッピングして良さそうなモジュールみつけてかっこいい応用を書く
2022/11/06(日) 19:05:44.66ID:A20KyXoS0
ラズパイでIoT
リアルの物を動かせると、やれる事の幅が広がるよ
2022/11/06(日) 19:13:43.26ID:hyDfi3PG0
>>660
壁に落書きしてくるのがかっこいいと思ってるんなら大間違いだわw
664デフォルトの名無しさん (ワッチョイ d204-ocuO)
垢版 |
2022/11/06(日) 21:07:15.95ID:hWJeexFN0
PyPIで良さそうなモジュール見つけるってどうやるの?
PyPI サイト見てtrend moduleみたいなの適当に選んで説明見ても詳しい使い方がわからない
2022/11/06(日) 21:15:54.96ID:2BZA6H+N0
電子工作もそうだけど、環境は整いすぎに整ってて、やりたいことがあれば何でもすぐにできる
でもやりたいことが見つからない

さてはみんな環境を整えることを目的にしているな
2022/11/07(月) 06:48:18.34ID:E9VDXcWoM
アホな質問だな~
まずやりたいことがあって、それからツールを探すものだろ
667デフォルトの名無しさん (アウアウウー Sacd-ocuO)
垢版 |
2022/11/07(月) 08:02:58.71ID:jFHCFA25a
その通りだけどやりたいことが見つからないんだわ
もしかすると勉強からの逃避のためにプログラミングという逃げ場を作りたいのかもしれない。やりたいことが自然と出てきたらやることにするよ
2022/11/07(月) 08:09:59.84ID:nVmoLWqcM
遠回りの人生それも人生
2022/11/07(月) 10:49:11.04ID:vghVm0yU0
巨大数の実数計算は最先端だぞ。
2022/11/07(月) 14:36:29.74ID:ns7213lX0
>>654
EasyOCR は?
pytorch必須だが
2022/11/07(月) 14:48:18.41ID:a5k3bCTy0
使い物になるOCRはみんなAIで有料なんだよな
客はDXしたい企業だから高い
2022/11/07(月) 15:15:22.15ID:dmSTAQ160
料金みたことある?業務で考えたらめちゃ安いとおもうが
2022/11/07(月) 15:26:05.72ID:kmERiYaX0
有料OCR知ってる俺スゲー君なんて相手にすんなよ...
2022/11/07(月) 15:26:54.13ID:a5k3bCTy0
OCRしたい書類なんて有限だから、あらかた終わったら需要が無くなる
そしたらgoogle様が無料開放してくれる筈
675デフォルトの名無しさん (ワッチョイ 8101-wRrB)
垢版 |
2022/11/07(月) 15:41:01.53ID:rtBnyCPM0
Pythonが「メインの利用言語」で2位にとどまる、1位に立ったのは定番のあの言語
https://xtech.nikkei.com/atcl/nxt/column/18/02246/110200002/
2022/11/07(月) 15:51:46.76ID:a5k3bCTy0
AIだから教育が必須で、それなりにコストがかかる
こんなもんは公共事業で、どこかが代表してやって、コスト回収できたら無料化する
各国で自分のとこの言語についてやるのが筋だけど、
どうせ日本はやらないのでgoogleがやる
2022/11/07(月) 16:22:49.11ID:a5k3bCTy0
似たようなので、音声からテキストへの変換も金かかる
あれが無料で出来たら過去の膨大な音声や動画の資料が検索したり分析可能になって、
文化が大きく前進するだろうに金がブレーキかけてる
国の事業としてやれば一人頭の負担なんて微々たるものなのに
2022/11/07(月) 16:28:42.14ID:ns7213lX0
この夏whisperが公開されたやろ?
2022/11/07(月) 16:32:21.66ID:a5k3bCTy0
そんなのあったのか
マスク様々やな
680デフォルトの名無しさん (ワッチョイ b18e-ly3j)
垢版 |
2022/11/07(月) 16:46:46.72ID:6QND4EcV0
>>675
Rubyオワコン
2022/11/07(月) 21:52:40.91ID:J6xutGri0
>>677
つまり文字起こし言いたいんだろ?
なんかクソ認識悪いAPIだったら何かあった気がする
2022/11/08(火) 10:16:17.14ID:gvBOR9qA0
半島系帰化人は強姦魔ばかり
死ねよクズ帰化人!
2022/11/08(火) 11:03:03.92ID:NJ3yWFAyM
何でこのスレで暴れてるんだよ
2022/11/08(火) 11:17:25.58ID:Z/fTsurM0
壊れちゃったんだろ
2022/11/08(火) 14:10:32.60ID:SId0EMb3a
ランダムに書き込んでるbotだよ
686デフォルトの名無しさん (ワッチョイ 5e63-xcLn)
垢版 |
2022/11/08(火) 19:27:53.62ID:h+Zmgne00
有料と言ってもgoogleAPIってかなり安いと思うんだけど
手持ちの本数十冊OCRして1,000円いかなかった気がする
2022/11/09(水) 17:03:12.36ID:a7tugATP0
某有名ゲーム会社で働いてる友人が、「Pythonではあまりクラスを使うべきではない。
それほど高度なプログラムでなければ関数を使えばいい」と言っていたんですが、
そうなんでしょうか?
皆さんの意見を聞かせて頂きたいです
2022/11/09(水) 17:08:46.66ID:F89FAkjE0
関数でできればいいけど、引数たくさん渡したり、グローバル変数で渡してたり、
みたいな汚いことするくらいならクラスがいい
689デフォルトの名無しさん (ワッチョイ 1997-OSgl)
垢版 |
2022/11/09(水) 17:30:19.69ID:PaG6ZUsK0
Javaのようになんでもかんでもクラスを作る感じじゃないというのは事実。
でも、dataclassとかnamedtupleとかは使うかな。
とはいえやることによると思う。
2022/11/09(水) 17:30:52.94ID:ugvw1ns9a
状態を持つオブジェクトを扱うならクラスは必然なのでは
2022/11/09(水) 18:12:18.95ID:uDSXzENKM
pythonはメンバ変数にself必須なのがダルい
メインプログラムまでクラス化する必要はないと思う
規模が小さければモジュール変数をグローバル変数のように使うのが便利
vscodeならインテリセンス利くし
2022/11/09(水) 18:40:16.27ID:cOB3Ubn30
>>687
プログラム水準(?)の高低でなく、実行速度の遅速でそう言われるのを聞いたことはある。大昔ね。
事実かは知らぬ。
2022/11/09(水) 18:59:13.95ID:2JAkKfpeM
>>687
使うべきでない理由をなぜ聞かなかったのか?
それを書けば話は終わる
君の友人ほどスキルのある人はここにはいないからな
2022/11/09(水) 20:24:05.09ID:FPtq7UfL0
>>687
必要になるまで不要なもので汚すな
シンプルに書けってことかと
2022/11/09(水) 20:51:46.35ID:yZGUhxlRM
>>691
だなselfを二文字くらいの別名に出来ないのかな?
2022/11/09(水) 20:56:49.26ID:F89FAkjE0
perlから来たからselfは当たり前だと思ってる
2022/11/09(水) 21:06:27.04ID:EoOj57gu0
開発者間で同意取れるなら
ただの関数の引数だから好きに変えられはする
2022/11/09(水) 21:10:50.26ID:5c+x4O200
>>687
理由を示さないお作法は無視していい
2022/11/09(水) 21:21:40.38ID:uDSXzENKM
グローバル変数用のファイルを作ってas gでインポートってのをqiitaで見たけどかなり便利
g.nameみたいにアクセスする
2022/11/09(水) 21:30:42.42ID:F89FAkjE0
それは他に影響しないというだけで、グローバル変数の欠点は何も解決しない
作って使ってすぐ捨てるならいいけど、保守が必要なら時間かけてシンプルにしとかないと
2022/11/09(水) 21:48:48.07ID:dM0Gb0+w6
>>695
すればいいじゃん
2022/11/09(水) 21:57:03.34ID:uDSXzENKM
グローバル変数はプログラム全体を通した設定値とかに使うもんじゃない?
それこそメインプログラムにとってのselfよ
変に引数取りまくるより可読性高いと思う
規模にもよるんだろうけど
2022/11/09(水) 22:03:03.05ID:F89FAkjE0
configを読んでグローバルに格納してmain()を呼ぶ
みたいな作りになってるのが多い
うちのスクリプト
2022/11/09(水) 22:10:05.03ID:EoOj57gu0
設定値の保持ならぜんぜんOK
状態を丸見えで管理できないとこに置くなってことでしょ
2022/11/09(水) 22:13:24.86ID:F89FAkjE0
関数の中に下請け関数があって、
なんかごちゃごちゃしてきたからリファクタリングだと外に出したらスコープから外れたので、
じゃあみんなグローバル化したれ、みたいにglobal付けて誤魔化す
2022/11/09(水) 22:23:48.43ID:dM0Gb0+w6
せめてconst できればいいのに
2022/11/09(水) 23:03:08.26ID:a3eCQ+jX0
>>687
どうせ、いたずらにclassを多用したゴミトランプゲームを
見せたんだろ?いつまでも練習だからって言って、設計もしないで
ゴミコードを見せ続けるから嫌われかけてるんだよ。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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