Pythonのお勉強 Part68 at TECH
[2ch|▼Menu]
[前50を表示]
500:デフォルトの名無しさん
22/10/28 08:27:01.13 aYQ1muJl0.net
ちょんてさ、半島に帰れば差別されないのに絶対に半島に帰らないよね?
それは、日本が平和で豊かで、
日本人はみな親切だからです。
なのにちょんは差別されてると妄想をいだいて
日本人女性を強姦しまくってる!
ちょんは皆殺しにするしかない!

501:デフォルトの名無しさん
22/10/28 08:47:10.38 aYQ1muJl0.net
半島に絶対帰らないちょんw
日本人は犯罪者に親切し過ぎる!

502:デフォルトの名無しさん
22/10/28 09:16:34.07 lPPjHZ9qa.net
発作か

503:デフォルトの名無しさん
22/10/28 10:42:02.56 6fPFyEs10.net
統一教会が追い詰められてきたから焦ってるんだろ

504:デフォルトの名無しさん
22/10/30 03:06:48.95 9F5gJDkR0.net
Python初心者ですが新事実を発見しました
クラスのメンバ変数はデフォルト値が設定してあっても
コンスタントラクタで初期化しないかぎり、別に生成したクラスobjと共有されてるようです
リストとか特定の変数限定かもしれないですが

505:デフォルトの名無しさん
22/10/30 03:14:13.07 9F5gJDkR0.net
具体的にこれですが

class A :
L = []
def __init__(self): pass
class X :
L = []
def __init__(self): self.L = []
a = A()
a.L.append(7)
b = A()
print(b.L) # 新規生成なのに値が入ってる
a = X()
a.L.append(7)
b = X()
print(b.L) # 正常
print(a.L) # 正常

506:デフォルトの名無しさん
22/10/30 04:02:03.41 2IVXofav0.net
それはメンバ変数でなくてクラス変数だからだよ

507:デフォルトの名無しさん
22/10/30 04:51:48.91 9F5gJDkR0.net
そういうことか
Pythonでクラス変数とインスタンス変数を取り違えてハマった
URLリンク(qiita.com)

508:デフォルトの名無しさん
22/10/30 05:37:36.99 q24pCrd50.net
韓国人は神さま!
全財産を寄進せよ!
マンセー!

509:デフォルトの名無しさん
22/10/30 07:07:55.87 PYm3clPCM.net
>>505
pythonから入った者には
そらそうだろとしか思わないw
たぶんオレは他言語扱えないな

510:デフォルトの名無しさん
22/10/30 07:49:05.29 2N6ePwSn0.net
他の言語でも同等の機能を持つものはあるけどpythonはどちらの変数なのかを明示しないから混乱し易い

511:デフォルトの名無しさん
22/10/30 07:56:11.62 WAC/PohS0.net
どっちも同じに見えるのはその方が便利だと思ったんだろうか
必要なら使う側で見分け付くように名前を付ければいいという柔らか運用

512:デフォルトの名無しさん
22/10/30 08:30:50.67 2N6ePwSn0.net
>>511
> どっちも同じに見えるのはその方が便利だと思ったんだろうか
変数宣言をしないって言うポリシーなので最初に使った場所で決めるようにした/せざるを得なかったじゃないかなって思ってる
> 必要なら使う側で見分け付くように名前を付ければいいという柔らか運用
使う側はそれでいいけど宣言する人が勘違いしてたら意味ないわけで...

513:デフォルトの名無しさん
22/10/30 08:44:46.72 YV/Jz1Xt0.net
つい最近同じように、クラスを覚えようと
「python class」でググった一番上のサイトにやられた
URLリンク(camp.trainocate.co.jp)
クラス変数もインスタンス変数もめちゃくちゃだった

514:デフォルトの名無しさん
22/10/30 08:51:51.63 KYgyTmU4M.net
クラス変数をself.でアクセスしない運用にすれば取り敢えず解決

515:デフォルトの名無しさん
22/10/30 08:58:13.36 ejVjSPjsH.net
self.__class__.foo
self.FOO

516:デフォルトの名無しさん
22/10/30 11:40:59.42 0ss8sts10.net
質問です。
requestsを使って画像をダウンロードする時、
一定のサイズ以下の物をダウンロードしないようにしたいです。
どのようにするといいでしょう?

517:デフォルトの名無しさん
22/10/30 12:00:39.70 Ofy0PT2CM.net
>>516
どうすればいいって
自分で質問して自分で答え言ってるじゃん

518:デフォルトの名無しさん
22/10/30 12:02:51.23 o3zlfJHfa.net
streamを有効にして、ちびちびと確認しつつ取得

519:デフォルトの名無しさん
22/10/30 12:03:47.95 o3zlfJHfa.net
事前にわかってりゃその時点で止めればいいけどね

520:デフォルトの名無しさん
22/10/30 12:10:52.74 0ss8sts10.net
>>519
つまり一度ダウンロードしてからcv2等でサイズを確認し、
OKならリネームして保存、NOなら削除
という感じでしょうか?

521:デフォルトの名無しさん
22/10/30 12:28:08.24 WAC/PohS0.net
そうでないことは質問者なんだから判ってるだろうに

522:デフォルトの名無しさん
22/10/30 12:37:02.73 0WCgMjCVM.net
requests ファイルサイズってググれば一番上に出てくる

523:デフォルトの名無しさん
22/10/30 12:37:56.59 o3zlfJHfa.net
サイズって、実データのサイズじゃなくて画像のピクセル数とか色のサイズってこと?

524:デフォルトの名無しさん
22/10/30 12:41:23.93 ejVjSPjsH.net
画像のサイズっていう文脈なら俺はim.sizeとかを想定するなー
request文脈なら容量のサイズだけどな!

525:デフォルトの名無しさん
22/10/30 12:41:44.93 0ss8sts10.net
すいません。
質問の仕方がまずかったです。
画像の横幅とか縦幅の方のサイズのことです。
横幅350px以下の画像をダウンロードする時に除外したいのです。

526:デフォルトの名無しさん
22/10/30 12:46:32.71 o3zlfJHfa.net
まあフォーマットによっては頭だけ読めばわかるけど…

527:デフォルトの名無しさん
22/10/30 12:59:12.74 WAC/PohS0.net
元々はサイズなんか判らん、というプロトコルがあって、
それでは不便だからと建て増しで追加してるから、
判る場合も判らない場合もあるんだよな
判ったとしても嘘をついている場合もある

528:デフォルトの名無しさん
22/10/30 13:09:28.80 0ss8sts10.net
>>527
なるほど
そんな事情があるとは知りませんでした。
オンライン上でサイズを調べるのは無理そうなので、
一度ダウンロードしてから仕分けるようにします。
ご迷惑をおかけしてしまいすいません。
ありがとうございました。

529:デフォルトの名無しさん
22/10/30 13:18:51.61 XddGgynb0.net
パッとヘッダ見た感じjpegなら0xA3にWORD値で高さ、0xA5に幅、どちらもリトルエンディアン
pngなら0x10にDWORD値で高さ、0x14に幅、リトルエンディアン
って感じだね
上手くヘッダの一部だけダウンロードして画像サイズを得る関数を作ればトラフィック軽減になるかも?

530:デフォルトの名無しさん
22/10/30 14:39:50.92 XddGgynb0.net
暇だから作ってみたおじさん
URLリンク(ideone.com)

531:デフォルトの名無しさん
22/10/30 15:26:12.39 VC4EQr6u.net
デザインパターンのSingletonパターンって必要ですかね・・
結局なんらかのカウンターで一元管理することになりませんか・・

532:デフォルトの名無しさん
22/10/30 15:49:28.81 Hd1qfqu50.net
バイトコードってヒープ領域に格納されてvmに渡されるのですか?

533:デフォルトの名無しさん
22/10/30 16:53:19.41 pkba5bNo0.net
>>529
ビッグエンディアンね
jpegは画像サイズが含まれるセグメントの位置が固定ではないので決め打ちは危険

534:デフォルトの名無しさん
22/10/30 16:56:31.04 40a1nlTva.net
>>531
使わないほうが良いものである

535:デフォルトの名無しさん
22/10/30 17:24:05.37 yaCBWxQaa.net
>>532
そうです
内部的にはPyCodeObjectという形で実装されています

536:デフォルトの名無しさん
22/10/30 17:53:38.94 Hd1qfqu50.net
>>535
ありがとうございます!

537:デフォルトの名無しさん
22/10/30 18:13:35.82 CDidbViTM.net
>>504
他言語触ってて
先に型ヒントつけて宣言しとこで同じ間違いしたわ

538:デフォルトの名無しさん
22/10/30 19:10:27.11 XddGgynb0.net
>>533
本当だ逆に覚えてた恥ずかしい
JPEGはサイズ前の5byteが共通っぽかったから>>530ではFF C0 00 11 08を検索するようにしてみたけどFF C0後の3byteは可変っぽいね
そもそも1KB以内にサイズ情報があるかも分からないのか

539:デフォルトの名無しさん
22/10/30 23:05:03.89 q24pCrd50.net
ここは朝鮮人のスレ
チョッパリはくるな!

540:デフォルトの名無しさん
22/10/30 23:53:08.68 vrlOFY0H0.net
発作か

541:デフォルトの名無しさん
22/10/31 14:05:35.97 j6J+ogvNM.net
>>531
なんないよ

542:デフォルトの名無しさん
22/11/01 02:33:37.39 mmiO/WJW0.net
不特定の文字・数字・記号、またそれらの組み合わせを意味する表記で記入する方法を教えて下さい
[123456aaaあ井う~〜」
↑みたいなのがあったとして、数字や文字は毎回変わる、場合によっては桁数が変わったりもする
テキストファイル内で上記のパターンの文字列を見つけて、その前の位置で改行を入れるみたいなことをしたいです
イメージですが下記みたいに表して a に代入しておいて
[123456aaa文字] → [%%% ¥¥¥¥¥¥¥¥] or [%(桁数)¥(桁数)]
replace(a,”/n”+a) でテキストファイルを書き換えるようなことって可能ですか?

543:デフォルトの名無しさん
22/11/01 02:42:25.93 mmiO/WJW0.net
誤字 /n → \n

544:デフォルトの名無しさん
22/11/01 03:36:18.46 I1aopbaSM.net
なるほどわからん

545:デフォルトの名無しさん
22/11/01 08:16:26.34 xJk+jZok0.net
これは煽りではなく真面目なアドバイスなんだが、プログラミングより国語を勉強した方がいい
その言語能力だと難しいと思う

546:デフォルトの名無しさん
22/11/01 08:30:28.54 mmiO/WJW0.net
222tq2tq2tq269ああ%64agaoiwahaio.59gagagahai3a.t69a 5>22gahaiiha
この文字列を
222tq2tq2tq269
ああ%64agaoiwaha
io.59gagagahai3a.t69
a 5>22gahaiiha
この出力結果にするにはどうすれば良いですか? なら大丈夫ですかね?
この場合だと「文字列2つ + 記号1つ + 数字2つ」のパターンを見つけて改行したい

547:デフォルトの名無しさん
22/11/01 08:48:28.70 p4TXbqbPa.net
じゃあそのパターンで改行すれば…
正規表現でいいんじゃないかな

548:デフォルトの名無しさん
22/11/01 08:51:40.09 CMvcSOEo0.net
このスレよりも、正規表現のスレで聞けば?

549:デフォルトの名無しさん
22/11/01 09:10:51.89 tDs0tp7pM.net
オホダナー
そうだよオホダヨ~

550:デフォルトの名無しさん
22/11/01 09:37:37.84 mmiO/WJW0.net
>>547
その正規表現の表記の方法がよく分からないです
123abcdeあいう

“\d{3}\w*.{3}”
これじゃダメみたいで、どう表記するのが正解なのか分かる方いたら教えて欲しいです

551:デフォルトの名無しさん
22/11/01 09:48:17.04 mmiO/WJW0.net
できました。ありがとうございました

552:デフォルトの名無しさん
22/11/01 10:42:07.10 HBYRkZVUa.net
正規表現の勉強がてらやってみた
URLリンク(ideone.com)
最後の1行はマッチしないね

553:デフォルトの名無しさん
22/11/01 11:08:19.56 mmiO/WJW0.net
表記自体は合っていたのですが、re.match()でやってたせいで出力されなかったみたいで、re.search()に変えるだけで解決しました

554:デフォルトの名無しさん
22/11/01 12:13:10.09 vww+azZz0.net
matchは使わずに
search(r'^なにか')
でいいよな
fullmatchは^と$で
^や$を使うなというのであれば、$だけ使うパターンも整備されていないと不完全

555:デフォルトの名無しさん
22/11/01 16:21:24.69 GYf/ELerM.net
俺は君にマッチしたい※

556:デフォルトの名無しさん
22/11/01 16:40:02.94 1fqXVNhi0.net
正規表現に関してはrubyやperlみたいに演算子にしてしまうのがベストだと思う
searchだとかmatchだとかregexpだとかmatch_allだとか覚えられんて

557:デフォルトの名無しさん
22/11/01 17:42:07.83 59UjWoGEM.net
命名とかAPI設計がイケてない
match、search、fullmatch・・・
たまにしか使わない人は諦めて毎回リファレンス参照するしかない

558:デフォルトの名無しさん
22/11/01 17:59:02.79 vww+azZz0.net
list.append()が破壊的だったかすら忘れてぐぐる

559:デフォルトの名無しさん (ワッチョイ 8b89-g96c)
22/11/01 22:54:57.42 w1dGDiRI0.net
覚えられないのではない
覚えないという選択をしているのだ
覚えるために何か工夫したのか?

560:デフォルトの名無しさん (ワッチョイ 9109-iO6U)
22/11/01 22:55:36.13 EqpfaKBX0.net
イテレータ判定されるのにfor できないんですが
イテレータとはforができるものではないんですか


X = type("")
if hasattr(X, '__iter__') :
for x in X : pass

561:デフォルトの名無しさん
22/11/01 23:34:09.39 yhai460Y0.net
X(= str)じゃなくXのインスタンスならそう

562:デフォルトの名無しさん
22/11/01 23:43:36.24 vww+azZz0.net
覚えないといけない時点でおかしい
理解すれば覚えなくていいのが正解
list.append()は破壊的で、str.replace()は非破壊であることに、
合理的な説明は無い
その方が便利なことが多そうだからとか、メモリの都合とか、
一旦そう決めちゃったからとか、そんな理由に過ぎない

563:デフォルトの名無しさん
22/11/02 00:26:44.23 WNjxQYpUM.net
list.appendは配列の終わりにつけるだけ
str.replaceは配列の途中に差し込む可能性があるからでは?
メモリ操作のコストが違うじゃん

564:デフォルトの名無しさん
22/11/02 00:47:23.04 ul/vZuFO0.net
配列が格納してある後ろに空きスペースがたくさん確保してあるならそうだろうけど
で、コストが実際に違ったとしてもそんなことは知らんがなでしかない

565:デフォルトの名無しさん
22/11/02 00:58:46.26 I1Z+o8fX0.net
みんな知ってることだけど、listはmutableでstrはimmutableだからだよ。
これでもう各関数が破壊的かどうかいちいち覚える必要はなくなったね!

566:デフォルトの名無しさん
22/11/02 01:00:03.55 WNjxQYpUM.net
listはある程度後ろに確保してるしコストが実際に違ったらそれは明確に合理的な理由でしょ

567:デフォルトの名無しさん
22/11/02 01:17:00.86 jyU6y3CY0.net
>>565
これ
まあそういうものとして覚えるしかないわけだけど

568:デフォルトの名無しさん
22/11/02 07:59:09.20 cbFKoHcVM.net
べつに目的の物が作れればどうでもいいんじゃないの?
ミッションクリティカルなモノをコレで作ったりするのかな?

569:デフォルトの名無しさん
22/11/02 11:06:12.06 FQ1wBQnh0.net
listに後ろとか関係なくない?

570:デフォルトの名無しさん
22/11/02 11:21:15.39 1xZXeW2Ya.net
linkedなリストは関係ないよな
連続したメモリに入ってる配列的なやつはアレだけど

571:デフォルトの名無しさん
22/11/02 11:39:42.36 FQ1wBQnh0.net
>>570
str との違いも結局これだし

572:デフォルトの名無しさん
22/11/02 14:55:39.24 VFt43YlcM.net
pythonのリストはポインタの配列でしょ?

573:デフォルトの名無しさん
22/11/02 18:15:12.19 1xZXeW2Ya.net
違います

574:デフォルトの名無しさん
22/11/02 18:27:31.11 jyU6y3CY0.net
PyObject*の配列です
PyObject **ob_item; // PyObject*の配列
Py_ssize_t allocated; // アロケートされてる個数

575:デフォルトの名無しさん
22/11/02 18:28:55.28 jyU6y3CY0.net
cpythonなソースは読みやすい

576:デフォルトの名無しさん
22/11/02 18:42:15.13 ul/vZuFO0.net
0から255までの数字が入った要素数1000の配列があって、
Cだとunsigned char list[1000];
みたいに宣言してlist[i]で参照するとアドレス計算で値を取ってくるけど、
pythonはどうやってるの?

577:デフォルトの名無しさん
22/11/02 18:43:56.47 4MCwg8YuM.net
ちょっと調べた限りやっぱりPythonのリストはポインタの配列だと思うんだが違うっていうなら何か教えて
insertの遅さとかで連結リストではないとは思うけど

578:デフォルトの名無しさん
22/11/02 18:51:59.96 wyluLqIy0.net
>>574が正しい
URLリンク(github.com)

579:デフォルトの名無しさん
22/11/02 18:55:42.08 jyU6y3CY0.net
cpythonのソースはマジで読みやすい
Rubyとかもうぐちゃぐちゃしてて読めねえもん

580:デフォルトの名無しさん
22/11/02 19:05:34.74 jyU6y3CY0.net
実際の配列のサイズはPyObject_VAR_HEADマクロのob_sizeに入ってる

581:デフォルトの名無しさん
22/11/02 19:12:23.01 1xZXeW2Ya.net
>>577
別になんでもいいんです

582:デフォルトの名無しさん
22/11/02 19:14:41.69 5K2+hbiBa.net
答え書かれてるのに全く分かってなくて草

583:デフォルトの名無しさん
22/11/02 19:30:34.65 1xZXeW2Ya.net
大学行くと実装と仕様の区別がつくようになるかも?

584:デフォルトの名無しさん
22/11/02 19:31:01.29 l50Y39h10.net
>>574
つまりポインタの配列

585:デフォルトの名無しさん
22/11/02 19:31:44.66 ul/vZuFO0.net
listにappendすると、ポインタの配列の末尾にポインタが追加される
配列のサイズが変わるので、サイズを増やした配列を作ってコピーしないとできない
筈なのに、idを調べると変わらない
**ob_itemに入ってる値は変わるけど、**ob_item自体のアドレスは変わらない
ということ?

586:デフォルトの名無しさん
22/11/02 19:33:58.87 l50Y39h10.net
組み込みだから作り直した配列にidがコピーされてたり

587:デフォルトの名無しさん
22/11/02 19:36:39.11 oCOyjRuB0.net
VM上は指すオブジェクト変わってないのにid変わったらあかんでしょ

588:デフォルトの名無しさん
22/11/02 19:40:00.28 rAnbDRgM0.net
適当にリンクリストあたりかと思ってた

589:デフォルトの名無しさん
22/11/02 19:40:29.11 ul/vZuFO0.net
appendしても同じオブジェクトという時点で違和感があるんだよな
明らかに別物やん
仮にappendが非破壊で
list = list.append()
とした時にidが変わる方が納得できる

590:デフォルトの名無しさん
22/11/02 19:40:29.75 5K2+hbiBa.net
>>585
逆だよ
ob_item自体は大きさが変わる時にreallocでアドレスが変わるけど
中身の方はポインタをコピーするだけだから変わらない

591:デフォルトの名無しさん
22/11/02 19:42:07.37 1xZXeW2Ya.net
>>577
違うって理解できた?

592:デフォルトの名無しさん
22/11/02 19:51:27.03 5K2+hbiBa.net
>>589
そもそもが全部Cで実装されてるんだからそういうメモリモデルなんだ、という理解で良いと思うよ

593:デフォルトの名無しさん
22/11/02 19:53:06.08 4MCwg8YuM.net
>>591
あなたは何もわかってないのは理解できました

594:デフォルトの名無しさん
22/11/02 19:57:27.92 1xZXeW2Ya.net
>>593
わかんない?
違うよ
どんどん主張が後退するんじゃねえかなという期待の下、繰り返すけど

595:デフォルトの名無しさん
22/11/02 21:11:39.58 CsBXjP5R0.net
リンクリストはリスト的なものを作るときに第一の選択肢としてはこないと思うよ。
任意の要素へのアクセスがO(n)かかるから。
必ず頭から順番に読んで、途中に挿入したいことが多いとかいう状況だったら使うけど、こういう特性を、癖があると思う人の方が多いんじゃないかな。
そういうコンピュータサイエンスの初歩みたいなところの実装が気になるなら、Javaを勉強してみるといいかもね。
リストも辞書もセットも、複数の実装方法が標準で用意されてて明示的にどれを使うか決めなくちゃいけないから。
そう考えると初心者にJava教えてた頃ってコレクションで付いていけなくなり勉強を諦めた人多いんだろうか。

596:デフォルトの名無しさん
22/11/02 21:16:31.46 CsBXjP5R0.net
>>589
夕飯を食べる前の自分と食べた後の自分は別のインスタンスか?って問いにyesと答えられるならばイミュータブルなものにしかidを付けてはいけないと考えているのだろう(そういう言語もある、Haskellとか)
そうでなければ、ミュータブルなインスタンスはミュータブルなんだからidが同じでも中身は変化すると考えるべきだろう

597:デフォルトの名無しさん
22/11/02 21:22:30.41 jJasVlr90.net
idってCでのアドレスそのものなんでしょ
実装の都合でアドレスが変わったらidも変わるというだけの話で、
何らかのポリシーみたいなものは背景に無いような

598:デフォルトの名無しさん
22/11/02 21:30:55.81 CsBXjP5R0.net
>>597
CPythonではな。(すみません知りませんでした)
しかしGCがかかりまくるVM上で動くPythonの実装もあるから、CPythonではそうっていう認識に留めておいたほうがいいんじゃないかなあ。

599:デフォルトの名無しさん
22/11/02 21:42:19.23 2orW5ow60.net
idが変わる/変わらないとミュータブル/イミュータブルは一対一対応?

600:デフォルトの名無しさん
22/11/02 22:06:28.39 CsBXjP5R0.net
>>599
まず、イミュータブルというのをどう定義するかによると思うけど
(タプルはイミュータブルだが、タプルの中にリストを入れた場合、リストほミュータブルで、リストに変更を加えてもタプルのインスタンスが新しくできるわけではない)
そういうややこしい例を除いても、
イミュータブルならば、値を変えたらidが変わる
値を変えてもidが変わらないならミュータブル
しか言えないんじゃない?

601:デフォルトの名無しさん
22/11/02 22:13:30.31 F9kh54e50.net
定義や実装で何がミュータブルかがころころ変わってはいけなくて、
pythonではどんな環境でも同じものがミュータブルであるべき
で、idが変わる/変わらないが環境依存ならば、idとミュータブルは関係ないことになる

602:デフォルトの名無しさん
22/11/02 22:18:06.81 jyU6y3CY0.net
わけわからん

603:デフォルトの名無しさん
22/11/02 22:20:05.72 yCeW62XuM.net
pythonの辞書ってc++のmapと違って内部でソートされてないからアクセス遅いっぽいんだよね
keysで取り出しても登録した順だし
文字列でも数値でもキーにできるからそういうものなのか

604:デフォルトの名無しさん
22/11/02 22:50:50.14 rAnbDRgM0.net
>>595
最後尾への追加削除がO(1)だったからリンクリストだと思ったけど
リアロケートの実装でどうにかそれっぽくなるんだねぇ
全く気にしてなかったけど、勉強になったわ

605:デフォルトの名無しさん
22/11/02 22:58:46.37 P6hHm0TD0.net
ループで一つずつappendしていくようなコードは、
溜めておいて一気にどーんで高速化できそう

606:デフォルトの名無しさん
22/11/02 23:13:03.99 Vdzb0Lkj0.net
Elixir なんて片方向リストだから、先頭の要素の追加・削除のみ速い。
末尾では全要素をたどる
Ruby は両方向リストだったかな?

607:デフォルトの名無しさん
22/11/02 23:41:13.42 d827SSNz0.net
>>603
pythonの辞書は順番を保持することが仕様で規定されてる

608:デフォルトの名無しさん
22/11/03 00:20:58.38 gcHdWorI0.net
3年くらい前からだっけ?
キーバリューやから順番気にしたことなかったわ

609:デフォルトの名無しさん
22/11/03 00:37:59.14 vWeFXHff0.net
順番が同じだとセキュリティの問題があるから意図的にランダムにしてなかったっけ

610:デフォルトの名無しさん
22/11/03 00:45:24.21 9oLRzF140.net
>>604
C++のvectorとか、JavaのArrayListの典型的な実装だと、リアロケートが発生するときに倍ぐらいの領域を予め確保しておく、ってのが普通って読んだな
コードレベルで読んだ訳じゃないから確たるエビデンスがあるわけじゃないけど。

611:デフォルトの名無しさん
22/11/03 00:49:20.51 9oLRzF140.net
辞書は3.5だかそのぐらいで入れた順になるように仕様が決まったよね
それまではバラバラだったはず
あとソート済みが欲しいならsortedcollectionsがあるんじゃないの
Pythonでパフォーマンス気にするようなコード書いたことないから速くなるかは知らないが
パフォーマンス気になるならもう普通にpybind11よ

612:デフォルトの名無しさん
22/11/03 01:13:09.17 t2qUW0n10.net
動的配列は償却計算量の典型例だぞ

613:デフォルトの名無しさん
22/11/03 09:06:43.51 b87ZSO0X0.net
半島人w

614:デフォルトの名無しさん
22/11/03 13:19:41.92 M31+WIXk0.net
ネトウヨはコードすら書けない

615:デフォルトの名無しさん
22/11/03 17:39:13.22 JzcJhjtx0.net
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ではどうやって高速化できますか?

616:デフォルトの名無しさん
22/11/03 17:50:53.27 6cc1wOit0.net
全角スペースでインデントするといい

617:デフォルトの名無しさん
22/11/03 17:57:37.28 t2qUW0n10.net
エラトステネスの篩みたいなまともなアルゴリズムを使え

618:デフォルトの名無しさん
22/11/03 18:05:57.27 pngFKRCN0.net
>>615
range(2, n//2 + 1) を range(2, int(n**0.5)+1)
にするだけで速くなると言うのは違うか。
n**0.5 は math を import するのが面倒だっただけ。。。

619:デフォルトの名無しさん
22/11/03 18:12:13.51 Tny9BBIXa.net
しょーもないネタ振り

620:デフォルトの名無しさん
22/11/03 18:58:51.96 Ppt07bQPH.net
>>617
言語間の速度差を埋めたいという文脈で
片方により効率的なアルゴリズム使えというのは筋が違うと思う
それやったら相手のCも早くなるやん

621:デフォルトの名無しさん
22/11/03 19:15:26.76 t2qUW0n10.net
それはそうだけどPythonをできるだけ速くしようというのは徒労に終わるんだよな

622:デフォルトの名無しさん
22/11/03 19:17:29.83 5fumPTTR6.net
>>615
allかanyか使う

623:デフォルトの名無しさん
22/11/03 19:45:13.49 NbsIPyEs0.net
>>620
> 言語間の速度差を埋めたいという文脈で
そうか、単にPythonで高速化したいだけに見えるけど?
> pythonではどうやって高速化できますか?

624:デフォルトの名無しさん
22/11/03 20:09:45.07 6A5YXZlC0.net
>>615
sympy.isprime()

625:デフォルトの名無しさん
22/11/03 20:13:41.27 6A5YXZlC0.net
>>615
そもそもこのプログラムは一行で済む
print(sympy.primepi(250001))

626:デフォルトの名無しさん
22/11/03 20:16:42.18 gDosIilW0.net
SymPy無いさー

627:デフォルトの名無しさん
22/11/03 22:42:51.75 qK/YTuYk0.net
Numpyさぁ

628:デフォルトの名無しさん
22/11/04 11:06:17.40 RgN4dMLC0.net
公式のドキュメント読むと
「pip は推奨されるインストーラ・プログラムです。 Python 3.4 からは、 Python バイナリ・インストーラに最初から付属するようになりました。」
とか見るけど、触る環境どれも最初からインストールされてた試しがなくて手動インストールばっかなんだが

629:デフォルトの名無しさん
22/11/04 11:16:46.46 +Vzk9d850.net
>>628
どこのバイナリインストーラ使ってるの?

630:デフォルトの名無しさん
22/11/04 11:23:08.55 eh042CP4a.net
>>628
たぶん入ってるけど実行ファイルのパスが通ってないんだよ

631:デフォルトの名無しさん
22/11/04 11:26:42.20 iSP9CUI40.net
debianとかはOSのスクリプトを実行するための環境なので
最小限になるようパッケージが分かれている
不便にみえるけどユーザが使う場合はパッケージ外で導入した方が
特定のバージョンも好きにえらべてシンプル

632:デフォルトの名無しさん
22/11/04 13:14:21.89 xdVLdIYL0.net
npm/yarn, Ruby のbundler などは、デフォルトでコマンド実行できるけど
多分これらは、デフォルトで環境変数PATH にあるフォルダにインストールされるのだろう

633:デフォルトの名無しさん (ブーイモ MMdd-uk66)
22/11/04 19:16:21.95 7+yqrzWjM.net
>>628
python -m pipするのが安全やで(pipコマンドだと、複数バージョン入ってると意図したpythonに紐づいてないpipが実行される場合がある)

634:デフォルトの名無しさん
22/11/05 21:26:42.31 MH3sXGrP0.net
pythonつかって紙に書いた文字判別するとかって簡単にできますか?

635:デフォルトの名無しさん
22/11/05 21:34:23.73 7lAZ3AaJ0.net
簡単だけど有料

636:デフォルトの名無しさん
22/11/05 21:51:22.37 MH3sXGrP0.net
>>635
無料のライブラリなんかありませんかね?無いんなら諦めます

637:デフォルトの名無しさん
22/11/05 21:58:26.55 yxkEcNx60.net
>>634
判別とはどういうことをしたいのかよくわからんけどとりあえず python ocr とかでぐぐればいいんじゃね?
URLリンク(gammasoft.jp)

638:デフォルトの名無しさん
22/11/05 21:58:41.35 j6cTC8iG0.net
自分で無料ライブラリーを作る、しか

639:デフォルトの名無しさん
22/11/05 22:07:24.17 MH3sXGrP0.net
>>637
ありがとうございます!

640:デフォルトの名無しさん (ワッチョイ d204-ocuO)
22/11/06 18:38:56.63 hWJeexFN0.net
pythonでなんかかっこいいことがしたいです
でもやることが見つかりません。どうしたらいいですかね
今までポイントサイトをseleniumで自動化したりdiscordのbot作ったり動画編集自動化したりしてきたんですが先というか続きが見えません

641:デフォルトの名無しさん
22/11/06 19:03:47.89 tSvQZNnX0.net
PyPIザッピングして良さそうなモジュールみつけてかっこいい応用を書く

642:デフォルトの名無しさん
22/11/06 19:05:44.66 A20KyXoS0.net
ラズパイでIoT
リアルの物を動かせると、やれる事の幅が広がるよ

643:デフォルトの名無しさん
22/11/06 19:13:43.26 hyDfi3PG0.net
>>640
壁に落書きしてくるのがかっこいいと思ってるんなら大間違いだわw

644:デフォルトの名無しさん
22/11/06 21:07:15.95 hWJeexFN0.net
PyPIで良さそうなモジュール見つけるってどうやるの?
PyPI サイト見てtrend moduleみたいなの適当に選んで説明見ても詳しい使い方がわからない

645:デフォルトの名無しさん
22/11/06 21:15:54.96 2BZA6H+N0.net
電子工作もそうだけど、環境は整いすぎに整ってて、やりたいことがあれば何でもすぐにできる
でもやりたいことが見つからない
さてはみんな環境を整えることを目的にしているな

646:デフォルトの名無しさん
22/11/07 06:48:18.34 E9VDXcWoM.net
アホな質問だな~
まずやりたいことがあって、それからツールを探すものだろ

647:デフォルトの名無しさん
22/11/07 08:02:58.71 jFHCFA25a.net
その通りだけどやりたいことが見つからないんだわ
もしかすると勉強からの逃避のためにプログラミングという逃げ場を作りたいのかもしれない。やりたいことが自然と出てきたらやることにするよ

648:デフォルトの名無しさん
22/11/07 08:09:59.84 nVmoLWqcM.net
遠回りの人生それも人生

649:デフォルトの名無しさん
22/11/07 10:49:11.04 vghVm0yU0.net
巨大数の実数計算は最先端だぞ。

650:デフォルトの名無しさん
22/11/07 14:36:29.74 ns7213lX0.net
>>634
EasyOCR は?
pytorch必須だが

651:デフォルトの名無しさん
22/11/07 14:48:18.41 a5k3bCTy0.net
使い物になるOCRはみんなAIで有料なんだよな
客はDXしたい企業だから高い

652:デフォルトの名無しさん
22/11/07 15:15:22.15 dmSTAQ160.net
料金みたことある?業務で考えたらめちゃ安いとおもうが

653:デフォルトの名無しさん
22/11/07 15:26:05.72 kmERiYaX0.net
有料OCR知ってる俺スゲー君なんて相手にすんなよ...

654:デフォルトの名無しさん
22/11/07 15:26:54.13 a5k3bCTy0.net
OCRしたい書類なんて有限だから、あらかた終わったら需要が無くなる
そしたらgoogle様が無料開放してくれる筈

655:デフォルトの名無しさん
22/11/07 15:41:01.53 rtBnyCPM0.net
Pythonが「メインの利用言語」で2位にとどまる、1位に立ったのは定番のあの言語
URLリンク(xtech.nikkei.com)

656:デフォルトの名無しさん
22/11/07 15:51:46.76 a5k3bCTy0.net
AIだから教育が必須で、それなりにコストがかかる
こんなもんは公共事業で、どこかが代表してやって、コスト回収できたら無料化する
各国で自分のとこの言語についてやるのが筋だけど、
どうせ日本はやらないのでgoogleがやる

657:デフォルトの名無しさん
22/11/07 16:22:49.11 a5k3bCTy0.net
似たようなので、音声からテキストへの変換も金かかる
あれが無料で出来たら過去の膨大な音声や動画の資料が検索したり分析可能になって、
文化が大きく前進するだろうに金がブレーキかけてる
国の事業としてやれば一人頭の負担なんて微々たるものなのに

658:デフォルトの名無しさん
22/11/07 16:28:42.14 ns7213lX0.net
この夏whisperが公開されたやろ?

659:デフォルトの名無しさん
22/11/07 16:32:21.66 a5k3bCTy0.net
そんなのあったのか
マスク様々やな

660:デフォルトの名無しさん
22/11/07 16:46:46.72 6QND4EcV0.net
>>655
Rubyオワコン

661:デフォルトの名無しさん
22/11/07 21:52:40.91 J6xutGri0.net
>>657
つまり文字起こし言いたいんだろ?
なんかクソ認識悪いAPIだったら何かあった気がする

662:デフォルトの名無しさん
22/11/08 10:16:17.14 gvBOR9qA0.net
半島系帰化人は強姦魔ばかり
死ねよクズ帰化人!

663:デフォルトの名無しさん
22/11/08 11:03:03.92 NJ3yWFAyM.net
何でこのスレで暴れてるんだよ

664:デフォルトの名無しさん
22/11/08 11:17:25.58 Z/fTsurM0.net
壊れちゃったんだろ

665:デフォルトの名無しさん
22/11/08 14:10:32.60 SId0EMb3a.net
ランダムに書き込んでるbotだよ

666:デフォルトの名無しさん
22/11/08 19:27:53.62 h+Zmgne00.net
有料と言ってもgoogleAPIってかなり安いと思うんだけど
手持ちの本数十冊OCRして1,000円いかなかった気がする

667:デフォルトの名無しさん
22/11/09 17:03:12.36 a7tugATP0.net
某有名ゲーム会社で働いてる友人が、「Pythonではあまりクラスを使うべきではない。
それほど高度なプログラムでなければ関数を使えばいい」と言っていたんですが、
そうなんでしょうか?
皆さんの意見を聞かせて頂きたいです

668:デフォルトの名無しさん
22/11/09 17:08:46.66 F89FAkjE0.net
関数でできればいいけど、引数たくさん渡したり、グローバル変数で渡してたり、
みたいな汚いことするくらいならクラスがいい

669:デフォルトの名無しさん
22/11/09 17:30:19.69 PaG6ZUsK0.net
Javaのようになんでもかんでもクラスを作る感じじゃないというのは事実。
でも、dataclassとかnamedtupleとかは使うかな。
とはいえやることによると思う。

670:デフォルトの名無しさん
22/11/09 17:30:52.94 ugvw1ns9a.net
状態を持つオブジェクトを扱うならクラスは必然なのでは

671:デフォルトの名無しさん
22/11/09 18:12:18.95 uDSXzENKM.net
pythonはメンバ変数にself必須なのがダルい
メインプログラムまでクラス化する必要はないと思う
規模が小さければモジュール変数をグローバル変数のように使うのが便利
vscodeならインテリセンス利くし

672:デフォルトの名無しさん
22/11/09 18:40:16.27 cOB3Ubn30.net
>>667
プログラム水準(?)の高低でなく、実行速度の遅速でそう言われるのを聞いたことはある。大昔ね。
事実かは知らぬ。

673:デフォルトの名無しさん
22/11/09 18:59:13.95 2JAkKfpeM.net
>>667
使うべきでない理由をなぜ聞かなかったのか?
それを書けば話は終わる
君の友人ほどスキルのある人はここにはいないからな

674:デフォルトの名無しさん
22/11/09 20:24:05.09 FPtq7UfL0.net
>>667
必要になるまで不要なもので汚すな
シンプルに書けってことかと

675:デフォルトの名無しさん
22/11/09 20:51:46.35 yZGUhxlRM.net
>>671
だなselfを二文字くらいの別名に出来ないのかな?

676:デフォルトの名無しさん
22/11/09 20:56:49.26 F89FAkjE0.net
perlから来たからselfは当たり前だと思ってる

677:デフォルトの名無しさん
22/11/09 21:06:27.04 EoOj57gu0.net
開発者間で同意取れるなら
ただの関数の引数だから好きに変えられはする

678:デフォルトの名無しさん
22/11/09 21:10:50.26 5c+x4O200.net
>>667
理由を示さないお作法は無視していい

679:デフォルトの名無しさん
22/11/09 21:21:40.38 uDSXzENKM.net
グローバル変数用のファイルを作ってas gでインポートってのをqiitaで見たけどかなり便利
g.nameみたいにアクセスする

680:デフォルトの名無しさん
22/11/09 21:30:42.42 F89FAkjE0.net
それは他に影響しないというだけで、グローバル変数の欠点は何も解決しない
作って使ってすぐ捨てるならいいけど、保守が必要なら時間かけてシンプルにしとかないと

681:デフォルトの名無しさん
22/11/09 21:48:48.07 dM0Gb0+w6.net
>>675
すればいいじゃん

682:デフォルトの名無しさん
22/11/09 21:57:03.34 uDSXzENKM.net
グローバル変数はプログラム全体を通した設定値とかに使うもんじゃない?
それこそメインプログラムにとってのselfよ
変に引数取りまくるより可読性高いと思う
規模にもよるんだろうけど

683:デフォルトの名無しさん
22/11/09 22:03:03.05 F89FAkjE0.net
configを読んでグローバルに格納してmain()を呼ぶ
みたいな作りになってるのが多い
うちのスクリプト

684:デフォルトの名無しさん
22/11/09 22:10:05.03 EoOj57gu0.net
設定値の保持ならぜんぜんOK
状態を丸見えで管理できないとこに置くなってことでしょ

685:デフォルトの名無しさん
22/11/09 22:13:24.86 F89FAkjE0.net
関数の中に下請け関数があって、
なんかごちゃごちゃしてきたからリファクタリングだと外に出したらスコープから外れたので、
じゃあみんなグローバル化したれ、みたいにglobal付けて誤魔化す

686:デフォルトの名無しさん
22/11/09 22:23:48.43 dM0Gb0+w6.net
せめてconst できればいいのに

687:デフォルトの名無しさん
22/11/09 23:03:08.26 a3eCQ+jX0.net
>>667
どうせ、いたずらにclassを多用したゴミトランプゲームを
見せたんだろ?いつまでも練習だからって言って、設計もしないで
ゴミコードを見せ続けるから嫌われかけてるんだよ。

688:デフォルトの名無しさん
22/11/10 00:21:13.04 8bOle1Do0.net
クラス化するのは、言語のタイプやプロジェクトの規模ではなくて
データ同士の相関を元に、見通しをよくすることが目的だと思う
あるいは自分用ライブラリとしてカプセル化しておきたいとか
そういう話を置いて、やらない方がいいレベルの問題があるのかw

689:デフォルトの名無しさん
22/11/10 00:21:46.71 a0I25TkAM.net
>>667
理由を示せないお作法は取るべきでない

690:デフォルトの名無しさん
22/11/10 00:24:11.32 KkTOa1Su0.net
>>667
おまいは友人に言われた事を何でも信じるのか?
この洗剤飲めるの。by アム・○○ぃ

691:デフォルトの名無しさん
22/11/10 00:27:36.22 OBeQnBIU0.net
匿名掲示板で聞いて得た答えを信じるというのもどうかと思う

692:687
22/11/10 00:32:26.74 ofaAiG0L0.net
レスしてくれた皆さんありがとうございます
参考にさせて頂きたいと思います
>>669
CUIの簡単なカードゲームではどうでしょうか?
>>673
失礼しました
曰く「クラスを下手に使わない方がコードが無駄に複雑にならなくてよい」
からだそうです
>>674
まさにそんな感じです
>>678
ちょっと彼に悪いかなって…
>>687
ゴミときたもんだ
彼の人柄はそんな感じじゃないよ

693:デフォルトの名無しさん
22/11/10 10:45:10.57 S46ME7RY0.net
ねえ、openpyxlとかでオンライン上のExcelファイルを修正できないの?

694:デフォルトの名無しさん
22/11/10 10:49:29.30 +lvrwnnZ0.net
どこかのクラウド(どこ?)に置いたファイルの意味なのか
Office365で作成したファイルなのか

695:デフォルトの名無しさん
22/11/10 11:02:13.25 ci7p4+PJa.net
どっちにしても手元に持ってこないと厳しいんじゃないかねえ

696:デフォルトの名無しさん
22/11/10 11:46:55.13 rDE3wZvsM.net
関数とクラス両方使えるのがpythonのメリットなのだから、常に適切な方を選べってことじゃないかと。

697:デフォルトの名無しさん
22/11/10 11:47:43.94 rDE3wZvsM.net
>>675
好きな名前をつけていいのよ。meとか

698:デフォルトの名無しさん
22/11/10 13:09:31.60 ci7p4+PJa.net
abcを使わないとできんことはあまりやりたくないねえ

699:デフォルトの名無しさん
22/11/10 13:26:04.03 tUNuHkwK0.net
abcは知ってても

700:デフォルトの名無しさん
22/11/10 13:50:13.84 99QPf7Vaa.net
>>696
> 関数とクラス両方使えるのがpythonのメリットなのだから、常に適切な方を選べってことじゃないかと。
なら初めからそう言えや
まあそう言われたら適切な方の決め方について小一時間は問い詰めたいけどなw

701:デフォルトの名無しさん
22/11/10 15:41:21.49 avJI0YX/0.net
>>693
teamsで出来るぞ

702:デフォルトの名無しさん (アウアウウー Sacd-obsI)
22/11/10 16:33:33.24 99QPf7Vaa.net
>>701
マジで?
やり方教えて

703:デフォルトの名無しさん (ワッチョイ 09f0-Z1Pq)
22/11/10 16:41:09.55 avJI0YX/0.net
>>702
teamsに申し込んでoffice365に申し込めばクラウド上でエクセルが使えます

704:デフォルトの名無しさん
22/11/10 17:38:31.76 aw2UCTg8M.net
>>692
カードゲームならカードクラスは作ったほうがよさそう。
あとはカードゲームのルールによる。

705:デフォルトの名無しさん
22/11/10 18:14:06.31 y5PDmjdo0.net
>>704
687が戒めたいのがまさに724みたいな馬鹿野郎なんだろうな。
目的と手段が入れ替わってclass考えて作るのに必死になる馬鹿。

706:デフォルトの名無しさん
22/11/10 18:34:12.90 RApG3JqD0.net
カードクラス作ってもいいけど、同じカードが存在しない、記号4つと数字1〜13の組み合わせの
ものにクラスがいちいちいるかな。
カードクラスはカード1枚を表して、なにができればいいんだ?
記号クラスがあって、各記号クラスがあって、ナンバークラスがあって、
is_MarkMatchとかis_NumberMatchとかもってんの?
idとprintがあればいいのかな。まあいいけど、そんだけのために
classいちいち用意するのめんどくない?
複数枚のカードを扱うcardsクラスなのかな?機能はいろいろ持てそうだけど
ゲーム固有すぎてどうなのかな?


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

479日前に更新/241 KB
担当:undef