Pythonのお勉強 Part73

レス数が950を超えています。1000を超えると書き込みができなくなります。
1デフォルトの名無しさん (ワッチョイ f610-G7il)
垢版 |
2024/06/06(木) 08:48:10.07ID:DsazphEm0
!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のお勉強 Part72
https://mevius.5ch.net/test/read.cgi/tech/1703659345/
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
851デフォルトの名無しさん (ワッチョイ 2728-k4Tl)
垢版 |
2024/09/06(金) 17:12:45.49ID:kb80ato/0
>>850
Python落として、visual studioとあと何が必要?
852デフォルトの名無しさん (ワッチョイ 2728-k4Tl)
垢版 |
2024/09/06(金) 17:15:47.84ID:kb80ato/0
↑で紹介してくれた人、書籍出してるんだな
それも買います
2024/09/06(金) 18:29:38.57ID:B348q7Ai0
Pythonとvscodeがあればその動画の内容くらいなら十分できるだろう
2024/09/06(金) 18:30:39.41ID:060imtVw0
サプー3D前の方が好き
2024/09/06(金) 19:19:30.06ID:jTHLjygZ0
>>854
本の表紙がかわいい
2024/09/06(金) 19:48:13.50ID:PgSZcrVr0
>>844
自分が勉強した順。
PaizaというサイトでPython3に関してはある程度の部分まで無料で学べる。
講座は動画、各項目毎に小テスト。
とりあえずは環境を整えなくてもオンライン上で実行環境が用意されている。
自分はそこで最低限の文法を勉強してから他の動画やネット上のソースを見たりした。
見たソースは、最初のうちは極力ソース内のあちこちに細かく「〇〇する」とか」コメントがあるもの。
そういうものを見て「あー、この部分数行でファイルを読み込むんだ」とか、
「こうやって流れを繋げていくんだ」ってのを理解した。
2024/09/06(金) 21:20:10.00ID:060imtVw0
>>855
表紙かわいい
858デフォルトの名無しさん (ワッチョイ 277a-k4Tl)
垢版 |
2024/09/06(金) 22:41:41.57ID:kb80ato/0
みんなありがとう
色々実践してみます
2024/09/07(土) 09:57:52.65ID:wncxx9TU0
>>776を作ってみた
取得した結果を入れておく場所と、見つかったかどうかのフラグと、セマフォをglobalで共有する
フラグは本当は呼び出し側で処理したかったけど、result()を得ようとしたら終了待ちするので意味がない
履歴を記録しておくファイルもあって、その都度開いて追記して閉じる
他のスレッドと衝突しないかどうかは運次第
2024/09/07(土) 10:13:06.85ID:frLS0o200
スレッドじゃなく別プロセスでやればええんでは
ライブラリが行うプールの管理だけで済む
2024/09/07(土) 11:35:00.37ID:vd/lqcQo0
それな
おれも普通にプロファイル作ってるわ
ただ1プロファイルにつきたしか600MBくらい使ったけど
2024/09/07(土) 12:27:26.22ID:wncxx9TU0
プロセスを別にするのは重い計算とかでCPUコアを分けたい時で、
ネットワークの待ち時間の間に他のことをしたいだけなのでスレッドでいい
2024/09/07(土) 13:58:10.84ID:j/xwjrvk0
>>859
そんなことしなくてもselenium grid使えば全部自動でやってくれるぞ
自前実装したいのなら勝手にやればいいけど
2024/09/07(土) 16:04:12.37ID:frLS0o200
>>862
マイコンやキオスク端末ならわかるけど
デスクトップOSなんてプロセス無数に動いてる
コンテキスト切り替えが多発したりリソース気にするんじゃなけれりゃ
たいしてスレッドにこだわる意味はない
Chromeもプログラム構成優先してがんがんプロセス生成してる
2024/09/07(土) 16:47:27.15ID:wncxx9TU0
別に拘りは無い
どっちでも同じ
コード上もThreadPoolExecutorをProcessPoolExecutorと書き換えるだけ

実際の中身の処理はかなり変わるけど、どっちにしろ待ち時間が大半なので何も変わらない
processである必要が無いのにprocessにしてあると、なんで???と思われるだけ
2024/09/07(土) 18:09:51.60ID:Zt7rxXUV0
seleniumは並行に大量のページにアクセスするのには向かない
I/O待ちでもブロッキングするしかなくセッション単位で別のブラウザーインスタンスが必要だからリソース馬鹿喰い

今は代替ツールがあるので新しく書くコードならそっちを使う
2024/09/07(土) 18:49:21.06ID:wncxx9TU0
seleniumは多重処理関係なく重いというか大げさだけどね
本物のブラウザそのものだし

互換品や簡易版で動くようなサイトなら、最初からrequestsで済ませるけど、
本物じゃないと動作が怪しいなら本物を使うしかない
2024/09/07(土) 19:00:23.61ID:zesuODdH0
はやさなら
パンダ<美汁<セレン
2024/09/07(土) 19:01:17.02ID:zesuODdH0
間違った反対
2024/09/07(土) 19:14:37.88ID:wncxx9TU0
重いだけで済むんだから楽なもん
perlでmechanizeとか紹介されてて、なんか便利そうだと思って使ってみても、
便利でも何でもない
スクリプトとかあったら人間が解析しないといけない

selenium使ってさえ、取得したpage_sourceがスクリプトの塊で、
謎に分割されてたり、jsonっぽいけどjsonじゃなかったり、
スクレイピング避けのいたちごっこが続いている
2024/09/07(土) 19:18:50.68ID:zesuODdH0
デスクトップ上の座標でクリックしてけばいい
2024/09/07(土) 21:26:28.97ID:o9ae9Qt50
seleniumでウェブの操作を行うプログラムを持っているのですが、おそらくグーグルchromeのアップデートが原因で動かなくなりました
実行後、何も処理せずに落ちてしまうのでエラー内容すら見られません
chromeのバージョンは128.0.6613.120
chromeドライバーのバージョンは128.0.6613.119の32bitです
ドライバーを旧バージョンから最新バージョンに上書きするだけではダメなんですかね?
2024/09/07(土) 21:29:26.91ID:wncxx9TU0
実際に使ってるブラウザとseleniumのドライバを合わせないといけない
みたいな努力は割と前に不要になった
2024/09/07(土) 22:06:17.62ID:o9ae9Qt50
エラーのスクショが撮れました
何が悪いのか分かる方いたらご教示お願いします
https://i.imgur.com/Jqpd9a5.png
2024/09/07(土) 22:08:24.32ID:wncxx9TU0
from selenium import webdriver
with webdriver.Chrome() as driver:
みたいに書く
2024/09/07(土) 22:22:51.02ID:o9ae9Qt50
>>875
その2行目を付け足したら速攻で落ちるようになりました…
webdriver.Chrome()の()の中に、
エラー画像の4行目のservice=ChromeServiceなんたらかんたらをいれるのかな?とよく分からないながらやってみても変わらず
2024/09/07(土) 22:28:17.17ID:2iOJWTB70
>>867
>>866に書いてること1ミリも理解してなくて草

普通にブラウザ使ってれば
あるサイトのリクエスト完了を待ってる間に
違うタブで別サイトにリクエストを出すことができることくらいはわかるよね?

seleniumではそれが出来ない
同じことを達成したければ一つ一つ別プロファイル作って
専用のブラウザインスタンスを立ち上げないといけない

seleniumだけでなくrequestsもmechanizeも全部非同期に対応してないので
量をさばく必要がある場合に使う道具ではなくなってる
2024/09/07(土) 22:39:22.70ID:o9ae9Qt50
>>872のソースはこれです
コードは極力削っています
https://i.imgur.com/kgfDXeE.png
2024/09/07(土) 23:50:08.25ID:57KCZCA60
>>878
同じバージョンだけど動いてyahoo見れるな…
2024/09/08(日) 03:12:08.34ID:5mVESwIRr
>>879
マジですか…
数か月くらい動かしていない期間があって、久しぶりに昨日動かそうとしたらエラーが出て…
WinError 193の対処法として紹介されていた、
service = ChromeService(ChromeDriverManager().install())によって作成されるChrome Driverのキャッシュを消すというものも効果なし
それ以外のエラーはよく分からず
2024/09/08(日) 09:00:49.72ID:6sSIgrGd0
>>880
その記述って自動で適切なChromeDriverをダウンしてきてくれるみたいだけど、出てるエラーはChromeDriverと合ってないから実行できないよ、っていう事らしい。
自動で上手くいかずキャッシュを消してもダメなら自動を止めて、ChromeDriverの各バージョンを片っ端から手動でダウンして試してエラーの出ないchromedriver.exeをどこかのフォルダに置いといて直接指定すれば良いのでは?と思うけどそれじゃダメなの?
2024/09/08(日) 11:55:48.02ID:r0meOORq0
>>874
webdriver_managerのバージョンも最新に
2024/09/08(日) 16:48:39.72ID:FaHdpY160
それね
俺も先月業務アプリが動かなくて困った記憶あるわ
結論から言うとwebdriver_managerはもういらない
selenium単独で自動的に最新のdriverを取得することができるみたい

```
from selenium import webdriver

options = webdriver.ChromeOptions()
'''オプションがあれば追加'''
options.add_argument('--start-maximized')

driver = webdriver.Chrome(options=options)

try:
driver.get("http://google.co.jp";)

except Exception as e:
print(e)

finally:
driver.quit()
```
2024/09/08(日) 16:55:04.68ID:FaHdpY160
ちなみにSeleniumバージョン4.6以上が必要らしいので注意ね

ここを参考にするといいよ
https://yuki.world/python-selenium-chromedriver-auto-update/
885デフォルトの名無しさん (ワッチョイ 911d-sF61)
垢版 |
2024/09/08(日) 18:21:21.76ID:ZvPXoPz+0
>>839
で色々とアドバイスもらった者です

サプーさんの書籍も購入したんだけど,ある程度、初心者を抜けるか抜けないかの人向けだね、これ

ほんとにプログラミングについては知識ゼロなので、動画以外でこの前段階の超入門書みたいなのでオススメあれば教えていただきたい
2024/09/08(日) 18:31:43.56ID:zGDX69KT0
サプー動画の最初の方は、これ以上ないくらい初心者向けだろう
さすがに見てないので判り易いかどうかは知らない
887デフォルトの名無しさん (ワッチョイ 911d-sF61)
垢版 |
2024/09/08(日) 18:36:54.21ID:ZvPXoPz+0
>>886
とりあえず2時間のやつで雰囲気掴んだ後に、どれを見ればいいのかわかんないのよね…

あと書籍っていうある程度まとめて基礎の基礎何詰まってるモノが欲しいんだ
いつでも読めるように
888デフォルトの名無しさん (ワッチョイ 911d-sF61)
垢版 |
2024/09/08(日) 18:40:19.95ID:ZvPXoPz+0
プログラムはできるだけシンプルで、うまく動かなかったり不具合出た時に、他の人でも修正位置がわかりやすく、後から機能を追加しやすいフレキシブルなモノが良いってのはなんとなくわかるのよ…

まず、それを書く知識が全くと言っていいほどないんだよね🙃
889デフォルトの名無しさん (ワッチョイ 911d-sF61)
垢版 |
2024/09/08(日) 18:42:15.28ID:ZvPXoPz+0
なので、どの動画が自分の欲しい情報解説してあるモノなのかの判断もつかない状態です
890デフォルトの名無しさん (ワッチョイ 8aa5-f0zi)
垢版 |
2024/09/08(日) 18:45:56.99ID:nFVqfsuv0
>>889
さっさと実務をやった方がいいです。
ダサいコードが仕様変更に耐えられるコードです。
891デフォルトの名無しさん (ワッチョイ 911d-sF61)
垢版 |
2024/09/08(日) 18:47:04.49ID:ZvPXoPz+0
>>890
とりあえず組みたいプログラムに取り掛かれって事?
2024/09/08(日) 18:47:11.49ID:zGDX69KT0
https://www.youtube.com/watch?v=tCMl1AWfhQQ
2時間てこれか
いいのあるじゃん

これでオリエンテーションは終わりなので、あとは好きなことをやればいい
893デフォルトの名無しさん (ワッチョイ 8aa5-f0zi)
垢版 |
2024/09/08(日) 18:47:19.73ID:nFVqfsuv0
書籍を書いているのはプロじゃないので、モジュールの切り出しすらも説明していない。
894デフォルトの名無しさん (ワッチョイ 8aa5-f0zi)
垢版 |
2024/09/08(日) 18:48:20.74ID:nFVqfsuv0
>>891
自分自身が使うものを作る。あとから変えようとしたときにこう作るんじゃなかったと気づく。
895デフォルトの名無しさん (ワッチョイ 8aa5-f0zi)
垢版 |
2024/09/08(日) 18:50:05.63ID:nFVqfsuv0
実務の意味がわからないというのは学生なのかな?
896デフォルトの名無しさん (ワッチョイ 911d-sF61)
垢版 |
2024/09/08(日) 18:50:58.16ID:ZvPXoPz+0
>>895
プログラミングの用語とかも知らんのです
2024/09/08(日) 18:53:49.27ID:SEDRCJr/0
全くのプログラミング初心者なら
「プログラムはなぜ動くのか」
辺りかな
898デフォルトの名無しさん (ワッチョイ 911d-sF61)
垢版 |
2024/09/08(日) 18:57:59.46ID:ZvPXoPz+0
>>892
これは↑でオススメしてもらった
これを繰り返し見つつ、同時進行していく感じかー

ありがとう
実践しながらやってみるわ

最初の方から結構「???」ってなる部分も多いんだんだけどもw
899デフォルトの名無しさん (ワッチョイ 911d-sF61)
垢版 |
2024/09/08(日) 19:02:39.95ID:ZvPXoPz+0
>>893
なんか良い、こんなオレでも比較的理解できる良い書籍あります?
2024/09/08(日) 19:24:36.64ID:6sSIgrGd0
>>889
>どの動画が自分の欲しい情報解説してあるモノなのかの判断もつかない状態

>>856読んで貰えてないんだね。
Paizaってサイトではそういう人でも分かるように順序立てて基本的な文法を動画で解説してくれてる。
他の言語の場合は冒頭のみであとは有料だけど、Pathon3だけはある程度の部分まで無料公開してくれてる。
ここで無料公開分を全部終了できれば初心者向けの動画とか解説サイトとかもそれなりに理解できるようになると思う。
お金掛からないしとりあえずやってみたら?
901デフォルトの名無しさん (ワッチョイ 911d-sF61)
垢版 |
2024/09/08(日) 19:26:21.18ID:ZvPXoPz+0
>>900
呼んだっす!
コピペして、学ぶ順序のリストにさせてもらった
902デフォルトの名無しさん (ワッチョイ 911d-sF61)
垢版 |
2024/09/08(日) 19:30:52.42ID:ZvPXoPz+0
助言で具体的なものは全て書き出したり、登録、購入検討してる

ただ昨日の今日で、サプーさんの書籍も今目を通したとこなので、リストの優先順位を判断できてなくて
2024/09/08(日) 19:31:24.09ID:SLqL4HNM0
>>881,882,883
ありがとうございます!
時間あるときにチャレンジしてみます!
904デフォルトの名無しさん (ワッチョイ 911d-sF61)
垢版 |
2024/09/08(日) 19:38:08.04ID:ZvPXoPz+0
>>900
サプーさんの2時間の動画見ても、結構「???」なとこ多くて、書籍はまだ理解できるレベルじゃないものだったので、Paizaってサイトに挑戦してみます

詳しくレスしてくれてありがとう
2024/09/08(日) 22:39:01.10ID:zGDX69KT0
何か裏で処理させてて、完了したらポップアップで知らせたい
それだけなら方法はいくらでもあるけど、
よし判ったとEnter一発で閉じたい
でもポップアップにフォーカスが無いので、いろいろ面倒くさい
ポップアップの位置もど真ん中に出ると邪魔なので端に寄せたい
でも tkinter でどう頑張ってもそんなことできない
2024/09/08(日) 23:07:02.96ID:FaHdpY160
ずっと画面見てる前提なら数秒したら消す処理すりゃいいんじゃない?
2024/09/08(日) 23:08:52.84ID:zGDX69KT0
そんな前提は無い
2024/09/08(日) 23:17:36.18ID:zRsEDrHt0
toastとかOS標準のnotificationを使えばいい
キーボードショートカットも用意されてる
2024/09/08(日) 23:26:26.06ID:zGDX69KT0
win11toastもinputがあってさえフォーカスは来てないな
2024/09/08(日) 23:46:26.14ID:zGDX69KT0
結局、powershellのPopupをsubprocess.runで呼び出すのがベスト
それで可能なのは最初から判ってたけども

os寄りの処理って互換性とか無視してosべったりで作った方が幸せになれる
2024/09/09(月) 05:00:01.20ID:i0341ZB+0
そこはWin32APIを呼び出したほうが親和性が高いだろう
windowsアプリと同じ見てくれ、ふるまいになるし、
デフォルトボタンやフォーカスは確実に有効にできる
2024/09/09(月) 14:54:53.83ID:iWr3h1fB0
中央だと邪魔だから端に表示するような種類のポップアップで強制的にフォーカス奪っだらダメだろ
個人専用なら好きにすればいいが他人に使わせるアプリでは絶対やってはいけないパターン
2024/09/09(月) 15:25:57.69ID:M6TEicyP0
ポップアップの位置を変えるようなことは、Win32 API使っても無理な気がする
標準に似せたものを自前で作るしか
914デフォルトの名無しさん (ワッチョイ 8aa5-f0zi)
垢版 |
2024/09/09(月) 17:58:31.91ID:XsanjNXu0
WindowsアプリをPythonで作るな!
2024/09/09(月) 19:59:54.08ID:WqKgF9CS0
カラスの勝手でしょぉ♪
916デフォルトの名無しさん (アウアウエー Sa52-t/33)
垢版 |
2024/09/09(月) 21:10:41.86ID:6U3TxPzTa
ただでさえPOPUPはTOPMOSTにしない方が良いのに
TOPMOSTにした上でENTERで反応するPOPUPなんて百害あって一理無しよ
2024/09/09(月) 21:29:34.03ID:M6TEicyP0
謎にエスパーされてるけど、topmostが目下の課題
powershellからWScript.ShellのPopupを呼び出すと、
フォーカスは奪ってくれるけどtopmostではない
全画面で動画見てると音はするけど視覚的には気付かない
フォーカスがあってかつtopmostというのがやりたい処理なのに
2024/09/09(月) 21:33:40.24ID:+To1Amul0
表示はOSの通知にして
EnterはUIにフォーカスさせるのではなくキー入力をジャックする
2024/09/09(月) 21:40:36.79ID:wEgLJ8040
きっとそのうちEnterで消すのがうざくなる…
2024/09/09(月) 22:59:51.52ID:i0341ZB+0
>>917
"ctypes.windll.user32.MessageBoxW"で
MB Typeに"0x40000"を与えれば"MB_TOPMOST"になる

>>914
普段はコンソールを立ち上げずにこっそり実行
エラーとか、対話が必要なときだけポップアップが出るようにするのには有用なんだよ
no_consoleモード+ポップアップはそんな目的にはぴったりだし
2024/09/09(月) 23:24:20.06ID:M6TEicyP0
0x40000足せばいいだけだったのか
もう殆ど手が届いてたんだな
262144でかすぎひん
2024/09/09(月) 23:50:28.10ID:M6TEicyP0
bit毎に意味があるんじゃなくて、nibble毎に割り振ってるんだな
不思議な設計
2024/09/10(火) 09:46:51.62ID:V/5rRVOx0
bit毎に意味あるだろ
bit fieldでググってこい
924デフォルトの名無しさん (アウアウエー Sa52-t/33)
垢版 |
2024/09/10(火) 13:11:16.09ID:KGjTz1X0a
+で良いと思ってる人間と|だろうなと思ってる人間は雲泥の差がある
2024/09/10(火) 21:10:56.22ID:sQRxeMB30
>もう殆ど手が届いてたんだな
これジョークじゃなきゃキッツいな
926デフォルトの名無しさん (ワッチョイ aaae-voeu)
垢版 |
2024/09/13(金) 14:57:50.02ID:HD5QYSk40
OpenAIが複雑な推論能力をもつAIモデル「OpenAI o1」と「OpenAI o1-mini」を発表、プログラミングや数学で高い能力を発揮
https://gigazine.net/news/20240913-openai-o1/
2024/09/13(金) 15:23:01.98ID:Ri3tNWi30
>>926

すごいな
天才プログラマーか
2024/09/13(金) 21:29:13.87ID:jtrlU5c10
何かあった時に失われるのが嫌なので、
ログとか出力する時に1行毎にopenして書いて閉じてるけど、
flush=True を付けるのと違いあるんだろうか
2024/09/13(金) 21:34:14.83ID:jtrlU5c10
違いあるんだろうかシリーズ
リストをソートしたいと思った時、ふつーに
l = sorted(l)
と書いたけど、そういえば l.sort() という方法もあった
気持ち悪いので本能的に避けたいけど、わざわざ用意されてるメリットって何だろう
計算コストは同じな気がする
2024/09/13(金) 22:31:20.25ID:C+esSXth0
同じじゃない
くだすれ行け
931デフォルトの名無しさん (ワッチョイ f9bf-BHET)
垢版 |
2024/09/13(金) 22:35:10.99ID:3+j4DpP00
>>929
一般的には追加のメモリ確保をしない l.sort() の方が効率的
l を再代入してるから分かりにくいけど、ソート結果は元の l とは別の領域に作られてる
これは、k = sorted(l) と書いた時にソート前後の両方のリストがオブジェクトとして存在することからも分かると思う
(l = sorted(l) は、追加のリストを作ったあとに l の参照先を新しいものに置き換えてる)

l.sort() だと元々あった l の領域内でソートされるので、追加のメモリ確保がいらない

要素数が小さいと気になることは無いと思うけど、例えば要素が10万個とかある場合だとだいぶ差が出ると思う
2024/09/13(金) 23:01:27.70ID:jtrlU5c10
メモリ確保するのってそんなに重い処理なの?
933デフォルトの名無しさん (ワッチョイ f9bf-BHET)
垢版 |
2024/09/13(金) 23:50:13.06ID:3+j4DpP00
>>932
一般的には重い処理
とはいっても、小さな量だと問題にならない
例えば画像処理の分野で、HDや4Kサイズの画像を1000枚処理したいといった話だと、メモリを毎回確保するか一度だけ確保したものを使い回すかで処理時間はだいぶ変わる (体感できるくらいに)
2024/09/13(金) 23:57:27.00ID:jtrlU5c10
なるほどー
Cの時点でmallocが具体的に何してるか知らんしな
既に連続した空き容量があって割り当てるだけなら一瞬だろうけど、
いろいろ地上げしたり大変なんだろう
2024/09/14(土) 00:15:53.13ID:ed1VLorT0
まとまった容量ならsbrk()使えって言われなかった?
2024/09/14(土) 00:43:58.26ID:uwwiah/a0
メモリ確保はO(n)でソートは下手したらO(n^2)だから、
nが大きいほどトータル処理時間に占めるメモリ確保の割合はむしろ小さくなるのでは
2024/09/14(土) 02:05:41.53ID:xMffrK+40
>>936
その2つのnは全く別のものだろ
アホか
2024/09/14(土) 06:27:04.06ID:uwwiah/a0
nが小さい場合:
メモリ確保の比率は大きいけどどうせ一瞬だから気にしない
nが大きい場合:
メモリ確保にも時間かかるけど、ソート時間が圧倒的だから気にしない

結局、気分の問題だけど、
破壊的な操作が嫌とか言ったらappend()とかできないし、
ミュータブルはそういうものと思うしか
939デフォルトの名無しさん (ワッチョイ f99f-BHET)
垢版 |
2024/09/14(土) 07:44:59.11ID:c0KErmyP0
ソートのコストとメモリ確保のコストは別々にかかるものだし、減らせるなら減らした方が良いと思う
自分のプログラムが扱うデータが小さくてsortedでもほぼ変わらないなら、こちらでも良い
自分も書き方自体は sorted の方が好きだし小さいプログラムならこちらを使ってるけど、そこは好みの問題なのでお好みで
940デフォルトの名無しさん (アウアウエー Sa52-t/33)
垢版 |
2024/09/14(土) 13:33:03.30ID:o3f0Ddoea
l.sort() はみみっちい領域でやりくりする分アルゴリズムは遅くなりそう
l = sorted(l) あるいは k = sorted(l) が富豪的で結果的に速い可能性はある
2024/09/14(土) 14:16:06.35ID:tQni2TQM0
メモリ使いまくりはキャッシュ効率下がるから
一律に富豪が強いとは限らない
使うしかない時は強いけど
2024/09/14(土) 14:50:34.43ID:aiF3uBwH0
>>940
可能性無いよ
sorted()は内部でlist.sort()の実装を呼び出してる

ざっくり言えば
new_list = list(original_list)
new_list.sort()
return new_list
2024/09/14(土) 16:15:00.42ID:uwwiah/a0
for item in sorted(l):
とやるよりも
l.sort()
for item in l:
の方が速い、みたいな話

明示的にしろ暗黙にしろ、オブジェクトのコピーにいちいち気を使いたくない
コピーするだけで時間がかかるようなオブジェクトになりそうなら、
最初からそうならない実装にする
2024/09/14(土) 19:29:07.00ID:WN+ppFgMr
seleniumのxpathについて質問です
5chの書き込み欄のxpathを確認し、
driver.find_element(By.XPATH, '//*[@id="js-postform_message"]').click()
と書いたのですが、プログラムを実行するとxpathが存在しないパターンの動作をしてしまいます
ブラウザでF12キーを押し、書き込み欄をクリックしてxpathをコピーするというよくある方法を使っているのですが、これではダメなんですかね?
2024/09/14(土) 19:38:44.99ID:uwwiah/a0
driver.page_source を保存しておいて解析する
2024/09/14(土) 19:50:56.07ID:uwwiah/a0
書き込みボタンは
//*[@id="js-postform_submit"]
で、
//*[@id="js-postform_message"]
は書き込み欄なので、clickではなくsend_keys
2024/09/14(土) 20:01:37.67ID:reS5hF+Mr
ありがとうございます
send_keysは別の行にあります
一応clickの部分は行ごと消しましたがやはりダメですね…
2024/09/14(土) 20:51:28.72ID:reS5hF+Mr
エラーをちゃんと見られるようにしたら、
name 'By' is not defined
と出ました
また要素関係の書き方が変わったんですかね?
以前は上記の
driver.find_element(By.XPATH, '//*[@id="js-postform_message"]')
という書き方で動いていたのですが…
書き方変更などの情報はどこで入手するのか…
2024/09/14(土) 20:56:59.72ID:hpW9Sln40
from selenium.webdriver.common.by import By
2024/09/14(土) 20:58:25.69ID:reS5hF+Mr
>>949
ありがとうございます!解決しました!
それをコメントアウトしてしまっていました…
2024/09/16(月) 15:32:29.19ID:JFhhEPMwd
pandasやべえな
マジで融通効かねえ
おなえらよくこんなもん使ってるな
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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