[過去ログ] Pythonのお勉強 Part68 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
587: (ワッチョイ d9f0-5cND) 2022/11/02(水)01:17 ID:jyU6y3CY0(1/6) AAS
>>585
これ
まあそういうものとして覚えるしかないわけだけど
588: (テテンテンテン MMeb-kKgp) 2022/11/02(水)07:59 ID:cbFKoHcVM(1) AAS
べつに目的の物が作れればどうでもいいんじゃないの?
ミッションクリティカルなモノをコレで作ったりするのかな?
589: (ワッチョイ 9914-lAaw) 2022/11/02(水)11:06 ID:FQ1wBQnh0(1/2) AAS
listに後ろとか関係なくない?
590(1): (アウアウウー Sa9d-mHKc) 2022/11/02(水)11:21 ID:1xZXeW2Ya(1/6) AAS
linkedなリストは関係ないよな
連続したメモリに入ってる配列的なやつはアレだけど
591: (ワッチョイ 9914-lAaw) 2022/11/02(水)11:39 ID:FQ1wBQnh0(2/2) AAS
>>590
str との違いも結局これだし
592: (ブーイモ MM8d-YnjT) 2022/11/02(水)14:55 ID:VFt43YlcM(1) AAS
pythonのリストはポインタの配列でしょ?
593: (アウアウウー Sa9d-mHKc) 2022/11/02(水)18:15 ID:1xZXeW2Ya(2/6) AAS
違います
594(2): (ワッチョイ d9f0-5cND) 2022/11/02(水)18:27 ID:jyU6y3CY0(2/6) AAS
PyObject*の配列です
PyObject **ob_item; // PyObject*の配列
Py_ssize_t allocated; // アロケートされてる個数
595: (ワッチョイ d9f0-5cND) 2022/11/02(水)18:28 ID:jyU6y3CY0(3/6) AAS
cpythonなソースは読みやすい
596: (ワッチョイ d347-gj4s) 2022/11/02(水)18:42 ID:ul/vZuFO0(2/4) AAS
0から255までの数字が入った要素数1000の配列があって、
Cだとunsigned char list[1000];
みたいに宣言してlist[i]で参照するとアドレス計算で値を取ってくるけど、
pythonはどうやってるの?
597(2): (ブーイモ MM8d-YnjT) 2022/11/02(水)18:43 ID:4MCwg8YuM(1/2) AAS
ちょっと調べた限りやっぱりPythonのリストはポインタの配列だと思うんだが違うっていうなら何か教えて
insertの遅さとかで連結リストではないとは思うけど
598: (ワッチョイ 8b46-g96c) 2022/11/02(水)18:51 ID:wyluLqIy0(1) AAS
>>594が正しい
外部リンク[h]:github.com
599: (ワッチョイ d9f0-5cND) 2022/11/02(水)18:55 ID:jyU6y3CY0(4/6) AAS
cpythonのソースはマジで読みやすい
Rubyとかもうぐちゃぐちゃしてて読めねえもん
600: (ワッチョイ d9f0-5cND) 2022/11/02(水)19:05 ID:jyU6y3CY0(5/6) AAS
実際の配列のサイズはPyObject_VAR_HEADマクロのob_sizeに入ってる
601: (アウアウウー Sa9d-mHKc) 2022/11/02(水)19:12 ID:1xZXeW2Ya(3/6) AAS
>>597
別になんでもいいんです
602: (アウアウウー Sa9d-5cND) 2022/11/02(水)19:14 ID:5K2+hbiBa(1/3) AAS
答え書かれてるのに全く分かってなくて草
603: (アウアウウー Sa9d-mHKc) 2022/11/02(水)19:30 ID:1xZXeW2Ya(4/6) AAS
大学行くと実装と仕様の区別がつくようになるかも?
604: (ワッチョイ f102-+Dbv) 2022/11/02(水)19:31 ID:l50Y39h10(1/2) AAS
>>594
つまりポインタの配列
605(1): (ワッチョイ d347-gj4s) 2022/11/02(水)19:31 ID:ul/vZuFO0(3/4) AAS
listにappendすると、ポインタの配列の末尾にポインタが追加される
配列のサイズが変わるので、サイズを増やした配列を作ってコピーしないとできない
筈なのに、idを調べると変わらない
**ob_itemに入ってる値は変わるけど、**ob_item自体のアドレスは変わらない
ということ?
606: (ワッチョイ f102-+Dbv) 2022/11/02(水)19:33 ID:l50Y39h10(2/2) AAS
組み込みだから作り直した配列にidがコピーされてたり
607: (ワッチョイ fbe6-Sd0E) 2022/11/02(水)19:36 ID:oCOyjRuB0(1) AAS
VM上は指すオブジェクト変わってないのにid変わったらあかんでしょ
608: (ワッチョイ 1379-87TA) 2022/11/02(水)19:40 ID:rAnbDRgM0(1/2) AAS
適当にリンクリストあたりかと思ってた
609(2): (ワッチョイ d347-gj4s) 2022/11/02(水)19:40 ID:ul/vZuFO0(4/4) AAS
appendしても同じオブジェクトという時点で違和感があるんだよな
明らかに別物やん
仮にappendが非破壊で
list = list.append()
とした時にidが変わる方が納得できる
610: (アウアウウー Sa9d-5cND) 2022/11/02(水)19:40 ID:5K2+hbiBa(2/3) AAS
>>605
逆だよ
ob_item自体は大きさが変わる時にreallocでアドレスが変わるけど
中身の方はポインタをコピーするだけだから変わらない
611(1): (アウアウウー Sa9d-mHKc) 2022/11/02(水)19:42 ID:1xZXeW2Ya(5/6) AAS
>>597
違うって理解できた?
612: (アウアウウー Sa9d-5cND) 2022/11/02(水)19:51 ID:5K2+hbiBa(3/3) AAS
>>609
そもそもが全部Cで実装されてるんだからそういうメモリモデルなんだ、という理解で良いと思うよ
613(1): (ブーイモ MM8d-YnjT) 2022/11/02(水)19:53 ID:4MCwg8YuM(2/2) AAS
>>611
あなたは何もわかってないのは理解できました
614: (アウアウウー Sa9d-mHKc) 2022/11/02(水)19:57 ID:1xZXeW2Ya(6/6) AAS
>>613
わかんない?
違うよ
どんどん主張が後退するんじゃねえかなという期待の下、繰り返すけど
615(1): (ワッチョイ 7997-uk66) 2022/11/02(水)21:11 ID:CsBXjP5R0(1/4) AAS
リンクリストはリスト的なものを作るときに第一の選択肢としてはこないと思うよ。
任意の要素へのアクセスがO(n)かかるから。
必ず頭から順番に読んで、途中に挿入したいことが多いとかいう状況だったら使うけど、こういう特性を、癖があると思う人の方が多いんじゃないかな。
そういうコンピュータサイエンスの初歩みたいなところの実装が気になるなら、Javaを勉強してみるといいかもね。
リストも辞書もセットも、複数の実装方法が標準で用意されてて明示的にどれを使うか決めなくちゃいけないから。
そう考えると初心者にJava教えてた頃ってコレクションで付いていけなくなり勉強を諦めた人多いんだろうか。
616: (ワッチョイ 7997-uk66) 2022/11/02(水)21:16 ID:CsBXjP5R0(2/4) AAS
>>609
夕飯を食べる前の自分と食べた後の自分は別のインスタンスか?って問いにyesと答えられるならばイミュータブルなものにしかidを付けてはいけないと考えているのだろう(そういう言語もある、Haskellとか)
そうでなければ、ミュータブルなインスタンスはミュータブルなんだからidが同じでも中身は変化すると考えるべきだろう
617(1): (ワッチョイ d347-gj4s) 2022/11/02(水)21:22 ID:jJasVlr90(1) AAS
idってCでのアドレスそのものなんでしょ
実装の都合でアドレスが変わったらidも変わるというだけの話で、
何らかのポリシーみたいなものは背景に無いような
618: (ワッチョイ 7997-uk66) 2022/11/02(水)21:30 ID:CsBXjP5R0(3/4) AAS
>>617
CPythonではな。(すみません知りませんでした)
しかしGCがかかりまくるVM上で動くPythonの実装もあるから、CPythonではそうっていう認識に留めておいたほうがいいんじゃないかなあ。
619(1): (ワッチョイ d347-gj4s) 2022/11/02(水)21:42 ID:2orW5ow60(1) AAS
idが変わる/変わらないとミュータブル/イミュータブルは一対一対応?
620: (ワッチョイ 7997-uk66) 2022/11/02(水)22:06 ID:CsBXjP5R0(4/4) AAS
>>619
まず、イミュータブルというのをどう定義するかによると思うけど
(タプルはイミュータブルだが、タプルの中にリストを入れた場合、リストほミュータブルで、リストに変更を加えてもタプルのインスタンスが新しくできるわけではない)
そういうややこしい例を除いても、
イミュータブルならば、値を変えたらidが変わる
値を変えてもidが変わらないならミュータブル
しか言えないんじゃない?
621: (ワッチョイ d347-gj4s) 2022/11/02(水)22:13 ID:F9kh54e50(1) AAS
定義や実装で何がミュータブルかがころころ変わってはいけなくて、
pythonではどんな環境でも同じものがミュータブルであるべき
で、idが変わる/変わらないが環境依存ならば、idとミュータブルは関係ないことになる
622: (ワッチョイ d9f0-5cND) 2022/11/02(水)22:18 ID:jyU6y3CY0(6/6) AAS
わけわからん
623(1): (ワントンキン MMd3-+Dbv) 2022/11/02(水)22:20 ID:yCeW62XuM(1) AAS
pythonの辞書ってc++のmapと違って内部でソートされてないからアクセス遅いっぽいんだよね
keysで取り出しても登録した順だし
文字列でも数値でもキーにできるからそういうものなのか
624(1): (ワッチョイ 1379-87TA) 2022/11/02(水)22:50 ID:rAnbDRgM0(2/2) AAS
>>615
最後尾への追加削除がO(1)だったからリンクリストだと思ったけど
リアロケートの実装でどうにかそれっぽくなるんだねぇ
全く気にしてなかったけど、勉強になったわ
625: (ワッチョイ d347-gj4s) 2022/11/02(水)22:58 ID:P6hHm0TD0(1) AAS
ループで一つずつappendしていくようなコードは、
溜めておいて一気にどーんで高速化できそう
626: (ワッチョイ 694f-hZr9) 2022/11/02(水)23:13 ID:Vdzb0Lkj0(1) AAS
Elixir なんて片方向リストだから、先頭の要素の追加・削除のみ速い。
末尾では全要素をたどる
Ruby は両方向リストだったかな?
627: (ワッチョイ 8b10-WE8j) 2022/11/02(水)23:41 ID:d827SSNz0(1) AAS
>>623
pythonの辞書は順番を保持することが仕様で規定されてる
628: (ワッチョイ 8b89-g96c) 2022/11/03(木)00:20 ID:gcHdWorI0(1) AAS
3年くらい前からだっけ?
キーバリューやから順番気にしたことなかったわ
629: (ワッチョイ d347-gj4s) 2022/11/03(木)00:37 ID:vWeFXHff0(1) AAS
順番が同じだとセキュリティの問題があるから意図的にランダムにしてなかったっけ
630: (ワッチョイ 7997-uk66) 2022/11/03(木)00:45 ID:9oLRzF140(1/2) AAS
>>624
C++のvectorとか、JavaのArrayListの典型的な実装だと、リアロケートが発生するときに倍ぐらいの領域を予め確保しておく、ってのが普通って読んだな
コードレベルで読んだ訳じゃないから確たるエビデンスがあるわけじゃないけど。
631: (ワッチョイ 7997-uk66) 2022/11/03(木)00:49 ID:9oLRzF140(2/2) AAS
辞書は3.5だかそのぐらいで入れた順になるように仕様が決まったよね
それまではバラバラだったはず
あとソート済みが欲しいならsortedcollectionsがあるんじゃないの
Pythonでパフォーマンス気にするようなコード書いたことないから速くなるかは知らないが
パフォーマンス気になるならもう普通にpybind11よ
632: (ワッチョイ 8b46-g96c) 2022/11/03(木)01:13 ID:t2qUW0n10(1/3) AAS
動的配列は償却計算量の典型例だぞ
633: (ワッチョイ 13ad-ww+g) 2022/11/03(木)09:06 ID:b87ZSO0X0(1) AAS
半島人w
634: (ワッチョイ 9397-pRvw) 2022/11/03(木)13:19 ID:M31+WIXk0(1) AAS
ネトウヨはコードすら書けない
635(4): (ワッチョイ 692c-3A4z) 2022/11/03(木)17:39 ID:JzcJhjtx0(1) AAS
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秒以下で終わると思うんですが
省1
636: (ワッチョイ d347-gj4s) 2022/11/03(木)17:50 ID:6cc1wOit0(1) AAS
全角スペースでインデントするといい
637(1): (ワッチョイ 8b46-g96c) 2022/11/03(木)17:57 ID:t2qUW0n10(2/3) AAS
エラトステネスの篩みたいなまともなアルゴリズムを使え
638: (ワッチョイ 1302-4ham) 2022/11/03(木)18:05 ID:pngFKRCN0(1) AAS
>>635
range(2, n//2 + 1) を range(2, int(n**0.5)+1)
にするだけで速くなると言うのは違うか。
n**0.5 は math を import するのが面倒だっただけ。。。
639: (アウアウウー Sa9d-5cND) 2022/11/03(木)18:12 ID:Tny9BBIXa(1) AAS
しょーもないネタ振り
640(1): (JP 0He5-3A4z) 2022/11/03(木)18:58 ID:Ppt07bQPH(1) AAS
>>637
言語間の速度差を埋めたいという文脈で
片方により効率的なアルゴリズム使えというのは筋が違うと思う
それやったら相手のCも早くなるやん
641: (ワッチョイ 8b46-g96c) 2022/11/03(木)19:15 ID:t2qUW0n10(3/3) AAS
それはそうだけどPythonをできるだけ速くしようというのは徒労に終わるんだよな
642: (ガックシ 06eb-lAaw) 2022/11/03(木)19:17 ID:5fumPTTR6(1) AAS
>>635
allかanyか使う
643: (ワッチョイ 1301-pRvw) 2022/11/03(木)19:45 ID:NbsIPyEs0(1) AAS
>>640
> 言語間の速度差を埋めたいという文脈で
そうか、単にPythonで高速化したいだけに見えるけど?
> pythonではどうやって高速化できますか?
644: (ワッチョイ c108-UToK) 2022/11/03(木)20:09 ID:6A5YXZlC0(1/2) AAS
>>635
sympy.isprime()
645: (ワッチョイ c108-UToK) 2022/11/03(木)20:13 ID:6A5YXZlC0(2/2) AAS
>>635
そもそもこのプログラムは一行で済む
print(sympy.primepi(250001))
646: (ワッチョイ d347-gj4s) 2022/11/03(木)20:16 ID:gDosIilW0(1) AAS
SymPy無いさー
647: (ワッチョイ 11da-++bF) 2022/11/03(木)22:42 ID:qK/YTuYk0(1) AAS
Numpyさぁ
648(3): (ワッチョイ c1b0-ee5o) 2022/11/04(金)11:06 ID:RgN4dMLC0(1) AAS
公式のドキュメント読むと
「pip は推奨されるインストーラ・プログラムです。 Python 3.4 からは、 Python バイナリ・インストーラに最初から付属するようになりました。」
とか見るけど、触る環境どれも最初からインストールされてた試しがなくて手動インストールばっかなんだが
649: (ワッチョイ 7933-MTQz) 2022/11/04(金)11:16 ID:+Vzk9d850(1) AAS
>>648
どこのバイナリインストーラ使ってるの?
650: (アウアウウー Sa9d-mHKc) 2022/11/04(金)11:23 ID:eh042CP4a(1) AAS
>>648
たぶん入ってるけど実行ファイルのパスが通ってないんだよ
651: (ワッチョイ 39e0-Sd0E) 2022/11/04(金)11:26 ID:iSP9CUI40(1) AAS
debianとかはOSのスクリプトを実行するための環境なので
最小限になるようパッケージが分かれている
不便にみえるけどユーザが使う場合はパッケージ外で導入した方が
特定のバージョンも好きにえらべてシンプル
652: (ワッチョイ 694f-hZr9) 2022/11/04(金)13:14 ID:xdVLdIYL0(1) AAS
npm/yarn, Ruby のbundler などは、デフォルトでコマンド実行できるけど
多分これらは、デフォルトで環境変数PATH にあるフォルダにインストールされるのだろう
653: (ブーイモ MMdd-uk66) 2022/11/04(金)19:16 ID:7+yqrzWjM(1) AAS
>>648
python -m pipするのが安全やで(pipコマンドだと、複数バージョン入ってると意図したpythonに紐づいてないpipが実行される場合がある)
654(2): (ワッチョイ f568-Cw2/) 2022/11/05(土)21:26 ID:MH3sXGrP0(1/3) AAS
pythonつかって紙に書いた文字判別するとかって簡単にできますか?
655(1): (ワッチョイ f666-GkOZ) 2022/11/05(土)21:34 ID:7lAZ3AaJ0(1) AAS
簡単だけど有料
656: (ワッチョイ f568-Cw2/) 2022/11/05(土)21:51 ID:MH3sXGrP0(2/3) AAS
>>655
無料のライブラリなんかありませんかね?無いんなら諦めます
657(1): (ワッチョイ 9201-obsI) 2022/11/05(土)21:58 ID:yxkEcNx60(1) AAS
>>654
判別とはどういうことをしたいのかよくわからんけどとりあえず python ocr とかでぐぐればいいんじゃね?
外部リンク:gammasoft.jp
658: (ワッチョイ 9263-zlm6) 2022/11/05(土)21:58 ID:j6cTC8iG0(1) AAS
自分で無料ライブラリーを作る、しか
659: (ワッチョイ f568-Cw2/) 2022/11/05(土)22:07 ID:MH3sXGrP0(3/3) AAS
>>657
ありがとうございます!
660(1): (ワッチョイ d204-ocuO) 2022/11/06(日)18:38 ID:hWJeexFN0(1/2) AAS
pythonでなんかかっこいいことがしたいです
でもやることが見つかりません。どうしたらいいですかね
今までポイントサイトをseleniumで自動化したりdiscordのbot作ったり動画編集自動化したりしてきたんですが先というか続きが見えません
661: (ワッチョイ b6e8-Dn6t) 2022/11/06(日)19:03 ID:tSvQZNnX0(1) AAS
PyPIザッピングして良さそうなモジュールみつけてかっこいい応用を書く
662: (ワッチョイ 6502-76so) 2022/11/06(日)19:05 ID:A20KyXoS0(1) AAS
ラズパイでIoT
リアルの物を動かせると、やれる事の幅が広がるよ
663: (ワッチョイ debb-URwm) 2022/11/06(日)19:13 ID:hyDfi3PG0(1) AAS
>>660
壁に落書きしてくるのがかっこいいと思ってるんなら大間違いだわw
664: (ワッチョイ d204-ocuO) 2022/11/06(日)21:07 ID:hWJeexFN0(2/2) AAS
PyPIで良さそうなモジュール見つけるってどうやるの?
PyPI サイト見てtrend moduleみたいなの適当に選んで説明見ても詳しい使い方がわからない
665: (ワッチョイ f666-GkOZ) 2022/11/06(日)21:15 ID:2BZA6H+N0(1) AAS
電子工作もそうだけど、環境は整いすぎに整ってて、やりたいことがあれば何でもすぐにできる
でもやりたいことが見つからない
さてはみんな環境を整えることを目的にしているな
666: (テテンテンテン MM96-xcLn) 2022/11/07(月)06:48 ID:E9VDXcWoM(1) AAS
アホな質問だな~
まずやりたいことがあって、それからツールを探すものだろ
667: (アウアウウー Sacd-ocuO) 2022/11/07(月)08:02 ID:jFHCFA25a(1) AAS
その通りだけどやりたいことが見つからないんだわ
もしかすると勉強からの逃避のためにプログラミングという逃げ場を作りたいのかもしれない。やりたいことが自然と出てきたらやることにするよ
668: (テテンテンテン MM96-xvRb) 2022/11/07(月)08:09 ID:nVmoLWqcM(1) AAS
遠回りの人生それも人生
669: (ワッチョイ b110-o+MF) 2022/11/07(月)10:49 ID:vghVm0yU0(1) AAS
巨大数の実数計算は最先端だぞ。
670: (ワッチョイ b5da-D+ul) 2022/11/07(月)14:36 ID:ns7213lX0(1/2) AAS
>>654
EasyOCR は?
pytorch必須だが
671: (ワッチョイ f666-GkOZ) 2022/11/07(月)14:48 ID:a5k3bCTy0(1/5) AAS
使い物になるOCRはみんなAIで有料なんだよな
客はDXしたい企業だから高い
672: (ワッチョイ b6e8-Dn6t) 2022/11/07(月)15:15 ID:dmSTAQ160(1) AAS
料金みたことある?業務で考えたらめちゃ安いとおもうが
673: (ワッチョイ 9201-obsI) 2022/11/07(月)15:26 ID:kmERiYaX0(1) AAS
有料OCR知ってる俺スゲー君なんて相手にすんなよ...
674: (ワッチョイ f666-GkOZ) 2022/11/07(月)15:26 ID:a5k3bCTy0(2/5) AAS
OCRしたい書類なんて有限だから、あらかた終わったら需要が無くなる
そしたらgoogle様が無料開放してくれる筈
675(1): (ワッチョイ 8101-wRrB) 2022/11/07(月)15:41 ID:rtBnyCPM0(1) AAS
Pythonが「メインの利用言語」で2位にとどまる、1位に立ったのは定番のあの言語
外部リンク:xtech.nikkei.com
676: (ワッチョイ f666-GkOZ) 2022/11/07(月)15:51 ID:a5k3bCTy0(3/5) AAS
AIだから教育が必須で、それなりにコストがかかる
こんなもんは公共事業で、どこかが代表してやって、コスト回収できたら無料化する
各国で自分のとこの言語についてやるのが筋だけど、
どうせ日本はやらないのでgoogleがやる
677(1): (ワッチョイ f666-GkOZ) 2022/11/07(月)16:22 ID:a5k3bCTy0(4/5) AAS
似たようなので、音声からテキストへの変換も金かかる
あれが無料で出来たら過去の膨大な音声や動画の資料が検索したり分析可能になって、
文化が大きく前進するだろうに金がブレーキかけてる
国の事業としてやれば一人頭の負担なんて微々たるものなのに
678: (ワッチョイ b5da-D+ul) 2022/11/07(月)16:28 ID:ns7213lX0(2/2) AAS
この夏whisperが公開されたやろ?
679: (ワッチョイ f666-GkOZ) 2022/11/07(月)16:32 ID:a5k3bCTy0(5/5) AAS
そんなのあったのか
マスク様々やな
680: (ワッチョイ b18e-ly3j) 2022/11/07(月)16:46 ID:6QND4EcV0(1) AAS
>>675
Rubyオワコン
681: (ワッチョイ 5e10-OKK8) 2022/11/07(月)21:52 ID:J6xutGri0(1) AAS
>>677
つまり文字起こし言いたいんだろ?
なんかクソ認識悪いAPIだったら何かあった気がする
682: (ワッチョイ 12ad-6Mf9) 2022/11/08(火)10:16 ID:gvBOR9qA0(1) AAS
半島系帰化人は強姦魔ばかり
死ねよクズ帰化人!
683: (ワントンキン MM62-76so) 2022/11/08(火)11:03 ID:NJ3yWFAyM(1) AAS
何でこのスレで暴れてるんだよ
684: (ワッチョイ 9263-zlm6) 2022/11/08(火)11:17 ID:Z/fTsurM0(1) AAS
壊れちゃったんだろ
685: (アウアウウー Sacd-Z1Pq) 2022/11/08(火)14:10 ID:SId0EMb3a(1) AAS
ランダムに書き込んでるbotだよ
686: (ワッチョイ 5e63-xcLn) 2022/11/08(火)19:27 ID:h+Zmgne00(1) AAS
有料と言ってもgoogleAPIってかなり安いと思うんだけど
手持ちの本数十冊OCRして1,000円いかなかった気がする
上下前次1-新書関写板覧索設栞歴
あと 316 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.024s