[過去ログ] Pythonのお勉強 Part68 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
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秒以下で終わると思うんですが
pythonではどうやって高速化できますか?
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さぁ
上下前次1-新書関写板覧索設栞歴
あと 355 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.012s