Pythonのお勉強 Part69at TECH
Pythonのお勉強 Part69 - 暇つぶし2ch500:デフォルトの名無しさん
23/01/08 01:19:18.86 nr72jIvE0.net
watchdogなんて便利なのあるのか・・・

501:デフォルトの名無しさん
23/01/08 04:46:18.93 mDwtjJAva.net
5分sleep すると、プロセスを殺せない・生き続けるから、
その分だけ、メモリなどのリソースが使えなくなるので損
cron みたいに、その時だけ起動して、
処理が終わったら、プロセスを終了するのが良い
それかRuby on Rails, npm/yarn などのagile 開発でよく使う、webpack-dev-server みたいに、
フォルダをwatch して、ファイルが変更されたら、rebuild するとか

502:デフォルトの名無しさん
23/01/08 13:39:55.68 LG3PUlqC0.net
>>491
優先順位下げるとしても無限ループにsleepを入れない実装は時代とは無関係かな

503:デフォルトの名無しさん
23/01/08 13:50:26.68 QuJ5Wt8K0.net
>>495
何のために入れる必要あるのか説明してみ

504:デフォルトの名無しさん
23/01/08 14:06:13.97 oudk2sNr.net
インスタンスメソッドをインスタンスメソッドの中で定義したいんだけどみんなどうやってるの
AIに聞いたらこんな感じだったけど
class Hoge:
 def __init__(self):
  self.new_method=None
 def hoge1(self):
  def _method():
   print("hoge method1")
  setattr(self,"new_method",_method)
 def hoge2(self):
  def _method():
   print("hoge method2")
  setattr(self,"new_method",_method)
h=Hoge()
h.hoge1()
h.new_method()
h.hoge2()
h.new_method()

505:デフォルトの名無しさん
23/01/08 14:13:05.44 ZWf/GgJ8d.net
VBで言うループ内のDoEvents()だよ
OSのメッセージへの応答が止まり続けると応答なしになる
だからメッセージに応答させるためにsleepを入れる
CPUの優先度を上げ下げしようがメッセージへの応答は各アプリケーションに依存する
だからループの時間が長くなればどのみちメッセージの処理ができず応答なしになる

506:デフォルトの名無しさん
23/01/08 14:16:48.76 LG3PUlqC0.net
>>496
何が言いたいのか知らんけど、CPU張り付きによるキーボード等の割り込みが阻害されるためだろう
古いとか言われて短い無限ループにsleep入れないプログラマいたら驚くかな
一人でプログラミングしてるならまだしも、第三者が使う可能性がある状況でその実装は恐い

507:デフォルトの名無しさん (ワッチョイ 9301-Kria)
23/01/08 14:35:43.73 QuJ5Wt8K0.net
>>498
メッセージループの話はまた別の話

>>499
プリエンプティブマルチタスク でググってこいよ...
未だにこんなロートルがいることに驚くわ

508:デフォルトの名無しさん (ワッチョイ 2bce-jGTX)
23/01/08 14:48:33.70 zCdq2/Tv0.net
1C/1TなCPUの時代に生きているのだろう

509:デフォルトの名無しさん
23/01/08 15:25:04.09 Aip5FLUqd.net
>>500
優先度変更でメッセージループをどうにかできるの?

510:デフォルトの名無しさん
23/01/08 15:41:35.19 QuJ5Wt8K0.net
>>502
メッセージループをどうにかできるなんて書いてないんだけど、頭大丈夫?

511:デフォルトの名無しさん
23/01/08 15:43:30.25 jwImvjcq0.net
>>501-502
見当外れだしsleepのひとも含め連休は大量ですね

512:デフォルトの名無しさん
23/01/08 15:47:25.43 NFnoEEjj0.net
実際問題として、処理奪われて操作に支障が出るソフトは普通にある
win10ではそういう問題はOSでは解決できない

513:デフォルトの名無しさん
23/01/08 15:47:46.10 1vx7bEHHM.net
どれだけググってもビジュアルスタジオにtweepyインストールできなくて
だれかおしえろください
ターミナルでpip打ち込むと認識されないとエラーで弾かれる

514:デフォルトの名無しさん
23/01/08 15:54:10.06 kQpMGlzxd.net
>>503
なら優先度だけあげても他の対策がいることになるだろ?
解決しないじゃん

515:デフォルトの名無しさん
23/01/08 15:56:00.30 hARfQwsA0.net
今時の他コア高性能CPUであれば100%張り付きで懸念するべきのはバッテリー残量と発熱くらいで、
一瞬でも100%未満になるコアが1つあればOSのタスクスイッチングには影響はほとんどないよ
GetMessage,PeekMessage,DispatchMessageをブロックしないことだけ気をつければ、あとは思う存分CPUをぶん回してもいいよ
100.00%まできっちり回せ

516:デフォルトの名無しさん
23/01/08 15:57:22.58 PbsTDkd50.net
>>506
pip3

517:デフォルトの名無しさん
23/01/08 15:59:45.54 QuJ5Wt8K0.net
>>505
それはそのソフトのつくりがタコなだけ
>>507
VBのDoEventの話なんてしてないから他所でやってくれ

518:デフォルトの名無しさん
23/01/08 16:01:44.72 kQpMGlzxd.net
>>503
>>491
優先度でメッセージループをどうにもできない以上、他のアプリに出る影響は排除できないじゃん
影響出したくないからループ中にsleepって話の中で優先度変えろって話出したの誰だよw

519:デフォルトの名無しさん
23/01/08 16:05:00.60 piRgm1WA0.net
つまり多コアCPUであっても、各プロセスは一つだけしか使ってはいけない

520:デフォルトの名無しさん
23/01/08 16:05:59.38 kQpMGlzxd.net
>>510
タコなソフトにならない解決策の話なのに優先度なんて頓珍漢なこと言い続けてる自覚ねーのな
DoEvents()も書けない、コピペすらできないみたいだし、
何のためのsleepか説明されても理解できそうにないな

521:デフォルトの名無しさん
23/01/08 16:10:11.55 96z64ttd0.net
ここをこうしたら、こういう時にこうなるよ
って話をしないと、伝わらないと思います

522:デフォルトの名無しさん
23/01/08 16:11:53.62 piRgm1WA0.net
伝えるというよりからかっているのだろう

523:デフォルトの名無しさん
23/01/08 16:14:15.67 NFnoEEjj0.net
ID:QuJ5Wt8K0 で抽出すると、ほんの一言二言書いて反応をうかがってるだけなんだよな
多分何も判ってなくて、総叩き状態を楽しんでる

524:デフォルトの名無しさん
23/01/08 16:49:42.13 +2bxRzY60.net
>>497
インスタンスメソッドの中でインスタンスメソッドを定義したとして、使う側はどうしたいんだよ
h.hoge() を読んだら h.new_method() を使えるようになる仕様でいいのか?

525:デフォルトの名無しさん
23/01/08 17:48:05.51 Ghk4Hd5x0.net
DoEvents、自アプリのメッセージを1つ実行する
sleep、CPUリソースを一時的に返却する(自アプリのメッセージは処理できない)
sleepしたところで自アプリのメッセージを処理しないと自アプリは固まってしまう

526:デフォルトの名無しさん
23/01/08 18:07:15.82 QuJ5Wt8K0.net
>>511
メッセージループを処理するスレッド(たいていメインスレッド)と >>480 が言うような重い処理のスレッド(ワーカースレッド)を分ければいいだけ
ってかまともなGUIアプリなら半ば常識だぞ
当たり前だけどワーカースレッドにsleepなんて要らん
>>513
> 何のためのsleepか説明されても理解できそうにないな
そう言うのは説明してから言わないとね
>>516
> 多分何も判ってなくて、総叩き状態を楽しんでる
分かってないのはお前な
ちゃんと プリエンプティブマルチタスク でググれって書いてあるだろ?
ググっても理解出来なかったのか?w

527:デフォルトの名無しさん
23/01/08 18:11:48.35 QuJ5Wt8K0.net
>>518
DoEventsなんて言ってる奴はVBAあたりしか使えないんだと思う
DoEventsとsleepの違いすら理解できてないんだろうな

528:デフォルトの名無しさん
23/01/08 18:13:12.88 piRgm1WA0.net
ググれと言わずに、ここで簡潔に説明することが求められています
そんなに難しいことじゃないでしょうに

529:デフォルトの名無しさん
23/01/08 18:22:37.54 2bjH6Dg5d.net
>>519
優先度の話はどこがどう関係してくるの?

530:デフォルトの名無しさん
23/01/08 19:23:01.26 QuJ5Wt8K0.net
>>521
難しくないならあんたが説明してもいいんだよ?w
>>522
話の流れも読めないのか?
>>491 > 他のアプリに影響したくないなら優先度下げろよ...

531:デフォルトの名無しさん
23/01/08 19:28:01.59 piRgm1WA0.net
オレは説明を聞きたいと思っている

532:デフォルトの名無しさん
23/01/08 19:30:28.58 NFnoEEjj0.net
ソフトのつくりがタコとか書いちゃった時点でもう詰んでるんだよ
どう言い繕っても無駄なので諦めてID変わるのを待ってろ

533:デフォルトの名無しさん
23/01/08 19:53:03.23 QuJ5Wt8K0.net
>>524
だから プリエンプティブマルチタスク でググればいいだろ
まああんたはわかってるだろうけど簡単に言えばタスクの切り替えはタイマーでやってるからsleepなんか入れなくてもタスクは切り替わる
> ループの中に微小なsleepを入れておくと、そのタイミングでOSがタスク切り替えできるので、
なんて言うのはWindows 3.1とかMac OS 9時代のノウハウや
>>525
タコ乙w

534:デフォルトの名無しさん
23/01/08 20:28:28.98 NFnoEEjj0.net
現にwin10でも上手く行っとらんだろ
事実から目を反らすなよw

535:デフォルトの名無しさん
23/01/08 21:06:12.49 oudk2sNr.net
>>517
例えば犬の基本情報を取得したい時に
Symbols={"INU":{"symbol":"犬","voice":"ワン"}}
print(Symbols["INU"])
じゃなくて
print(Symbols.INU)
みたいな参照の仕方がしたかった
かつ返ってくるのはインスタンス、みたいな
クラスをインスタンス化するときってSymbols()でカッコついちゃうのでそれ無くしたいというか・・
なので単純に
URLリンク(ideone.com)
てやってみたけどinu_action,neko_actionのとこが見た目がしっくりこなくて
あれから調べてみたらやりたいのは内部クラスだったかもしれないのでそれで書いてみたら
URLリンク(ideone.com)
こうなって、しっくりきたものの使い方合ってるのかがわからない

536:デフォルトの名無しさん (ワッチョイ 9379-G8G4)
23/01/08 21:15:22.42 Ghk4Hd5x0.net
>>526
Windows3.1はシングルタスクだよね
sleepしても他アプリに処理が移らなそう
処理時間が無駄に長引くだけ

昔過ぎて分からない
間違ってるかも

537:デフォルトの名無しさん (ワッチョイ 9301-Kria)
23/01/08 21:23:02.60 QuJ5Wt8K0.net
>>527
具体的に上手くいってないと言うソフト名出してみ

538:デフォルトの名無しさん
23/01/08 21:27:28.97 QuJ5Wt8K0.net
>>529
Windows 3.1 は協調型マルチタスク(=ノンプリエンティティブマルチタスク)
てかマジでググれ
URLリンク(www.sophia-it.com)

539:デフォルトの名無しさん
23/01/08 21:46:05.89 Ghk4Hd5x0.net
>>531
あ、いやすまん
もっと基本的なところで勘違いしてた
Windows3.1ってメインのウィンドウ以外動かないかと思ってた

540:デフォルトの名無しさん
23/01/08 22:05:28.27 piRgm1WA0.net
3.1のデモ展示では時計アプリを複数起動して
「ほら、マルチタスクですよ~」ってやってた

541:デフォルトの名無しさん
23/01/08 22:20:53.05 Ghk4Hd5x0.net
>>533
なるほどサンクス!
完全に勘違いしてた

542:デフォルトの名無しさん
23/01/09 09:18:26.66 hshZ5aP/d.net
>>528
直接attrにアクセスするような書き方するなら__getattribute__を改造するのが手っ取り早そう
URLリンク(wandbox.org)
直接dictを継承したSymbolsクラス作った方が楽そうと
後になって気づいたが

543:デフォルトの名無しさん
23/01/09 11:26:49.00 UbXmK8tM0.net
プリエンプティブに対応するパッチを書いたことあるがロートルとか言われたのがショックだわ
モバイル全盛のこの時代にCPU100%の張り付きプログラムを推奨することの視野の狭さに驚く
何度も言うがsleepを入れるのは時代とか関係なくそれはアーキテクチャと利用ケースによるものだ
組み込み分野では無限ループでトリガ待ちするのに無限ループで止めるのなんて20年以上前からやってる

544:デフォルトの名無しさん
23/01/09 12:18:22.83 Cob0L2LA0.net
>>536
逆にuComとかPICだとメインはfor(;;)で最低優先度の処理をsleepなしでゆるゆる回して、
ほとんどの処理を割り込みで動かすからsleepの出番はなくなっちゃうよね

545:デフォルトの名無しさん
23/01/09 12:18:48.74 Cob0L2LA0.net
sage忘れすまん

546:デフォルトの名無しさん
23/01/09 12:30:53.45 r84aUeSC0.net
動かす環境やOSによっても色々やり方は変わると思います

547:デフォルトの名無しさん
23/01/09 12:35:24.04 WbC15m7a0.net
プリエンプティブマルチタスクという言葉が存在する
というところを出発点にしてるから、万能だと思っちゃってるんだろうな
アプリ同士でならうまく行くんだろうけど、
プリエンプティブの仕組みを作ってるOSそのものとは競合する
OSもアプリも一つのコアの上で動くプログラムでしかない

548:デフォルトの名無しさん
23/01/09 12:38:36.89 fJBcDyWo0.net
最初のそんな負荷でもない一定周期監視の話から固まる→CPU負荷とかUIブロックの話とかになってるから
UIブロッキングを差し置いてsleepだけ話題にされるともにょるのはわからんでもない

549:デフォルトの名無しさん
23/01/09 12:47:08.01 P8ctm/0T0.net
>>541
優先度下げれば解決するって誰かが言ってた

550:デフォルトの名無しさん
23/01/09 12:51:26.43 r84aUeSC0.net
各プロセスが協調的に動いているなら、優先度は意味があるかも知れないですね

551:デフォルトの名無しさん
23/01/09 12:54:20.02 fJBcDyWo0.net
>>542
流れ見ると負荷の話に対する優先度だからUIスレッドが差し置かれているので結局もにょる

552:デフォルトの名無しさん
23/01/09 12:59:35.44 r84aUeSC0.net
処理するにあたり、CPU性能は十分にあるんですよね?

553:デフォルトの名無しさん
23/01/09 13:13:54.26 hV+nJOyS.net
>>535
なるほど
これならもし犬にマルチーズとかダックスフンドを追加したくなったとき
犬や猫鶏をinu.py,neko.py,tori.pyとかにそれぞれ分離しても管理しやすそう
ありがとう

554:デフォルトの名無しさん
23/01/09 13:30:24.28 bS50m3IM0.net
組み込み向けとかのOSだといまだにそういうアーキテクチャなんじゃないの?
確かタイマー割り込みしたりとかいろいろ面倒だった気がするし
現代的なOSでloopにsleep入れるとか無意味

555:デフォルトの名無しさん
23/01/09 13:43:58.36 hV+nJOyS.net
せっかくなのでGPT3に聞いてdictを継承して属性参照できるクラスを書いてみた
URLリンク(ideone.com)
聞いたのは、
「pythonでdictを継承したクラスの例を書いて」のみなんだが、
わざわざ聞くからには属性参照もしたいってことだろ?
と言わんばかりにその部分も補完したコード出してきてちょっとびびった・・

556:デフォルトの名無しさん
23/01/09 15:27:13.21 r84aUeSC0.net
Linuxを含めてUnix系OSならselect関数が使える
ソケット含めてI/Oを監視しプロセスに通知してくれる
Pythonでも、もちろん使える

557:デフォルトの名無しさん
23/01/09 17:16:47.85 9i8F7U9Np.net
AIって結局翻訳機みたいなもんで翻訳機に最適化した文章作らないとミスるから仕事で使えないよな

558:デフォルトの名無しさん
23/01/09 17:35:48.91 m0H/MGw3r.net
>>550
プログラミングよりそのスキル身につける方が早い時代は来るかも

559:デフォルトの名無しさん
23/01/09 18:01:59.77 +jLIXnEf0.net
URLリンク(noauto-nolife.com)
のcontent.html内{% url 'bbs:single' topic.id %}
って何を指してるかわかりますか?
views.pyかurls.pyのurlpatternsの記載のどこかが原因だとは思うんですけど。

560:デフォルトの名無しさん
23/01/09 18:03:12.22 +jLIXnEf0.net
>>552です
NoReverseMatchエラーになります。
singleなんてどこにも記載してないのでそれはそうなんでしょうが

561:デフォルトの名無しさん
23/01/09 18:29:36.59 .net
>>552
URLリンク(i.imgur.com)

562:デフォルトの名無しさん (ワッチョイ b954-Or7w)
23/01/09 18:38:19.71 WbC15m7a0.net
便利すぎて怖い

563:デフォルトの名無しさん (ワッチョイ 9933-X8vt)
23/01/09 19:33:02.64 bS50m3IM0.net
その意味を理解できないと無意味だよ?

564:デフォルトの名無しさん
23/01/09 20:38:05.70 YumOwVoa0.net
>>536
> 何度も言うがsleepを入れるのは時代とか関係なくそれはアーキテクチャと利用ケースによるものだ
だからなんのためにsleep入れてるんだよ
今でもWin3.1とか組込でノンプリエンティティブOS使ってるから時代に関係ないとでも言うのか?
> 組み込み分野では無限ループでトリガ待ちするのに無限ループで止めるのなんて20年以上前からやってる
話しそらそうと必死すぎw

565:デフォルトの名無しさん
23/01/09 20:39:49.86 YumOwVoa0.net
>>541
だからUIと重い処理はスレッド分けろって書いてあるだろ
プアな環境でCPUがアップアップならワーカースレッドの優先度下げろ

566:デフォルトの名無しさん
23/01/09 20:41:46.54 YumOwVoa0.net
>>540
カーネルスレッドの仕組みも知らないなら黙ってた方がいいぞ...

567:デフォルトの名無しさん
23/01/09 21:19:53.52 VzKaZmuqd.net
スレッドを分けろ、を起点にせずに優先度の話から入った理由が気になる

568:デフォルトの名無しさん
23/01/09 21:38:55.07 rm/gRoLA0.net
>>560
優先度の話はこれが最初か>>491
何もおかしくない気がするが
スレッド分けたところで優先度が高かったら、他のアプリがカクカクになるぞ

569:デフォルトの名無しさん
23/01/09 21:39:13.38 fJBcDyWo0.net
確かにUIスレッドとワーカーを分ければUIが固まることは無い
実際のところ同一優先度でもタイムスライスしてくれるのでUIはなんとか動くし、優先度下げればさらによく動く
ただ結局複数プロセスで動くOSである以上処理負荷をどこまでかけるかっていうのはそのプロセスのマナーになる
他プロセスがより低い優先度のワーカー動かしてるとそっちがあからさまに動かなくなるのでsleep入れるのは間違ってはいない
通常よりちょっと下げるだけであればUIは普通に動くが他プロセスの通信や動画がガクガクになったりする

570:デフォルトの名無しさん
23/01/09 21:52:50.87 YumOwVoa0.net
>>560
おれの最初のレスは >>480 に対するレスだから

571:デフォルトの名無しさん
23/01/09 21:59:14.36 YumOwVoa0.net
>>562
> 他プロセスがより低い優先度のワーカー動かしてるとそっちがあからさまに動かなくなるのでsleep入れるのは間違ってはいない
その低い優先度のワーカースレッドがないと単に無駄なsleepしてるだけのタコソフトになるわけだがw
普通により低い優先度にしなよ...
> 通常よりちょっと下げるだけであればUIは普通に動くが他プロセスの通信や動画がガクガクになったりする
なんで通信や動画再生の優先度を下げるんだよ...

572:デフォルトの名無しさん
23/01/09 21:59:59.63 Qq7b1M5F0.net
RTOSのように優先度が絶対的なら話は単純だけど
デスクトップOSは忖度があるからsleepいれるとか場当たり的な作法を
正解と勘違いするのもわからんでもないかな(ないけど)

573:デフォルトの名無しさん
23/01/09 22:02:02.62 fJBcDyWo0.net
>>564
優先度を決めてぶん回すって言うのは他の優先度低いやつを気にしないって宣言でもある
> なんで通信や動画再生の優先度を下げるんだよ...
おっとごめん。下げるっていうのは自プロセスのワーカの話ね。影響を受けるほうはchromeブラウザの動画再生とかって話。

574:デフォルトの名無しさん
23/01/09 22:21:26.63 YumOwVoa0.net
>>566
> 優先度を決めてぶん回すって言うのは他の優先度低いやつを気にしないって宣言でもある
下げてる優先度よりさらに低い優先度のタスクを気にする必要あるの?
そう言うのはCPUが空いてるなら動けばいいっていうタスクじゃないの?
あと大抵のデスクトップOSだと同一優先度ならラウンドロビンになるから全く動かなくなるとかないし
> おっとごめん。下げるっていうのは自プロセスのワーカの話ね。影響を受けるほうはchromeブラウザの動画再生とかって話。
ワーカー下げてるのに動画再生がカクカクするならCPU以外のリソースの影響でしょ
それってsleep入れても改善しなくね?

575:デフォルトの名無しさん (ワッチョイ 613c-wVfF)
23/01/09 22:44:46.53 UbXmK8tM0.net
元の話に戻すと、たかだかファイル更新をウォッチするのにCPUが100%に張り付くプログラムが正解だって言われて納得できる人は少ないだろう
OSの深いところまで知らなくても利用できるようにwatchdogなどのパッケージが使うのが正解なんだと思うよ

576:デフォルトの名無しさん
23/01/09 23:09:50.64 YumOwVoa0.net
元の話は
> 特定のフォルダを5分おきに監視して、新たに作成されたファイル名を
SQLiteテーブルに登録していく…的なことをやりたい
なのでsleepで5分待って処理するなり(まあ処理時間分ずれるから5分毎に処理したいならそれなりの処置が要るけど)ファイル監視APIなりwatchdogみたいなライブラリ使うなりすればいいだけの話でCPU100%なんて話は出てない
CPU 100%の話は
> 単純にメモリ内で巨大な配列の計算をしたいとかで、
> 人間が判るほど時間のかかる処理をする時に、
> ループの中に微小なsleepを入れておくと、そのタイミングでOSがタスク切り替えできるので、
> 他のアプリに影響せずに処理できる
とか昔のノウハウでドヤった老害がいただけの話

577:デフォルトの名無しさん
23/01/09 23:45:15.82 r84aUeSC0.net
新たに作られたファイルを記録するだけなら、数十分間隔でチェックしても間に合いそう

578:デフォルトの名無しさん
23/01/09 23:48:51.92 bS50m3IM0.net
話が逸れまくったなw
本当おじさんは関係ない話で荒らすのが好きだな

579:デフォルトの名無しさん
23/01/10 00:12:28.63 YUW/czN/0.net
Python の話でもないし
プログラム板の皆さんに裁定してもらえ

580:デフォルトの名無しさん
23/01/10 00:32:37.03 pwe9NrJo0.net
ここの話題にしたいなら、せめてPythonのコードに落とすところ迄やって欲しい

581:デフォルトの名無しさん
23/01/10 00:56:07.09 7fmBGHmvM.net
pythonでスレッドの優先度を指定できる?

582:デフォルトの名無しさん
23/01/10 00:57:08.39 7fmBGHmvM.net
threadingモジュールにはthere are no prioritiesって書かれてるんだが

583:デフォルトの名無しさん
23/01/10 01:18:40.47 BEmjqJ7z0.net
>>574
psutilでいける
Windowsでも出来た

584:デフォルトの名無しさん
23/01/10 01:30:42.71 tyEc5PEMa.net
DoEvent しないと何も動かない。
基本的に、プログレスバーで処理の進捗状況も表示できない。
処理にCPU を使われるから、描画できない
スクレイピングでも、10秒ぐらいsleep しないと、ajax のページの内容が取れない。
他のプロセスに、CPUを与えないと通信できない

585:デフォルトの名無しさん
23/01/10 02:52:37.03 BEmjqJ7z0.net
あぁ、プロセスじゃなくてスレッドか
公式のウェブサイトにはないと優先度はないと書かれているら自前で実装かね

586:デフォルトの名無しさん
23/01/10 04:26:53.04 bCHQzZKpM.net
>>485
> 30代Pythonクソチョン男は強姦魔の犯罪者!
> あなたの近くにいます!
> 父母と祖父母の戸籍謄本を提出させましょう!
ホントそれ

587:デフォルトの名無しさん
23/01/10 06:53:53.27 1UMzF0dp0.net
>>574
やったことはないけど例えばWindowsな�


588:輜ative_idでスレッドid取得してctypes経由でSetThreadPriority呼ぶとかかなぁ



589:デフォルトの名無しさん
23/01/10 07:22:16.21 +/q9pWWH0.net
pythonでJRAスクレーピングしてるが、激アクセス(数万ページ連続とか)すると怒られるかな

590:デフォルトの名無しさん
23/01/10 08:45:04.89 govR9vZh0.net
URLリンク(www.jra.go.jp)
User-agent: *
Disallow:

591:デフォルトの名無しさん
23/01/10 09:59:25.25 BF2exWNa0.net
有償でデータ売ってるからそれ買えよ

592:デフォルトの名無しさん
23/01/10 10:08:23.70 wQS7zJvf0.net
たぶん刻々と変わるオッズとかを取得してるんじゃないか?

593:デフォルトの名無しさん
23/01/10 10:35:47.62 KidLhlDB0.net
今住んでるとこ岡崎なんだよなー
だからスクレイピングすると予告なしに逮捕される

594:デフォルトの名無しさん
23/01/10 10:46:19.04 BF2exWNa0.net
静的なページなら一旦ファイルにダウンロードしてから
そのファイルをスクレイピングすれば問題なし

595:デフォルトの名無しさん
23/01/10 13:37:01.45 vQglWnVB0.net
これまで自作プログラムの設定情報は、iniファイルに出力していたのですが、
これからはレジストリで管理したいと思っています。
iniファイルだと増えすぎてしまうので、、、
新たなキーをどこかに作り管理たいのですが、レジストリのどこに作れば良いとかルールがあれば教えて下さい。

596:デフォルトの名無しさん
23/01/10 14:10:11.28 DW4759/80.net
>>587
このスレじゃ無理
こっちのスレ↓で質問してみよう。親切な達人プログラマーが懇切丁寧に教えてくれるよ
Ruby 初心者スレッド Part 67
スレリンク(tech板)

597:デフォルトの名無しさん
23/01/10 16:14:20.05 wABcpDEfd.net
watchdogを使いたいだけなのに、環境構築が出来ない。

598:デフォルトの名無しさん
23/01/10 20:19:07.57 BEmjqJ7z0.net
winregモジュールの使い方ならまだしもレジストリの使い方は流石にここではないぞ

599:デフォルトの名無しさん
23/01/10 21:08:28.15 mG8UnKKfM.net
レジストリよりiniのほうが遥かにいいんじゃね?と思うのは俺だけだろうか

600:デフォルトの名無しさん
23/01/10 22:01:11.76 KidLhlDB0.net
iniに対するレジストリのメリットは、複数ユーザで使っても混ざらない点だな

601:デフォルトの名無しさん
23/01/10 22:03:17.69 pwe9NrJo0.net
それはiniをどこに置くかで決められます

602:デフォルトの名無しさん
23/01/10 22:05:07.71 AhhHg4Rw0.net
その辺の話題はスレチだな

603:デフォルトの名無しさん
23/01/10 22:13:42.57 iHwuxQHZ0.net
boost経由で呼べば良いじゃん

604:デフォルトの名無しさん
23/01/11 10:15:37.51 WNWSBuGvd.net
URLリンク(101010.fun)
ここの、pipを使ってWatchdogライブラリをインストールします。
これがわからない。

605:デフォルトの名無しさん
23/01/11 10:21:09.30 sSLpCElv0.net
(゚Д゚)ェェエエ工工工

606:デフォルトの名無しさん (スップ Sdb3-1Rsz)
23/01/11 12:09:27.84 gbRv1Z7ld.net
shellがわかってないやつかな?

linux環境ならCtrl-Alt-Tで出てくる黒い画面でpip3 install <モジュール名> とすればいい

VisualStudio環境は知らん

607:デフォルトの名無しさん
23/01/11 12:36:58.75 pHEYs8Fp0.net
>linux環境ならCtrl-Alt-Tで出てくる黒い画面で
こういう説明なんでできちゃうんだろうか

608:デフォルトの名無しさん
23/01/11 13:03:08.65 iHuPH8qf0.net
バカだから
今は pip install hoge じゃなくて python -m pip hoge のほうがいいんじゃなかったっけ

609:デフォルトの名無しさん
23/01/11 13:04:05.15 gC4z+P/fa.net
釣られるなよ
いつものやつだ

610:デフォルトの名無しさん
23/01/11 14:53:19.92 PaKS96+/0.net
>>600
pip install hoge と
python -m pip hoge は同じじゃないのか。

611:デフォルトの名無しさん
23/01/11 15:35:31.95 /f97NRPi0.net
pipってなんかよく判らん
windowsやandroidでも、そんな簡単に付けたり外したりできないのは経験済みなので、
依存関係とか複雑なのだろう

612:デフォルトの名無しさん
23/01/11 15:51:02.84 iHuPH8qf0.net
やっぱり python -m pip hoge のほうが推奨みたいだね
参考URL貼ろうとしたらエラーになったから "pip install" vs "python -m pip" でぐぐってくれ

613:デフォルトの名無しさん
23/01/11 17:48:54.93 PaKS96+/0.net
>>604
ググった。これ?
daeudaeu.com/python-pip-difference
うちがまさにこうで、
/usr/bin/pythonは2.xで
/usr/bin/pipは3.xだ。
が、ライブラリの導入先は予め承知していないと、そりゃ色んな意味で拙いだろ...

614:デフォルトの名無しさん (テテンテンテン MM4b-p8yh)
23/01/11 18:31:10.79 hDaja8juM.net
うっといわ

615:デフォルトの名無しさん (ワッチョイ 2b63-WzqH)
23/01/11 19:00:49.39 A5R9Myj10.net
pip3をつかえば混乱は起きないと思われる

616:デフォルトの名無しさん
23/01/11 19:07:57.81 QeEETBRE0.net
環境変数までフルマネージドになるっていうのがコツな

617:デフォルトの名無しさん
23/01/11 19:14:51.41 koilfHaW0.net
venvがおすすめです

618:デフォルトの名無しさん
23/01/11 20:24:47.06 iHuPH8qf0.net
>>605
まとめの部分だけ読んだけど大体あってそう
Python 関連の調べものする時は日本語サイトは除外したほうがいい気はする (変なサイト多くない?)
venv を使う時も ./.venv/bin/python -m pip hoge で直接インストールすることができるっぽい

619:デフォルトの名無しさん
23/01/11 20:32:03.41 koilfHaW0.net
Pythonは入ってるけどpipが入ってない環境で、自分でビルドして入れるとそうなるのかな

620:デフォルトの名無しさん
23/01/11 20:38:00.37 koilfHaW0.net
venv有効にしたらvenv内のpythonとpip使われるから、普通にpip installすればいい

621:デフォルトの名無しさん
23/01/11 21:22:19.92 FiONWEgu0.net
>>610
英語も似たようなもんやで

622:デフォルトの名無しさん
23/01/12 00:24:14.84 AWG/ChaM0.net
pipコマンドを今実行しているpythonコマンドとは別に入れた場合(pipはディストロのパッケージで入れたけどpythonはpyenv経由みたいな)は、
pythonコマンドとpipコマンドの整合性がとれていない場合があるからpython -m pipの方が安心
Dockerとか使ってるならそういう心配はしないでRUN pipで大丈夫

623:デフォルトの名無しさん
23/01/12 01:05:00.06 lC/nTIdv0.net
pythonもあれなんで py に
py -m pip hoge にしてる

624:デフォルトの名無しさん
23/01/12 01:45:21.55 eOyGEuW0a.net
Ruby on Rails では、rbenv が多いが、
日本人が作った、多言語バージョンマネージャーのanyenv が良い。
asdf もある
対応言語を表示
anyenv install --list
Renv, crenv, denv, erlenv, exenv
goenv, hsenv, jenv, jlenv, luaenv
nodenv, phpenv, plenv, pyenv, rbenv
sbtenv, scalaenv, swiftenv, tfenv
Rubyはrbenv, node はNVM, Python はvenv などと、
各言語で、バージョンマネージャーが異なるのは面倒
最近は、Docker も多い。
就職では、Docker, AWS も必須

625:デフォルトの名無しさん
23/01/12 12:42:21.95 OnGb0X+0M.net
>>485
> 30代Pythonクソチョン男は強姦魔の犯罪者!
> あなたの近くにいます!
> 父母と祖父母の戸籍謄本を提出させましょう!
ホントそれw

626:デフォルトの名無しさん
23/01/12 18:50:17.66 WuBM7bGP0.net
azureのが給与高いよ
資格保有者も圧倒的に少ない

627:デフォルトの名無しさん
23/01/12 18:50:38.99 WuBM7bGP0.net
ちなみにソースはない

628:デフォルトの名無しさん
23/01/12 18:51:02.29 WuBM7bGP0.net
完全に勘

629:デフォルトの名無しさん (アウアウエー Sa23-n3t1)
23/01/12 20:21:00.92 VvkZ8RFRa.net
IDEって何がはやってるんだろう
VScode?spider?

630:デフォルトの名無しさん
23/01/12 23:18:40.94 Q9b1EyVr0.net
win10で使ってて、win10としては有効なパスなのに、
pythonから操作しようとすると長すぎてエラーになることがある
もしかすると、pythonではなくsubprocessで呼んでるコマンドかもしれないけど
何かの設定で長さなんか気にしなくできないのかな

631:デフォルトの名無しさん
23/01/12 23:26:49.81 Kr8Ay9bV0.net
そのパスとやらを提示しなさい

632:デフォルトの名無しさん
23/01/12 23:54:02.53 HKg0jfBE0.net
パスの最大長の制限
learn.microsoft.com/ja-jp/windows/win32/fileio/maximum-file-path-limitation?tabs=registry

633:デフォルトの名無しさん
23/01/13 00:09:02.63 jY/X4hP5a.net
検索上位に出てくるnkmkというサイトが本当に邪魔
意図的にページ内リンクを貼らずに閲覧者にスクロールさせたり、文字列検索させようとさせたりするから使いにくくて仕方がない

634:デフォルトの名無しさん
23/01/13 00:10:24.95 3/krHQqA0.net
LongPathsEnabledは既に1になっていて、
それで長いパスが有効だけど、longPathAwareがよく判らない

635:デフォルトの名無しさん
23/01/13 00:57:47.08 C2HsRRRbd.net
パスを指定するときに\\?\プレフィックスを付ける必要がある

636:デフォルトの名無しさん
23/01/13 05:49:38.62 pezk+gKQa.net
何でPython の香具師は、いつもパスに、\\ を使うのだろう?
Ruby では、Windows のパスでも、/ で書けるのに。
File.expand_path( ) でも、\を/に変換できるし
dir_path = "C:/Users/Owner/Documents/**/*"
target_dirs = Dir.glob( dir_path )

637:デフォルトの名無しさん
23/01/13 09:50:43.36 NX/X2xhta.net
>>627 はプレフィクスの話をしているのに
>>628 が知ったか過ぎて糞ワロス

638:デフォルトの名無しさん
23/01/13 10:20:19.66 zJXsWH5P0.net
病人に触るな
うつるぞ

639:デフォルトの名無しさん
23/01/13 10:20:37.84 17HPXjEx0.net
> たとえば、"\\?\D:\非常に長いパス" などです。
狂ってるとしか思えない文法

640:デフォルトの名無しさん
23/01/13 12:42:41.48 GxyunKrd0.net
>>628
もう少し勉強した方がいいぞ
raw文字列を使えばエスケープシーケンスを使う必要はない
更にいうとpythonでもスラッシュを区切り文字に使える
あと\\?\プレフィックスはWindowsのルールであってpython起因ではない
こんな短い文章で3つも間違っているのは凄いな

641:デフォルトの名無しさん
23/01/13 12:59:28.88 LZaujiQfa.net
>>632
> 更にいうとpythonでもスラッシュを区切り文字に使える
これはNTFSの仕様じゃなかったっけ?
まあどっちにせよWindowsのルールなんだけどね

642:デフォルトの名無しさん
23/01/13 13:47:27.39 lpVvtWLG0.net
windowsで生python使ってる時点でアレ
普通は仮想環境なりdockerカマして動かすよ

643:デフォルトの名無しさん
23/01/13 14:37:36.44 foyyIITL0.net
Pythonは昔からWindows対応してて
Unixな用途以外でも使われてるのに普通ってどういう

644:デフォルトの名無しさん
23/01/13 14:50:20.29 17HPXjEx0.net
長いパスのファイルを操作したい時に、仮想環境からやっても結局困るのでは

645:デフォルトの名無しさん
23/01/13 14:57:07.55 zir26acq0.net
>>634
痛々しい

646:デフォルトの名無しさん
23/01/13 15:08:30.08 lpVvtWLG0.net
windowsで使うならcondaみたいな環境依存丸ごと面倒見てくれるやつじゃないとすぐぶっ壊れるからな

647:デフォルトの名無しさん
23/01/13 15:21:16.75 Kg8S+FugM.net
ワザワザcondaなんか使うヤツ居るのか?

648:デフォルトの名無しさん
23/01/13 15:25:45.76 C2HsRRRbd.net
仮想環境からでも実環境でもロングファイルパスは使える
論点ずらしたいだけだから構う必要ない

649:デフォルトの名無しさん
23/01/13 15:35:51.40 zir26acq0.net
で、普通ってどういう意味よ?
仮想環境からwinのクリップボード操作やレジストリ操作が出来んのか?

650:デフォルトの名無しさん
23/01/13 15:54:30.06 zJXsWH5P0.net
ここは勉強スレであって議論スレではありません

651:デフォルトの名無しさん
23/01/13 21:19:57.15 IL7+IvE40.net
環境壊れたことないわ・・・

652:デフォルトの名無しさん
23/01/13 21:22:00.33 4z9M3olLM.net
勉強用にはWSL2の方がいいかもしれないけど、実際実用的なプログラムを作ろうとしたらpywin32とか必要なこともあるからねえ
conda使わないと環境が壊れるなんてことはないよ。普通にpoetryとか使えばいいだけの話だし、OSが依存してるPythonがないから、むしろぶっ壊れたってPythonインストールしなおすだけでしょ
LinuxとかでOS依存のPythonが壊れたら多分結構めんどくさいことになるけど。

653:デフォルトの名無しさん
23/01/13 22:11:52.30 JR5Mge6r0.net
>>638
無能w

654:デフォルトの名無しさん
23/01/13 22:13:51.92 lpVvtWLG0.net
それはアップデートしないだよ
何もしないのに壊れることが普通にある

655:デフォルトの名無しさん
23/01/13 23:13:24.72 lpVvtWLG0.net
>>639
むしろconda*しか*使ってない
ちな機械学習分野だから偏りはあるが

656:デフォルトの名無しさん
23/01/13 23:36:10.76 2SILumHK0.net
普通にない
メモリかストレージかお前の頭がおかしい

657:デフォルトの名無しさん
23/01/13 23:56:31.13 q8fVoEuCa.net
まあ無能の「なにもしてないのに」という言葉ほどあてにならないものはないからな

658:デフォルトの名無しさん
23/01/14 00:23:08.36 vxBJh77Y0.net
公式のPythonと併用せずに、anacondaだけ使うならそれでいいんだよ
デプロイ先やプロジェクト毎に異なる実行環境構築するようなものの為には作られてない

659:デフォルトの名無しさん
23/01/14 00:29:29.98 vxBJh77Y0.net
機械学習できる環境を手っ取り早く構築したいっていうならanaconda進めるのはわかるけど
FlaskでWebアプリ作りたいって人がたまにanaconda使ってたりする�


660:フはやばいと思う



661:デフォルトの名無しさん
23/01/14 00:34:13.49 1MvlYv0N0.net
ChatGPTに触れてAI?ニューラルネットワーク?を勉強しようと思うんですが何から始めればいいですか
理論は最低限しか勉強したくないです

662:デフォルトの名無しさん
23/01/14 00:42:42.97 LmGwAWDD0.net
>>652
pytorchやtensorflowのチュートリアルでいいと思う
喜べ、理論を学ぶよりがむしゃらになんでもかんでも試す人の方が勝つ世界だ(自分は理論を押さえたいタイプなので負ける)

663:デフォルトの名無しさん
23/01/14 00:49:24.87 C9wajgvF0.net
>>652
このスレじゃ無理
こっちのスレ↓で質問してみよう。親切な達人プログラマーが懇切丁寧に教えてくれるよ
Ruby 初心者スレッド Part 67
スレリンク(tech板)

664:デフォルトの名無しさん (アウアウエー Sab2-eHNm)
23/01/14 05:26:40.68 0nayz3bja.net
>>651
か、仮想環境をたくさん作ってるんだょ

665:デフォルトの名無しさん
23/01/14 05:50:04.90 wkpIHJLy0.net
まあ実際python環境の構築はいまだに初心者泣かせだ
上にもあったがpipの依存なんかは初心者がハマると抜け出せない
linuxはさらに地獄でpython2とpython3が混雑するのは確定で
さらにanacondaやvenvや各種yumリポジトリ、ソースからのインストール、docker環境などもはやその辺の開発者が扱えるレベルを超えちゃった

666:デフォルトの名無しさん
23/01/14 07:53:48.41 1MvlYv0N0.net
>>653
ありがと
pytorchでやってみる

667:デフォルトの名無しさん
23/01/14 08:00:46.17 aCrKEOPPM.net
>>656
Windowsに生Python入れてずっとそれ使うのが一番楽で安定する
うちは3.3入れて一切のアップデート・ライブラリ導入禁止にしてる

668:デフォルトの名無しさん
23/01/14 11:29:24.96 vxBJh77Y0.net
3.3てとっくの昔にサポート切れてるだろ

669:デフォルトの名無しさん
23/01/14 12:25:35.76 oZZKJ2l20.net
放置しとけ

670:デフォルトの名無しさん
23/01/15 01:34:04.26 EkruTxxD.net
現在の時刻から、ローソク足の最新時刻を出力するコードをAIに聞いたらこうなった
URLリンク(ideone.com)
なんかもっとスマートに書けないかな
・ローソク足は時計一周割り切れる足しかない(5時間とかだと1時間ずつずれるので基本無い)
・timedeltaの引数の%candle_periodのところはデフォルト値に計算結果が0になるような適当な数値を入れておく
な感じをベースに書き直してみたけど
URLリンク(ideone.com)
for u in candle_period:のとこが野暮ったく、そもそも全体的にもっと良い記述があるような

671:デフォルトの名無しさん
23/01/15 11:24:21.13 RjKVOkq+0.net
30代Pythonクソチョン男は強姦魔の犯罪者!
あなたの近くにいます!
父母と祖父母の戸籍謄本を提出させましょう!

672:デフォルトの名無しさん
23/01/15 17:08:43.68 Gy6i7OPa0.net
チンチャこれ

673:デフォルトの名無しさん
23/01/15 18:17:08.02 svqF8aqF0.net
>>661
ローソク足と絡めるならpandasでresample()するのが一般的だけども
勉強がてらにということなら以下のようなコードでどうだろうか
URLリンク(ideone.com)

674:デフォルトの名無しさん
23/01/15 21:01:09.94 EkruTxxD.net
>>664
なるほど
replaceがあったのか
_daysみたいな表記にも特にこだわる必要なくなったのでそっちのがスッキリしていいな
ありがとう

675:デフォルトの名無しさん (ワッチョイ 1a2d-TTdX)
23/01/16 13:33:07.55 19rG6UMJ0.net
パイソンチュートリアルにところどころ英語が混ざってるのは本を買わせるため?

676:デフォルトの名無しさん (ワッチョイ 1a10-KxRG)
23/01/16 14:12:45.24 HxFrHGTf0.net
原文が更新されてまだ追従してないだけじゃない?
内容が古くなるけどバージョン下げたら日本語になるはず

677:デフォルトの名無しさん (ワッチョイ 8610-7DGa)
23/01/16 23:28:41.70 ieLY1UIo0.net
英語の勉強すればおk

678:デフォルトの名無しさん
23/01/17 00:11:36.79 mKywsyCg0.net
ただの独り言だが以前は原著原文読めって言われてもなーと思ってたが糞機械翻訳のドキュメントがあふれるようになってからは原文読むようになったな

679:デフォルトの名無しさん (ワッチョイ f954-ox3M)
23/01/17 08:49:29.93 86vhjnqQ0.net
今のAIなら原文が間違ってても修正してくれるかもしれん

680:デフォルトの名無しさん
23/01/18 00:14:37.02 hk0QW4ON0.net
python環境自体をパッケージングして配布する方法ってあります?
ソースコードだけだと各自のローカルのライブラリのバージョン次第で動かないとかありそうなので、dockerみたいに環境丸ごとやり取りしたいんですが。

681:デフォルトの名無しさん
23/01/18 01:07:09.81 ZQLfTfm70.net
>>670
「あなたが本当にやりたいのはA案ではありませんか?
もしあなたが提案するB案を採用すると以下のような
ごく特殊なケースだけをしょりすることになります。
それでよろしいですか?」

682:デフォルトの名無しさん
23/01/18 01:16:21.29 O4NvFfr90.net
>>671
デプロイ先で実行環境を構築したいとかそういう話?

683:デフォルトの名無しさん
23/01/18 01:24:34.07 O4NvFfr90.net
>>671
最初にPythonをインストールしてくださいってできないの?

684:デフォルトの名無しさん (ワッチョイ dd3c-CH4L)
23/01/18 06:05:50.40 jSahhEMI0.net
>>671
pyinstallerかな?

685:デフォルトの名無しさん (ワッチョイ 4110-7DGa)
23/01/18 07:46:04.02 j8aICGQQ0.net
依存パッケージのバージョンの話なら requirements.txt 用意することになるんだろうけど、
ユーザーの環境にインストールさせるのがうざいよなぁ。
スクリプト本体とバンドルして配布できればいいのに。

686:デフォルトの名無しさん (ワッチョイ f954-ox3M)
23/01/18 09:05:48.70 /pnBak0/0.net
ちゃんと判ってる人向けならrequirements.txtで足りるんだろうな
何も判らない人でもダブルクリックするだけで全てインストールされる仕組みは大変そう

687:デフォルトの名無しさん
23/01/18 11:48:52.72 cgIxykua0.net
使ったことないけどembeddable pythonは?

688:671
23/01/18 12:32:41.36 hYVfYEsja.net
すみません説明不足だったかも。pythonの開発環境自体を、ライブラリを含めて配布したいのです。
調べたらWinpythonがそれっぽい?

689:デフォルトの名無しさん
23/01/18 12:48:14.85 liJuFOIB0.net
ターゲットがLinuxならコンテナ一択やがWinアプリ書きたいん?

690:デフォルトの名無しさん
23/01/18 13:18:57.48 O4NvFfr90.net
>>679
どういう開発環境かもわからんし、pipが使えない理由もわからんけど
実行環境と開発環境をごっちゃにしてるのはわかる
よくわからんからとりあえずやってみたらいいんじゃね

691:デフォルトの名無しさん
23/01/18 14:04:46.70 s0ETZiMG0.net
x = 1
y = 2
l = [x, y]
l[x > y] = 1
l[x < y] = 10
先日、このアクセス初めて見たんだけど
こういう使い方できますってどこに書いてるん?
というかこれ何? 何をしてるの?

692:デフォルトの名無しさん
23/01/18 14:17:53.69 XUj03KlL0.net
>>682
print(int(True)) してみればわかる

693:デフォルトの名無しさん
23/01/18 15:13:41.38 +ZuSWnJO0.net
>>679
ソースからインストールするのが良いと思う
特定のディレクトリにインストールして
pipモジュールも全部そこに入れる
PYTHONPATH環境変数さえ切り替えればディレクトリ丸ごとzip化して展開するだけで動く

694:デフォルトの名無しさん
23/01/18 15:36:42.94 s0ETZiMG0.net
>>683
ああ0か1でインデックスアクセスしとるだけか…

695:デフォルトの名無しさん (アウアウアー Sace-/AVQ)
23/01/18 15:51:40.32 jMlJSS1Fa.net
>>685
それだと2番目で10帰るのはおかしくない?

696:デフォルトの名無しさん (ワッチョイ f954-ox3M)
23/01/18 15:51:50.72 /pnBak0/0.net
何に使うの?
それで元のxとかも変更されたら面白いけど

697:デフォルトの名無しさん (ワッチョイ 8646-powr)
23/01/18 17:55:01.69 6kj4tnJC0.net
>>686
以下が全て同じ事ならおかしくないのでは。
l[x < y] = 10
l[True] = 10
l[1] = 10

698:デフォルトの名無しさん (アウアウアー Sace-/AVQ)
23/01/18 17:56:51.65 4G0iEoXva.net
>>688
これって l == [1,2] でしょう?

699:デフォルトの名無しさん (アウアウエー Sab2-f+PD)
23/01/18 18:00:03.67 CSuoG/Pca.net
どうみても [1,10]

700:デフォルトの名無しさん (ワッチョイ ed01-f6s+)
23/01/18 18:01:25.91 vDmewWjV0.net
ワロタ

701:デフォルトの名無しさん (アウアウアー Sace-/AVQ)
23/01/18 18:02:02.81 4G0iEoXva.net
x = 1
y = 2
l = [x, y]
って代入してますよね。

>>690

702:デフォルトの名無しさん (アウアウエー Sab2-f+PD)
23/01/18 18:05:03.53 CSuoG/Pca.net
>>692
その下で再代入してますよね?

703:デフォルトの名無しさん (ワッチョイ 06bb-sA4L)
23/01/18 18:07:51.72 guU+fOES0.net
>>687
だいたいゴルフ

704:デフォルトの名無しさん (ワッチョイ 867b-lu1o)
23/01/18 18:11:56.58 cgb3Ru010.net
682じゃないけど、
l[x < y]実行すると確かに10って出るんだけど、l[x < y]て何?変数?

705:デフォルトの名無しさん (ワッチョイ 8610-qfBe)
23/01/18 18:13:34.26 XUj03KlL0.net
URLリンク(wandbox.org)

(´・ω・`)

706:デフォルトの名無しさん (ワッチョイ 867b-lu1o)
23/01/18 18:24:19.05 cgb3Ru010.net
なるほど、そこは式でもいいんだw
l[1]ね

707:デフォルトの名無しさん (アウアウアー Sace-/AVQ)
23/01/18 19:16:40.41 4G0iEoXva.net
>>693
本当だ……
すみません

708:デフォルトの名無しさん (アウアウエー Sab2-eHNm)
23/01/18 20:20:20.43 Hw+b6smNa.net
リストのインデックスやろ

709:デフォルトの名無しさん (ワッチョイ ed01-hn8B)
23/01/18 21:56:26.72 1WHyH76r0.net
test

710:デフォルトの名無しさん
23/01/19 00:54:56.11 5JSgYA5N0.net
682だけどみんなすまん
再代入ではなくコメントアウトしたつもりだっただけだ
x = 1
y = 2
l = [x, y]
l[x > y] # 1
l[x < y] # 2
インデックスアクセスって式でもいいんだね
その仕様って公式ドキュメントかどこかに書いとるのかな?
_list[getStart() : getEnd()]
は見たことある

711:デフォルトの名無しさん (ワッチョイ 9576-8egj)
23/01/19 08:00:24.00 cvaqY+KJ0.net
l[i+1]-l[i]
みたいなことは普通にやるでしょ

l[True]が許されてるのは知らんかったが

712:デフォルトの名無しさん (ワッチョイ f954-ox3M)
23/01/19 08:45:06.76 tHxF2dx+0.net
普通に考えてエラーだよな

713:デフォルトの名無しさん (ワンミングク MM5a-ha7Y)
23/01/19 10:18:38.24 Np1e/hbpM.net
cだとTrue==1,False==0

714:デフォルトの名無しさん (ワッチョイ dd3c-CH4L)
23/01/19 10:35:05.16 jZEAJEvg0.net
>>701
おそらくオリジナルのコードはもっと違うものだろう
a=[1,2,3,4,5]
a[a>3]
みたいな書き方ではないかと予想

715:デフォルトの名無しさん (ワッチョイ f954-ox3M)
23/01/19 10:49:25.55 tHxF2dx+0.net
Cにもよるけど、本来は0か0以外
1に限定してしまうとじゃあ2だったら?になる
0以外なら何でもいいけど1に限定するルールが追加されたりもする

716:デフォルトの名無しさん (ワンミングク MM5a-ha7Y)
23/01/19 11:10:27.46 Np1e/hbpM.net
numpyのコードでも見たんかな

717:デフォルトの名無しさん
23/01/19 13:45:08.48 O9Pu7UCm0.net
2択ならif文使わずにリスト+真偽値でこういう風に書けるけどこういうのってバグ誘発とかします?
print(["不合格", "合格"][a > 70])

718:デフォルトの名無しさん
23/01/19 13:49:31.35 tHxF2dx+0.net
print("不合格" if a <= 70 else "合格")
普通はこうするかな
そのまま文章として読める

719:デフォルトの名無しさん
23/01/19 14:07:07.89 KyLvYp+m0.net
>>708
自分だけが使うコードならそれでいいよ (競プロとかね)
複数人が触るコードでトリッキーなことをするのはやめたほうがいい

720:デフォルトの名無しさん
23/01/19 14:07:26.78 tUp9S1Vn0.net
URLリンク(twitter.com)


721:40A&s=19 (deleted an unsolicited ad)



722:デフォルトの名無しさん
23/01/19 14:41:58.83 lMPY/6+kr.net
>>711


723:デフォルトの名無しさん
23/01/19 14:50:57.06 tUp9S1Vn0.net
URLリンク(twitter.com)
(deleted an unsolicited ad)

724:デフォルトの名無しさん
23/01/19 15:06:12.24 tHxF2dx+0.net
いやいやいや

725:デフォルトの名無しさん
23/01/19 15:21:56.82 UZ8Yv+jk0.net
って二部探索するんかい

726:デフォルトの名無しさん (スッププ Sdea-WdMA)
23/01/19 16:25:33.10 upxAw0UEd.net
二分

727:デフォルトの名無しさん (ワッチョイ 8663-f6s+)
23/01/19 17:50:13.85 QVFjggvT0.net
一部分の探索で済まそう

728:デフォルトの名無しさん (アウアウアー Sace-0njp)
23/01/19 18:56:11.00 TNs8/XJ0a.net
リスト内で複数行にまたがる正規表現って可能なもんですかね?

0 りんごが1個うれた
1 りんご
2 が2個
3 売れた

りんご.*れた みたいな感じのパターンを使って最初にマッチする行位置が取りたいっす。

729:デフォルトの名無しさん
23/01/19 19:14:50.90 tHxF2dx+0.net
特殊な文字でjoinしたものを検索してから、特殊な文字の個数を数える
りん

みたいに行を跨いでいるものは無理

730:デフォルトの名無しさん
23/01/19 19:22:45.59 5ZAVTiSz0.net
特殊な文字なしでjoinして位置変換の情報は別途生成でいいんでは

731:デフォルトの名無しさん
23/01/19 19:29:53.07 tHxF2dx+0.net
一つずつ長くしながら比較、でも判るけど時間かかりそう
一旦文字数のテーブルに変換しておけば文字列比較はしなくて済む

732:デフォルトの名無しさん
23/01/19 19:50:54.78 TNs8/XJ0a.net
719
720
721
やっぱりリスト内は難しいですよね。
joinで考えます!!

733:デフォルトの名無しさん
23/01/19 21:09:54.59 .net
AIに聞いた結果 >>718
URLリンク(i.imgur.com)
URLリンク(ideone.com)

734:デフォルトの名無しさん
23/01/19 21:26:15.66 tHxF2dx+0.net
文字列内に改行が含まれないことが明らかなら、特殊な文字として改行を使ってAIと同じ答えになる
にしてもAIすげーな

735:デフォルトの名無しさん
23/01/19 21:34:15.13 cvaqY+KJ0.net
リストに分割されてない"\n"区切りの1本の文字列なら、
reのDOTALL使っていい感じにできそう?

736:デフォルトの名無しさん
23/01/19 21:37:12.72 tHxF2dx+0.net
flags=re.DOTALL は不要な時はわざわざ付けないだけで、
あって困ることはあんまりないのでむしろデフォルトにして欲しい

737:デフォルトの名無しさん
23/01/21 01:57:46.01 hmuMvNyB0.net
一連の処理が関数化されたライブラリサイト探してるんだけど、検索しても関数の使い方ばかりヒットする。どっかいいところある?

738:デフォルトの名無しさん
23/01/21 02:03:09.47 NCV4+yjc6.net
その関数を使えばいいのでは

739:デフォルトの名無しさん
23/01/21 02:08:14.13 8Gumyjw80.net
ChatGPTがいいよ

740:デフォルトの名無しさん
23/01/21 02:58:00.85 Bxvmrygr0.net
>>723
その ideone.com/S6X4NB の実行結果は match line: 4 になっている。
4行目しか、/りんご.*れた/ にマッチしてないのでは。
「複数行にまたがる正規表現」ということなら、2~5行目にかけた
"りんごが1個3 りんご4 りんごが2個うれた5 売れた"
にマッチし、match line: 2 が返りそうな気がする。

741:デフォルトの名無しさん
23/01/21 04:51:17.18 +3UW7oH80.net
ほんとだ
re.MULTILINEじゃなくてre.DOTALLが正解でしたね

742:デフォルトの名無しさん
23/01/21 13:38:37.90 5rRYrQvt0.net
みんな引数書くとき型ヒントつけてる?
Intelicenseのためになるべくつけるようにしたいんだけど
あえてつけない方がいいって意見あったりする?

743:デフォルトの名無しさん
23/01/21 14:01:26.32 fUOngKcuM.net
>>732
使ってないなあ
使わなくても動くものは使わなくていい
シンプルイズベスト

744:デフォルトの名無しさん
23/01/21 14:32:


745:39.33 ID:A7VrgYN70.net



746:デフォルトの名無しさん
23/01/21 16:32:06.79 .net
AIで勝手につけてもらったほうが楽だったりして
URLリンク(i.imgur.com)

747:デフォルトの名無しさん
23/01/21 17:06:12.97 EhE1HfEs0.net
>>732
書ける型は必ず書くかな
なくても理解できるなんてまやかしだからね
一人で数百行のスクリプト書くだけなら好きにすればいいけど

748:デフォルトの名無しさん
23/01/21 17:54:45.51 N4/N+WFUd.net
俺も書く
明日の自分は別人だとおもってるから

749:デフォルトの名無しさん
23/01/21 18:03:08.29 6NqTTwhj0.net
必要そうだと思えば書く
一律には決めない

750:デフォルトの名無しさん
23/01/21 18:29:49.08 vxlp1VLj0.net
分析用のコードとか簡単なアルゴリズム検証用のプロトでは書かないけど、
それなりに運用される前提のコードなら書くかなあ。

751:デフォルトの名無しさん
23/01/21 21:58:12.42 CGLAOxtya.net
コメントもアノテーションも書いたら負け
書かなくとも直感的に頭の中に入ってくるコードを書くのは必然

752:デフォルトの名無しさん
23/01/21 22:05:29.47 qRfy1PGha.net
変数名は6文字以下

753:デフォルトの名無しさん
23/01/21 22:32:25.46 8msiXC4t0.net
コメントはわかるが型書くのはバグ、デグレ回避だからな

754:デフォルトの名無しさん
23/01/22 00:43:00.91 alhRdr+00.net
皆さんありがとうごおざいます。
強く忌避される理由もなさそうなので遠慮なく使っていこうかと思います。

755:デフォルトの名無しさん
23/01/22 09:46:38.39 mu8Nl5mu0.net
昔はコメントは1行ごとに書けと言われていたがな。
コメントのみ抽出してテスト項目書にするから。

756:デフォルトの名無しさん
23/01/22 10:25:05.16 sXfLTPHJ0.net
昔の人ってバカだったんですね

757:デフォルトの名無しさん
23/01/22 10:36:24.49 mu8Nl5mu0.net
テスト担当は本来自分じゃないんだぞ。

758:デフォルトの名無しさん
23/01/22 10:56:53.83 Z9h86Jnh0.net
本文のコメントをテスト項目書に書くってどいうことだろ

759:デフォルトの名無しさん
23/01/22 11:07:16.38 Dp7umTA90.net
まだ網羅とかの概念が無かった頃かな

760:デフォルトの名無しさん
23/01/22 11:20:11.52 mu8Nl5mu0.net
そうだね。ちょうどカバレッジ(率)という用語が出てきてプログラム化されてきたかなという頃だな。

761:デフォルトの名無しさん
23/01/22 11:26:46.20 dLuJ8Aewd.net
>>744
言われてないぞ

762:デフォルトの名無しさん
23/01/22 11:39:32.26 vp80yT++0.net
>>744
コードの行数とコメントの行数が同じになるの?

763:デフォルトの名無しさん
23/01/22 13:19:21.37 Z9h86Jnh0.net
逆になんでコメントなんだろうと思った。
コードそのまま写した方が手間も間違いも無くてよさそうに思うが。

764:デフォルトの名無しさん
23/01/22 14:08:53.41 mu8Nl5mu0.net
言われていないなら言われていないでいいよ。
別に書かなくても誰も困ってないんだろ。
コードで行っている処理を日本語などの言語で表現できないような状態はバグの温床だな。

765:デフォルトの名無しさん
23/01/22 14:36:52.28 CeTBqGTsd.net
>>753
生産性の悪い、規約でがんじがらめの現場しか経験してないのかな
コメントは処理の内容じゃなく、なぜその処理かを記述するんだよ
何やってるかなんてコード読めば済むだろ

766:デフォルトの名無しさん
23/01/22 14:46:00.56 lD3V8UVm.net
こういうことをしたいんだがもっと上手く書けないもんかな・・
URLリンク(ideone.com)
等分割ではなくて等比的に分割していく、みたいな
微妙にsum結果が合ってないのも気になる

767:デフォルトの名無しさん
23/01/22 15:08:55.72 mu8Nl5mu0.net
floatだからじゃないの?decimal使ったら?

768:デフォルトの名無しさん
23/01/22 15:36:21.63 ++gHrjAvM.net
おあつらえ向きに何がやりたいかわからんコメントが必要なコードが出てきたぞ

769:デフォルトの名無しさん
23/01/22 15:57:16.18 Z9h86Jnh0.net
ふつうはその関数の仕様や期待動作をコメントに書くんだよ

770:デフォルトの名無しさん
23/01/22 16:15:50.88 6lZDc9UV0.net
sideとexの意図がわからんから無視したが、
だいたいこんな感じになれば満足か?
def divisionor(source, ratio, maxcount):
for _ in range(maxcount):
yield source
source*=ratio
def step_values(sumvalue, ratio, step):
firstvalue = sumvalue * (1-ratio) / (1-ratio**step)
return list(divisionor(firstvalue, ratio, step))
print(step_values(11111, 0.1, 5))

771:デフォルトの名無しさん (ワッチョイ ff02-Jpma)
23/01/22 17:26:38.16 KzI8pxO80.net
この行は何をしたいのか
なぜこの選択肢を取ったのか
この選択肢を試してみたがこういう方法でうまくいかない

とかをコメントで残しておいてくれると
後々助かる

772:デフォルトの名無しさん (ワッチョイ 8310-HsLm)
23/01/22 17:57:02.93 tbxzfOk70.net
そもそもそういうコメントが不要なコードのがよくない?
ちゃんとレビューしよう

773:デフォルトの名無しさん (ワッチョイ f354-gNeF)
23/01/22 19:17:12.88 Dp7umTA90.net
関数名や変数名から想像した通りに動作をするならコメントは要らない
予想を裏切る行動をする箇所だけコメントが必要

そんな書き方するなという話だけど、そうしないといけない時もある
外部のバグに合わせて仕方なく変なことするとか
再帰呼び出しもコメントが無いとパッと見て判らない

774:デフォルトの名無しさん
23/01/22 21:39:41.12 rHuBFYoH0.net
>>761
> そもそもそういうコメントが不要なコードのがよくない?
それ、ドキュメント書きを怠けたい人の方便だからね。
誰に聞いたか知らないが、真に受けるのはやめよう。
そもそも、そうのたまう人が説明不要なコードを書いた試し無いでしょ。

775:デフォルトの名無しさん
23/01/22 21:50:50.32 HMT2GUgc0.net
コメントは悪、という思想は悪
その正体は怠慢と傲慢

776:デフォルトの名無しさん
23/01/22 21:56:14.88 nZDUyUTud.net
>>760の言ってる内容はコードとして残せないから残す意味がある
処理の内容を書く奴は処理とコメントに矛盾が生じたときに困るし、
コードとコメントの双方を直すことになる奴だから残すべきじゃない

777:デフォルトの名無しさん
23/01/22 21:58:28.48 mu8Nl5mu0.net
>>765
同じことをいうヤツが何人もいるが、それは仕様自体を正しく把握してない状態では?

778:デフォルトの名無しさん
23/01/22 21:59:29.89 CYRi3QMt0.net
コメント欄は上司の悪口を書いておく場所です

779:デフォルトの名無しさん
23/01/22 22:00:55.76 tbxzfOk70.net
>>763
自分のコードでもレビューでもそう意識して実践してるけどダメ?
>>762のようなケースもあるからこそ
ノイズになるしょうもないコメントは書きたくないから
なるべくコードだけで分かるように心がけてる

780:デフォルトの名無しさん
23/01/22 22:04:13.87 vp80yT++0.net
# 何故動いているのか分からない
# 触るな!キケン!

781:デフォルトの名無しさん
23/01/22 22:10:16.22 9Ojcnz4Cd.net
>>766
仕様を把握してたらなおさらコードの内容をコメントとして書く理由がない
ある程度の規模のOSSのソース見てごらん
ちゃんと意味のあるコメントが書かれてる

782:デフォルトの名無しさん
23/01/22 22:23:35.47 o/PhajQ/0.net
>>765
コードコメントをAPIドキュメントとして使うよう場合は
仕様としての処理の内容をコメントに書く
それに「この行は何をしたいのか」は基本的にコードに書くべきこと
特にPythonのように高レベル言語では意図が伝わるコードを書くべき

783:デフォルトの名無しさん
23/01/22 22:28:26.52 CYRi3QMt0.net
# この先地雷原有り

784:デフォルトの名無しさん
23/01/22 22:29:55.26 /fZ7r7w/d.net
>>771
何をしたいのかと何をやってるのかは違うからね
コードから読み取れるのは何をやってるのか(how)だけであり、
なぜ(why)ややりたいこと(want to)は読み取れない
だからこそコードに残せない情報はコメントで残す意味がある

785:デフォルトの名無しさん
23/01/22 22:54:57.29 R9Yr7t5mH.net
まともなコードを読めば
ドキュメントとコメントと適切な命名、型ヒントの重要性について学べるだろう
個人用の短い書き捨てのコードしか書かないんだったら好きにすりゃいい

786:デフォルトの名無しさん
23/01/22 23:02:22.21 bkKT3NQT0.net
コメントは分かりやすくするためだから長文でダラダラ説明じゃなく要点を端的に示せばいいよね
>>773のとおりどうやってやっているかはコード見ればいいから不要だけど何のための処理かとか入出力変数の内容はメモ欲しいかな

787:デフォルトの名無しさん
23/01/22 23:25:39.03 o/PhajQ/0.net
>>773
>何をしたいのかと何をやってるのかは違うからね
それ違ったらバグだよ
Whyは一般的にはコードに書けない
HowだけでなくWhatをコードに書く
それが意図を伝えるコード

788:デフォルトの名無しさん
23/01/23 02:03:11.45 iK9HS79n0.net
コメント書いてわかりやすくするなら
はじめからわかりやすいコードを書くことを心がけて行きたい
コメントやドキュメントに頼らずに直感的に頭の中にすっと入ってくるコードを目指すべき

789:デフォルトの名無しさん
23/01/23 08:55:05.46 e6QcTLyI0.net
ユークリッドの互助法みたいなのは、ユークリッドの互助法を行う、でいいと思うけど、
数式をプログラムにする際にやたらに複雑になってしまったような場合は概要だけでなく解説を入れるかな。
glibcのmath.cのcosとかいい例って感じするけど。

790:デフォルトの名無しさん
23/01/23 09:04:24.24 ZLTOxX5K0.net
いわゆる「下回り」は高速性も求められるので、難解になりがちだな
何ならアセンブラで書いてある
そういうダーティな部分は最下層に追いやって、上の方はクリーンに書くので、
そんな難解なものを書けるチャンスはまずやって来ない

791:デフォルトの名無しさん
23/01/23 09:13:35.90 JALIr7W8M.net
>>779
numpyとかダーティになりがちだし、自分はnumpyのコードも書くからなあ。そう言うコメントを書く機会ある。

792:デフォルトの名無しさん
23/01/23 09:15:42.81 qV3QzySmp.net
あれは実際どの型で動いてるのか不安になる時あるわ
ちょっとコード変えたらエラー出まくりとか嫌になる

793:デフォルトの名無しさん (アウアウウー Saa7-KLwc)
23/01/23 15:20:45.47 wy0Tx5tFa.net
普段からコメント書いたり読んだりしてないといきなりは難しい

794:デフォルトの名無しさん (ワッチョイ f354-88l+)
23/01/23 15:25:29.48 ZLTOxX5K0.net
コメントとは違うけど、docopt ってよく出来てる
ドキュメントを書くとその通りに動く
あの無敵な感じを関数単位でやれるといい

795:デフォルトの名無しさん (ワンミングク MMff-KgBz)
23/01/23 19:31:40.09 Hk4+8ffPM.net
>>732
付けてるけど
Noneチェックしないとエラーになってうざいときある

796:デフォルトの名無しさん
23/01/24 01:38:47.57 k7nS/dQwM.net
30代Pythonクソチョン男は強姦魔の犯罪者!
あなたの近くにいます!
父母と祖父母の戸籍謄本を提出させましょう!

797:デフォルトの名無しさん
23/01/24 23:55:50.38 NOigsG6z0.net
ウェブサイトのデータ抽出してからエクセルにデータ貼り付けて、
そこからさらに重複していないデータ(データ一覧に一つしか存在しないという意味、リストにすでに含まれてたら…ってのはng)だけ取り出したいんだけど、
この重複してないデータの取り出し方法がわかりません
どんな方法ありますか?

798:デフォルトの名無しさん
23/01/25 00:04:00.77 Eu1oQ2MW0.net
>>786
Python不得意ならExcelでやればいいんでは?
テキストファイル化してコマンドラインからuniq(PowerShellならGet-Unique)でもええし
Pythonならset(集合)にデータをタプルで入れていけば勝手に一意にはなる

799:デフォルトの名無しさん
23/01/25 01:26:29.91 .net
#エクセルデータをpandasで読み込んでdataframeに変換する例
import pandas as pd
data = pd.read_excel('path/to/excel_file.xlsx')
#特定のシートだけ読み込む
data = pd.read_excel('path/to/excel_file.xlsx', sheet_name='Sheet1')
#特定の範囲だけ読み込む
data = pd.read_excel('path/to/excel_file.xlsx', usecols='A:C')
#読み込んだあと、特定の列から重複しないユニークな値を抽出する
data = pd.read_excel('path/to/excel_file.xlsx')
unique_values = data['column_name'].unique()
#pandasで重複しない値を取得する例
import pandas as pd
data = {'Name': ['John', 'Mike', 'Brad', 'Jane', 'John', 'Mike'],
'Age': [25, 30, 35, 40, 25, 30],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'New York', 'Los Angeles']}
df = pd.DataFrame(data)
unique_values = df['Name'].unique()
print(unique_values)

800:デフォルトの名無しさん
23/01/25 01:50:21.75 u8Mn4x2gM.net
>>786
重複排除じゃなくて
最初から完全に一意のものだけ取り出すってこと?
俺の頭では無理だな

801:デフォルトの名無しさん
23/01/25 02:54:09.95 na5kNBW00.net
>>786
仕様の「リスト」が何を指すか解らない。その一文を無視して、
連想配列(Pythonだとdic?)で、
var["データの1要素"]++
みたいなことをし、
var["データの1要素"] != 1 を捨てるかな。

802:デフォルトの名無しさん
23/01/25 03:11:17.39 4wQ5Uou30.net
>>786
動的計画法で探索したら済む

803:デフォルトの名無しさん
23/01/25 08:15:31.51 ByQxjYtpa.net
Ruby 2.7 から、tally で、配列内に同じ要素が何個あるかを数えられる。
そこから、重複していないものをフィルターする
ary = [ 1, 2, 2, 1, 3 ]
p hash = ary.tally #=> {1=>2, 2=>2, 3=>1}
p result = hash.select { |key, val| val == 1 } #=> {3=>1}

804:デフォルトの名無しさん (ワッチョイ f354-gNeF)
23/01/25 09:28:21.85 1X933CFM0.net
既にexcelにあるなら、重複の削除でいいのでは

805:デフォルトの名無しさん
23/01/25 13:48:53.45 lTdR++oJ0.net
>>786
collections.Counterで要素数が1のものだけ抽出すれば?

806:デフォルトの名無しさん
23/01/25 13:53:44.39 lTdR++oJ0.net
こんな感じで。
import collections
l = ['a', 'a', 'a', 'a', 'b', 'c', 'c']
c = collections.Counter(l)
print([k for k,v in c.items() if v==1])

807:デフォルトの名無しさん
23/01/25 13:56:42.38 lTdR++oJ0.net
つか、ここだとmarkdown使えんから
具体的な質問なら、SOとか寺にしたほうがいいよ

808:デフォルトの名無しさん
23/01/25 15:23:19.30 B2re/Hy6d.net
というか>>1見ましょうって話だけど

809:デフォルトの名無しさん
23/01/25 22:08:02.33 BPa0NAyM0.net
>>795
上にもあるけど単にリストのユニーク要素を取り出すならsetに一旦変換するのが楽だと思うけど
l = ['a', 'a', 'a', 'a', 'b', 'c', 'c']
print(list(set(l)))
ただ>>786のやりたいことがイマイチ分からないのでみんなエスパーするしかない
エクセルが間に挟んだのはどういう処理(過去保存データとのマージとか途中経過置きたいのか)とかリストって一次元のリストなのかとかがよく分からない

810:デフォルトの名無しさん
23/01/25 23:56:04.30 3IYN0s1Ra.net
分割統治法の処理に一行追記するだけでできる気が

811:デフォルトの名無しさん
23/01/26 00:59:27.75 rjz6yl2y0.net
>>798
>>786
1:abcd
2:abcd
3:efgh
を、
1:abcd
2:efgh
とユニークにするのでなく、
1:efgh
としたいと言っているのでなかろうか。どうだろう。

812:デフォルトの名無しさん
23/01/26 12:21:48.66 M4fxvzOfM.net
新規性探索アルゴリズムで実装してみてはどうだろう

813:デフォルトの名無しさん
23/01/26 12:31:06.80 GrZTDGimd.net
おそらく探索系のアルゴリズム使うよりもfind等の関数型でやったほうが強いだろう
rubyならすぐ書けるんだがな

814:デフォルトの名無しさん
23/01/26 12:43:57.64 UdXClMFA0.net
数が一つを保証するために探索系アルゴリズムもないだろう
N個あったらO(N)で数え上げだろう

815:デフォルトの名無しさん
23/01/26 16:56:31.08 T1n7nFq3M.net
30代Pythonクソチョン男は強姦魔の犯罪者!
あなたの近くにいます!
父母と祖父母の戸籍謄本を提出させましょう!

816:デフォルトの名無しさん
23/01/26 22:54:11.42 Wh8CZgs50.net
ZDDを

817:デフォルトの名無しさん
23/01/27 16:28:22.40 uGmwFOSM.net
これ地味にむずいかもって事例に遭遇した。
ページネーションされているウェブサイトにて
1ページ毎に(日付、値)の形式で何行か表示されていて
(日付、値)だけをスクレイピングするとする
例えばこんな感じ
1ページ目
2023/01/26(木) 22:54:11、1
2023/01/26(木) 22:53:30、2
2023/01/26(木) 22:52:08、1
2ページ目
2023/01/26(木) 22:51:04、1
2023/01/26(木) 22:51:04、2
2023/01/26(木) 22:50:23、1
問題は、
スクレイピング中に、ウェブサイト側がデータを更新した場合
同じ日付を重複して収集してしまう可能性があること。
同じ日付時刻なこと自体は間違いではなく正常なので
ウェブサイトの更新時によるズレなのか、単に同じ日付時刻のデータなのか
を判別する処理が難しいというか、単純であればあるほど
常に最新データを収集するとかでない限り不可能な気がした

818:デフォルトの名無しさん
23/01/27 16:47:43.59 c/fSkYwsM.net
>>1
svgを使いたいのだが、
インストールすらエラー、、、

819:デフォルトの名無しさん
23/01/27 17:16:38.85 .net
google colabは普通にできた >>807
URLリンク(colab.research.google.com)

820:デフォルトの名無しさん
23/01/27 17:38:27.29 COYgsLLDM.net
>>806
識別子も更新日時もなくサイレントに更新されるような品質の低いデータならページ単位に取得日時を記録してスナップショットとして割り切るしかない

821:デフォルトの名無しさん
23/01/27 19:13:48.24 ttcy9Q0Rd.net
>>806
スレタイ読める?

822:デフォルトの名無しさん
23/01/27 19:53:07.73 wbJwBZC+M.net
>>808
ありがとうございます

823:デフォルトの名無しさん
23/01/27 22:54:09.27 QwmTjMRl0.net
>>806
Rakuten Koboの期間で絞り込むと一緒だ
デフォルトが売上順になっていて、ページ移動すると、順番が変わる
結果セットに対して、ページを作成しているのではなく、その都度作成してる。
こうゆう作りの所は、諦めるしかない。
結果セットをいじるのは、勘弁してほしい
(今日出ているのに、ページまたがりで見つからなくて、別のとこで買ったことも)

824:デフォルトの名無しさん
23/01/27 23:03:53.86 wC9qLVMj0.net
気持ち悪い自演

825:デフォルトの名無しさん
23/01/29 11:45:29.18 Ac+ianrsM.net
30代Pythonクソチョン男は強姦魔の犯罪者!
あなたの近くにいます!
父母と祖父母の戸籍謄本を提出させましょう!

826:デフォルトの名無しさん
23/01/29 14:25:12.72 sXEwsNxr.net
pythonファイルを定期実行するときに、○○秒待機したタスクだけを一度実行(また○○秒待機)
ってこんな面倒だったっけ・・?
URLリンク(ideone.com)
whileで無限ループとかだと、経過時間をメモリできるから簡単だけど
pyファイル実行毎だとその都度全部クリアされるからどこかに記録しとかないといけない、という認識であってるのだろうか・・
ほぼ最小構成のつもりでこんなに長くなってしまった

827:デフォルトの名無しさん
23/01/30 15:47:46.06 6GqSWy3Oa.net
>>815
普通の人はscheduleモジュール使う
プロセスごとだとLinuxのcronやWindowsのスケジューラ使う

828:デフォルトの名無しさん
23/01/30 17:17:45.74 U0BG6clG.net
プロセスごとだと、タスクごとにpyファイルを分けて
例えば
task1.py task2.py ・・・
みたいに分けて
OSの方でそのpyファイルを定期実行する感じですかね
仮に、どこからか情報を取得するようなタスクだったら、DBに記録して
DBから情報を取得して処理する.py
に分けて、それも定期実行する
みたいな
もちろんやり方は自由なんだろうけど
実行時間に依存した料金体系のサービスで節約したい場合とか
ループ使わないだけで構成変わっちゃうので、かつ汎用性持たせようとして苦労してます・・
ありがとうございました >>816

829:デフォルトの名無しさん
23/01/30 19:13:50.35 6GqSWy3Oa.net
>>817
金額が安いのはサーバレスサービスかな
例えばhttpで受け付けるAPIを用意して、AWSでLambdaファンクションをCloudWatch経由でたたく
1分に1回実行するとして2000円以下だと思う
それも高いと言うなら月額1000円未満のVPS借りてLinuxでcronかな

830:デフォルトの名無しさん
23/01/31 14:03:50.00 F8VbnJh50.net
URLリンク(github.com)
*火(Fire)と飛翔(Flying)の属性を持ったポケモンの数を表示
*消防士向きのポケモンを判定する  図鑑番号を指定して  水(Water)のタイプをもっていて、すばやさが平均以上の  ポケモンであれば、採用と表示する
*発電向きのポケモンを判定する  図鑑番号を指定して  でんき(Electric)のタイプをもっていて、ぼうぎょりょくが中央値以上の  ポケモンであれば、採用と表示する
誰かこれの回答と解説お願いできる?

831:デフォルトの名無しさん
23/01/31 14:04:37.72 F8VbnJh50.net
import urllib
import json
response = urllib.request.urlopen('URLリンク(raw.githubusercontent.com)')
content = response.read()
jpk = json.loads(content)
jpk

832:デフォルトの名無しさん
23/01/31 14:05:09.66 F8VbnJh50.net
頼む

833:デフォルトの名無しさん
23/01/31 14:41:57.01 M1DmxzTw0.net
PySimpleGUIで2つの最大サイズの画面を遷移させたいのですが、
ウインドウを作成しておいて表示/非表示で見た目に入れ替えようとしました。
# 最初にウインドウの起動位置を指定して起動
main_window = make_main(0, 0)
sub_window = make_sub(0, 0)
# サブウインドウを非表示にする
sub_window.hide()
main_windowにあるボタンを押すと
# サブウインドウを表示する
sub_window.un_hide()
サブウインドウが最前面に表示されます。
その後、sub_windowにあるボタンを押して、
# サブウインドウを非表示にする
sub_window.hide()
メインウインドウを最前面にしようとしてもサブウインドウが最前面に表示されたままです。
双方のボタンで前後入れ替えて表示したいのですが、良い案はありませんでしょうか。

834:デフォルトの名無しさん
23/01/31 15:06:40.46 .net
AIに聞いた結果 >>819
合っているかはわからん

import urllib
import json
import pandas as pd
response = urllib.request.urlopen('URLリンク(raw.githubusercontent.com)')
content = response.read()
jpk = json.loads(content)
#print(jpk)
df = pd.DataFrame(jpk)
df['name']=df['name'].apply(lambda x: x['japanese'])
df=df.join(df["base"].apply(pd.Series)).drop(columns=["base"])

#火(Fire)と飛翔(Flying)の属性を持ったポケモンの数を表示
target_types = ['Fire','Flying']
count = sum([all(value in row for value in target_types) for row in df['type']])
print("typeがFireとFlyingのポケモンの数",count)

#消防士向きのポケモンを判定する  図鑑番号を指定して  水(Water)のタイプをもっていて、すばやさが平均以上の  ポケモンであれば、採用と表示する
target_types = ["Water"]
m_speed=df["Speed"].mean()
filtered_df = df[df.apply(lambda row


835:: all(value in row['type'] for value in target_types) and row['Speed'] >= m_speed, axis=1)] print("消防士向きのポケモン\n",list(filtered_df["name"])) #発電向きのポケモンを判定する  図鑑番号を指定して  でんき(Electric)のタイプをもっていて、ぼうぎょりょくが中央値以上の  ポケモンであれば、採用と表示する target_types = ["Electric"] m_defense=df["Defense"].median() filtered_df = df[df.apply(lambda row: all(value in row['type'] for value in target_types) and row['Defense'] >= m_defense, axis=1)] print("発電向きのポケモン\n",list(filtered_df["name"])) #typeがFireとFlyingのポケモンの数 6 # 消防士向きのポケモン ['カメックス', 'ゴルダック', 'ニョロモ', 'ニョロゾ', 'ニョロボン', 略 # 発電向きのポケモン ['コイル', 'レアコイル', 'マルマイン', 'サンダー', 'デンリュウ', 'ライコウ', 略



836:デフォルトの名無しさん
23/01/31 15:11:42.84 .net
>>822
PySimpleGUI の bring_to_front() 関数を使って、ウインドウを最前面に表示することができます。

以下は、サブウインドウを最前面に表示する例です:
sub_window.un_hide()
sub_window.bring_to_front()

また、メインウインドウを最前面に表示するには、以下のようにします:
main_window.bring_to_front()

このように、各ウインドウを最前面に表示することで、ボタンを押したときに前後入れ替えて表示することができます。

837:デフォルトの名無しさん
23/01/31 15:22:58.11 M1DmxzTw0.net
>>822
出来ました、ありがとうございます!
全画面表示しかしていないので、もしかして表示/非表示にする必要は無いかもですね。

838:デフォルトの名無しさん
23/01/31 15:30:49.11 F8VbnJh50.net
>>823
多分あってます、ありがとうございます!

839:デフォルトの名無しさん
23/01/31 15:43:13.04 .net
>>823,>>819
>水(Water)のタイプをもっていて、すばやさが平均以上
>でんき(Electric)のタイプをもっていて、ぼうぎょりょくが中央値以上
全水タイプの素早さの平均値
全でんきタイプのぼうぎょりょくの中央値、なら
#消防士向きのポケモンを判定する  図鑑番号を指定して  水(Water)のタイプをもっていて、すばやさが平均以上の  ポケモンであれば、採用と表示する
target_types = ["Water"]
new_df=df[df['type'].apply(lambda x: all(value in x for value in target_types))]
m_speed=new_df["Speed"].mean()
filtered_df = new_df[new_df.apply(lambda row: all(value in row['type'] for value in target_types) and row['Speed'] >= m_speed, axis=1)]
print(f"消防士向きのポケモン: {len(filtered_df)}\n",list(filtered_df["name"]))
#発電向きのポケモンを判定する  図鑑番号を指定して  でんき(Electric)のタイプをもっていて、ぼうぎょりょくが中央値以上の  ポケモンであれば、採用と表示する
target_types = ["Electric"]
new_df=df[df['type'].apply(lambda x: all(value in x for value in target_types))]
m_defense=new_df["Defense"].median()
filtered_df = new_df[new_df.apply(lambda row: all(value in row['type'] for value in target_types) and row['Defense'] >= m_defense, axis=1)]
print(f"発電向きのポケモン: {len(filtered_df)}\n",list(filtered_df["name"]))
#typeがFireとFlyingのポケモン 6 ['リザードン', 'ファイヤー', 'ホウオウ', 'ヒノヤコマ', 'ファイアロー', 'オドリドリ']
#消防士向きのポケモン: 65
#['カメックス', 'ゴルダック', 'ニョロモ', 'ニョロゾ', 'ニョロボン', 略
#発電向きのポケモン: 27
#['コイル', 'レアコイル', 'マルマイン', 'サンダース', 'サンダー', 'デンリュウ', 'ライコウ', 略

840:デフォルトの名無しさん
23/01/31 16:34:08.98 yVHAxCVq0.net
いつまでここにコード貼り付けてるんだ?
>>1が読めないのか?

841:デフォルトの名無しさん
23/01/31 16:38:55.16 s5HjvgLO.net
fastAPIのこれが謎技術すぎて理解が追いつかない
URLリンク(sqlmodel.tiangolo.com)
要約すると
def db_session():
 with Session(engine) as session:
  yield session
session=Depends(db_session)
session.add(...)
session.add(...)
的にコードはwith構文の外に書いているのに、処理はwith内で書いたときのような効果が維持されてる(with抜けるときに勝手にsession.close()してくれるなど)、みたいな
from fastapi import Dependsってクラスか何かを通してるみたいで
URLリンク(github.com)
この辺ぽいけど見たけどよくわからなかった

842:デフォルトの名無しさん
23/01/31 18:26:25.76 Bz7d934y0.net
めっちゃ簡単に説明するとじゃ~と流せなくてちょびちょび流すようなことしてる感じかな

843:デフォルトの名無しさん
23/01/31 22:49:45.03 ElV7WbZZ0.net
>>819の者です。
多分あってるといったけど問題文にあってませんでした。
下のurlの問題について
URLリンク(dpaste.com)
しらべた末に自分なりにif inをつかったけどダメでした
正解をおしえてほしいです

844:デフォルトの名無しさん
23/02/01 01:43:38.22 .net
>>831
・水タイプ全体のすばやさの平均なのか、全ポケモンのすばやさの平均なのか
前者の”水タイプ全体の平均”とするなら
URLリンク(dpaste.com)
URLリンク(i.imgur.com)

845:デフォルトの名無しさん
23/02/01 01:50:28.37 p7QqUxzi0.net
>>832
ありがとうございます
今度こそ大丈夫そうです

846:デフォルトの名無しさん
23/02/01 06:39:17.75 4XVMJZMA.net
再現しようとしたけど断念しました >>829
#通常通りwith文のブロックの中で処理をする
URLリンク(ideone.com)
#with文から外れてwith処理をする
URLリンク(ideone.com)
withブロックに依存しないwith処理まではできたけど
その分余計なコードが増えた・・

847:デフォルトの名無しさん
23/02/01 13:32:08.04 BH4poKX+a.net
with は、Ruby のコンテキスト(文脈)マネージャーみたいな奴か?
File.open(file_path, 'w') { |io| io.write "あ" } # 書き込み
File.openにブロックを渡すと、
正常時・エラー時に、自動的にファイルを閉じてくれる機能
自分でエラー処理を書かなくてもよい


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