!extend:default:vvvvv:1000:1024
↑スレ立てる毎に減るので、減ってたら3つに補充すること。
・当スレにRubyのソースコード類を書くことを禁ず
・Ruby等、Pythonではないプログラミング言語での回答類・質問を書くのも禁止
・「Ruby では」「Rubyでは」「Rails」正規表現→「^クソチョンw$」をNGワード登録推奨
・エラーを解決したいときは、かならず
エラー文(勝手に省略orスクショうp等の横着禁止)と
おま環(Pythonのバージョン番号+OS名とバージョン+IDE名)を書け。
★Pythonのソースコードを5ちゃんに直貼はインデントが崩壊するので、
↓等のコードうp用サイトに貼ってきてくだしあ。(スクリーンショットをうpる「横着」禁止)
ttps://techiedelight.com/compiler/ Run Code機能あり。
ttp://ideone.com/ デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。
ttp://pastebin.com/ まずまずシンプル。
ttp://dpaste.com/ とてもシンプル。消えるまでの日数は十分長ーく指定のこと。
◇Pythonオフィシャルサイト http://www.python.org/
◇Pythonドキュメント https://docs.python.org/ja/3/
◇まとめwiki ttp://python.rdy.jp/
●関連スレ● 自称初心者は↓へ
【まず1嫁】くだすれPython(超初心者用) その58
https://mevius.5ch.net/test/read.cgi/tech/1662514433/
〇前スレ〇
Pythonのお勉強 Part68
https://mevius.5ch.net/test/read.cgi/tech/1663235546/
次スレの建立は>>985が挑戦する。(980通過して24h後も落ちなくなった)
### END of TEMPLATE ### ?
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
探検
Pythonのお勉強 Part69
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ c733-stRS)
2022/11/24(木) 21:39:44.67ID:A6xfpKBe02デフォルトの名無しさん (ワッチョイ ef33-stRS)
2022/11/24(木) 22:06:48.23ID:A6xfpKBe0 何か最後に?ついてるんやけど
3デフォルトの名無しさん (アウアウウー Sa3b-t8YJ)
2022/11/25(金) 00:11:23.76ID:2/ccX3XOa >>1
O₂🍛
O₂🍛
4デフォルトの名無しさん (アウアウウー Sa3b-kfYZ)
2022/11/25(金) 12:28:38.81ID:PV2ZG9bua スレ埋めるだけの簡単なお仕事です
5デフォルトの名無しさん (ワンミングク MM92-IwB9)
2022/11/25(金) 13:32:24.92ID:KAp4t6I3M スコップ一本さらしにまいて♪
6デフォルトの名無しさん (ブーイモ MM3e-7Dqo)
2022/11/25(金) 20:28:02.56ID:Ex0f5l5+M 今日もNullpoを葬る~♪
7デフォルトの名無しさん (ワッチョイ b7da-Qvc3)
2022/11/27(日) 22:00:34.60ID:6go5tzEb0 LSTMで全部で1000あるデータの、1001期目の予測値を得るにはどうすれば良いですか
どのサイトを見ても検証期間中の予測値は得られても、それより先の予測を得る手段がいまいち分かりません
どのサイトを見ても検証期間中の予測値は得られても、それより先の予測を得る手段がいまいち分かりません
8デフォルトの名無しさん (ワッチョイ ff63-RPwI)
2022/11/27(日) 22:12:17.80ID:7lw/d0vw0 「そんな先のことは分からない」
9デフォルトの名無しさん (ワッチョイ b7da-Qvc3)
2022/11/27(日) 22:35:08.90ID:6go5tzEb0 無事解決しました
10デフォルトの名無しさん (アウアウウー Sa5b-j/58)
2022/11/28(月) 10:29:47.82ID:kuSQgmzBa テンプレのrubyでは~に時代を感じるな
11デフォルトの名無しさん (ワッチョイ bf89-t+XA)
2022/11/28(月) 12:15:33.61ID:2MZJX1kl0 Twitterのエゴサをpythonでできないかなと思って
seleniumでやってみたけど画面上は表示されてるのに
ソースには「JavaScriptを使用できません。」と出る
どうすりゃいいんや…
seleniumでやってみたけど画面上は表示されてるのに
ソースには「JavaScriptを使用できません。」と出る
どうすりゃいいんや…
12デフォルトの名無しさん (ワッチョイ ffbb-rfgC)
2022/11/28(月) 13:04:31.73ID:QxjFh41D0 >>11
せめて日本語が読めるようになってから手を出せ。あほ
せめて日本語が読めるようになってから手を出せ。あほ
13デフォルトの名無しさん (ワッチョイ bf89-t+XA)
2022/11/28(月) 15:59:10.98ID:2MZJX1kl0 実行して立ち上がったブラウザではTwitterが表示されている
つまりJavaScriptは実行されている
にもかかわらずpython内では実行されていないソースコードが表示される
JavaScriptが実行された後のソースコードを取得するにはどうするといいでしょうか?
つまりJavaScriptは実行されている
にもかかわらずpython内では実行されていないソースコードが表示される
JavaScriptが実行された後のソースコードを取得するにはどうするといいでしょうか?
14デフォルトの名無しさん (ワッチョイ 9f2a-+r4L)
2022/11/28(月) 19:04:45.26ID:v7hHcTqw0 webdriverのインスタンスを作るときにjavascriptをenableにしてないとか
ページの生成が終わるのを待たずにhtml読んでしまっているとか
ページの生成が終わるのを待たずにhtml読んでしまっているとか
15デフォルトの名無しさん (ワッチョイ bf89-t+XA)
2022/11/28(月) 20:47:02.50ID:2MZJX1kl0 >>14
ありがとうございます。
オプションに「options.add_argument('--enable-javascript')」を追加したり
time.sleep(15)も追加しましたが駄目でした。
ありがとうございます。
オプションに「options.add_argument('--enable-javascript')」を追加したり
time.sleep(15)も追加しましたが駄目でした。
16デフォルトの名無しさん (ワッチョイ bf89-t+XA)
2022/11/28(月) 21:06:19.85ID:2MZJX1kl0 JavaScriptが反映されていないのが原因だと思うので
そのあたりをもう少し調べてみます。
そのあたりをもう少し調べてみます。
17デフォルトの名無しさん (ワントンキン MM7f-Znd8)
2022/11/28(月) 21:07:26.37ID:cGJ8oXTgM18デフォルトの名無しさん (アウアウウー Sa5b-tkFl)
2022/11/28(月) 21:26:56.65ID:6X8/W5dUa ソース出さないで言ってもわからんぞ
19デフォルトの名無しさん (ワッチョイ d733-Z2Iz)
2022/11/28(月) 22:48:45.25ID:g0wreZ1J0 こういうの見て思うんだけど、スクレイピングの参考書ってAPIへの誘導ってないの?
プログラミングもWebの知識もない人間にスクレイピングだけでやらせようとするのってだいぶ罪深いと思う
それに、Webの勉強するのにスクレイピングやブラウザでアクセスしながらって相当な悪手だろ
普通簡単なWebサイト作りながらとか構築する側の立場で進めた方が効率いいし、それでもボリューム的に片手間で済むようなもんでもないでしょ
プログラミングもWebの知識もない人間にスクレイピングだけでやらせようとするのってだいぶ罪深いと思う
それに、Webの勉強するのにスクレイピングやブラウザでアクセスしながらって相当な悪手だろ
普通簡単なWebサイト作りながらとか構築する側の立場で進めた方が効率いいし、それでもボリューム的に片手間で済むようなもんでもないでしょ
20デフォルトの名無しさん (ワッチョイ ff63-RPwI)
2022/11/28(月) 22:54:19.81ID:TOwN4nTg0 そういう参考書を作ってあげて
21デフォルトの名無しさん (ワッチョイ ffcf-ykd8)
2022/11/28(月) 22:59:12.17ID:LDNjf6uN0 Webプログラミングと言えば
情報を発信するか集めるか、まあどっちかだしな
情報を発信するか集めるか、まあどっちかだしな
22デフォルトの名無しさん (ワッチョイ 9f2a-+r4L)
2022/11/28(月) 23:02:43.25ID:v7hHcTqw0 >>19
全くもっておっしゃるとおりだと思うけど、静的なサイトだとBeautifulsoupとかで見よう見まねでできちゃったりするから素人さんにもキャッチーなのよね
http通信とは?とかWebサーバーの仕組みとは?から入ると素人は力尽きちゃう
全くもっておっしゃるとおりだと思うけど、静的なサイトだとBeautifulsoupとかで見よう見まねでできちゃったりするから素人さんにもキャッチーなのよね
http通信とは?とかWebサーバーの仕組みとは?から入ると素人は力尽きちゃう
23デフォルトの名無しさん (ワッチョイ 1797-QUc+)
2022/11/29(火) 01:26:48.72ID:wVUySIDy0 >>19
APIはAPIで辛くない?認証不要APIとかだったらいいけど、大体お作法を調べるのに時間かかる。
スクレイピングは、HTML/CSSやったことあるならわかる感じがする。RPAみたいなものかなと。
いや逆にRPAこそGUIの知識いるしAPI整備してもらってやったらいいじゃんと思うんだけど、API整備の予算が付かないんだろうね…
APIはAPIで辛くない?認証不要APIとかだったらいいけど、大体お作法を調べるのに時間かかる。
スクレイピングは、HTML/CSSやったことあるならわかる感じがする。RPAみたいなものかなと。
いや逆にRPAこそGUIの知識いるしAPI整備してもらってやったらいいじゃんと思うんだけど、API整備の予算が付かないんだろうね…
24デフォルトの名無しさん (ワッチョイ ff63-odCL)
2022/11/29(火) 01:43:32.73ID:fkaofXgI0 スクレイピングって、ウェブブラウザの振る舞いを模倣すればいいのと違うん?
25デフォルトの名無しさん (ワッチョイ 9f2a-+r4L)
2022/11/29(火) 07:37:52.82ID:NO7HG1hV0 >>24
今どきのブラウザは巨大アプリの筆頭みたいなもんなので簡単にエミュレートできないのさ
なのでjavascriptで自分を書き換えたりするサイトをスクレイピングするにはブラウザそのものを立ち上げて外部からブラウザに今どう表示してんのと聞くほうがいいわけ、それがSeleniumという仕組み
今どきのブラウザは巨大アプリの筆頭みたいなもんなので簡単にエミュレートできないのさ
なのでjavascriptで自分を書き換えたりするサイトをスクレイピングするにはブラウザそのものを立ち上げて外部からブラウザに今どう表示してんのと聞くほうがいいわけ、それがSeleniumという仕組み
26デフォルトの名無しさん (テテンテンテン MM8f-Ww1B)
2022/11/29(火) 08:28:45.05ID:rvct1gbBM カールで取るかAPIでとった方が早いだろ
27デフォルトの名無しさん (ワッチョイ d72c-/LaG)
2022/11/29(火) 10:28:54.87ID:Zdiz5UrS0 アホがいきなり動的生成サイトにwhile無限アタックをしかけるまである
悪いのは無責任な企業系入門サイトと、ライブラリ豊富なpython
悪いのは無責任な企業系入門サイトと、ライブラリ豊富なpython
28デフォルトの名無しさん (ワッチョイ 775f-4gln)
2022/11/29(火) 10:35:59.05ID:oFH75lpf0 >>25
おまけにブラウザごとに挙動が大きく変わるから、ややこしい!
おまけにブラウザごとに挙動が大きく変わるから、ややこしい!
29デフォルトの名無しさん (ワッチョイ ffbb-NZIw)
2022/11/29(火) 11:42:39.57ID:JTTSm0Nf0 初級者がスクレイピングやるなら、先にネット倫理から勉強してほしいところ
30デフォルトの名無しさん (テテンテンテン MM8f-Ww1B)
2022/11/29(火) 12:06:36.59ID:oHPPEt2oM 初級者が考えるような事は調べりゃ出てくる
初級者は検索して自己解決に導けないならあきらめた方が良い
初級者は検索して自己解決に導けないならあきらめた方が良い
31デフォルトの名無しさん (ワッチョイ ff63-RPwI)
2022/11/29(火) 12:12:16.73ID:OkL5Yz/20 Twitterなら、API利用から始めると楽だと思う
32デフォルトの名無しさん (ワッチョイ ff63-odCL)
2022/11/29(火) 12:12:24.76ID:fkaofXgI0 >>25
単純化すると
ウェブブラウザみたいに、サイト開いてAPI叩いてデータ(JSONが主流になったね)拾って、
これをパースして個別データとして取り込んで、ってことだよね
これってウェブブラウザの振る舞いを模倣していることにならないのかな?
単純化すると
ウェブブラウザみたいに、サイト開いてAPI叩いてデータ(JSONが主流になったね)拾って、
これをパースして個別データとして取り込んで、ってことだよね
これってウェブブラウザの振る舞いを模倣していることにならないのかな?
33デフォルトの名無しさん (ワッチョイ d74f-emCW)
2022/11/29(火) 12:12:37.05ID:Rlb9t/Eq0 たいてい、スクレイピングの本には、図書館へスクレイピングして、
サーバーを落とした香具師が、業務妨害で逮捕された事件も書いてある。
だから必ず、契約してAPI を使うように書いてある
あくまで練習用に、自分のPC 内のウェブサーバーへアクセスして試すべき。
VSCode の拡張機能・Live Server で、簡単にサーバーを起動できる
そこに対して、curl, wget, Selenium Webdriver などで試す
基本的に、ほとんどのサイトは、5ch みたいに先にHTML を送っておいて、
その中で、Ajax(JavaScript)によって内容をサーバーへ取りに行くので、
Selenium で実際のブラウザを使って、wait しないと内容を取れないはず
サーバーを落とした香具師が、業務妨害で逮捕された事件も書いてある。
だから必ず、契約してAPI を使うように書いてある
あくまで練習用に、自分のPC 内のウェブサーバーへアクセスして試すべき。
VSCode の拡張機能・Live Server で、簡単にサーバーを起動できる
そこに対して、curl, wget, Selenium Webdriver などで試す
基本的に、ほとんどのサイトは、5ch みたいに先にHTML を送っておいて、
その中で、Ajax(JavaScript)によって内容をサーバーへ取りに行くので、
Selenium で実際のブラウザを使って、wait しないと内容を取れないはず
34デフォルトの名無しさん (ワッチョイ ff63-RPwI)
2022/11/29(火) 12:24:13.36ID:OkL5Yz/20 >>33
落としたことにされた人には、図書館も開発元の三菱情報システムも、謝罪しているけどね
落としたことにされた人には、図書館も開発元の三菱情報システムも、謝罪しているけどね
3533 (ワッチョイ d74f-emCW)
2022/11/29(火) 12:26:22.23ID:Rlb9t/Eq0 山浦 清透
【作業工程フル公開】エンジニアが30万円案件の制作過程を公開
www.youtube.com/watch?v=tYbVl6N8oxI
これは、PHP だけど、
Udemy の山浦ぐらいの相当プロでも、1:5:42 の所で、
マイナビ求人をスクレイピング攻撃しているだろw
プロでも間違うから、なおさら素人なら、無限ループで攻撃し放題。
業務妨害で逮捕されるだけ
データベースに保存するなら、普通はPHPじゃなくて、Ruby on Rails を使う
【作業工程フル公開】エンジニアが30万円案件の制作過程を公開
www.youtube.com/watch?v=tYbVl6N8oxI
これは、PHP だけど、
Udemy の山浦ぐらいの相当プロでも、1:5:42 の所で、
マイナビ求人をスクレイピング攻撃しているだろw
プロでも間違うから、なおさら素人なら、無限ループで攻撃し放題。
業務妨害で逮捕されるだけ
データベースに保存するなら、普通はPHPじゃなくて、Ruby on Rails を使う
36デフォルトの名無しさん (ワッチョイ ff63-RPwI)
2022/11/29(火) 12:29:52.96ID:OkL5Yz/2037デフォルトの名無しさん (オッペケ Srcb-c1Xh)
2022/11/29(火) 12:31:54.18ID:HCCm6VNmr サーバーを落とした香具師!
38デフォルトの名無しさん (ワッチョイ ffcf-ykd8)
2022/11/29(火) 12:35:46.90ID:5xrJvc530 このような場合はJPCERT/CCに相談して欲しかった
39デフォルトの名無しさん (ワッチョイ ff63-RPwI)
2022/11/29(火) 12:58:16.32ID:OkL5Yz/20 この障害は岡崎だけでなく、全国の図書館でも発生していたそうだ
朝一でサーバー再起動が業務となっていたところもあるそうだ
悪質なのは、この障害、原因を開発元が承知していたことと、
システム更新(もちろん有料)の口実にされていたこと
ハードの買換をさせられた図書館もある
詐欺事件とされてもおかしくはない
朝一でサーバー再起動が業務となっていたところもあるそうだ
悪質なのは、この障害、原因を開発元が承知していたことと、
システム更新(もちろん有料)の口実にされていたこと
ハードの買換をさせられた図書館もある
詐欺事件とされてもおかしくはない
40デフォルトの名無しさん (テテンテンテン MM8f-Ww1B)
2022/11/29(火) 13:04:50.65ID:azSIQh15M まぁ我々は困らないし
当事者が気を付ければ済む話
過去の事件ループはもう良いから
それで終わりにしろ
当事者が気を付ければ済む話
過去の事件ループはもう良いから
それで終わりにしろ
41デフォルトの名無しさん (ワッチョイ ffbb-rfgC)
2022/11/29(火) 13:14:40.68ID:eTNa7b4f0 twitterなんて「規約読め」「API利用しろ」で終了だろ
図書館事件は特殊条件踏みすぎててミスリードすぎる
図書館事件は特殊条件踏みすぎててミスリードすぎる
42デフォルトの名無しさん (ワッチョイ d733-Z2Iz)
2022/11/29(火) 13:16:57.04ID:fQLmT73p0 >>32
逆に、人がAPIで提供されるjsonのデータ読めって言われてもきついでしょ
それと同じで人が読みやすいように作られてるWebのUIをソフトウェアにやらせるのは筋違いなんだよ
seleniumにしたって元々はJavaScriptのテストを走らせるために作られていて、誰かが作った仕様のはっきりしないWebサービスのUIを解析するためには作られてないと思うよ
今もそうだかは使ったことないからはっきりとはいえないけど
逆に、人がAPIで提供されるjsonのデータ読めって言われてもきついでしょ
それと同じで人が読みやすいように作られてるWebのUIをソフトウェアにやらせるのは筋違いなんだよ
seleniumにしたって元々はJavaScriptのテストを走らせるために作られていて、誰かが作った仕様のはっきりしないWebサービスのUIを解析するためには作られてないと思うよ
今もそうだかは使ったことないからはっきりとはいえないけど
4333 (ワッチョイ d74f-emCW)
2022/11/29(火) 13:34:20.35ID:Rlb9t/Eq0 元々、Selenium Webdriver, Capybara などは、
Ruby on Rails の開発で、システムテストで実際のブラウザを自動操作して、
画面の動作を確認するためのツール
Ruby on Rails の開発で、システムテストで実際のブラウザを自動操作して、
画面の動作を確認するためのツール
44デフォルトの名無しさん (スップ Sd3f-8UFK)
2022/11/29(火) 14:04:13.09ID:AC1KYodjd Ruby馬鹿がいつもの噓
45デフォルトの名無しさん (ブーイモ MM8f-oElN)
2022/11/29(火) 14:04:43.85ID:sKS8alA2M API使いたくないからスクレイピングするんだろ
何言ってんだか
何言ってんだか
46デフォルトの名無しさん (ワッチョイ 5701-ZS+X)
2022/11/29(火) 14:28:15.03ID:6F6KBCUn0 >>44
今回はちょっと違う
今回はちょっと違う
47デフォルトの名無しさん (ワッチョイ 9f2a-+r4L)
2022/11/29(火) 15:17:30.94ID:NO7HG1hV0 >>32
おっしゃる範囲では模倣してることになるよ
しかしPythonのライブラリでブラウザの全部の機能を模倣するのは難しいので、Javascriptをゴリゴリ使うようなサイトではブラウザを模倣するんじゃなくてブラウザにレンダリングを外注するのよ
おっしゃる範囲では模倣してることになるよ
しかしPythonのライブラリでブラウザの全部の機能を模倣するのは難しいので、Javascriptをゴリゴリ使うようなサイトではブラウザを模倣するんじゃなくてブラウザにレンダリングを外注するのよ
48デフォルトの名無しさん (ワッチョイ 9f47-NCR5)
2022/11/29(火) 18:02:03.33ID:lUjN289S0 集合って使う?
49デフォルトの名無しさん (ガックシ 068f-ar+C)
2022/11/29(火) 18:10:29.16ID:q/VfFbZ+6 はい
50デフォルトの名無しさん (ワッチョイ ffbb-NZIw)
2022/11/29(火) 18:10:39.03ID:JTTSm0Nf0 辞書でキーが値でもある場合とか、リストからユニークなもののみ抽出したいときとか、たまに使う
51デフォルトの名無しさん (ワッチョイ 9f79-SL85)
2022/11/29(火) 19:26:38.65ID:3YOnpcyo0 >>32
サイト開いて、ってなに?
サイト開いて、ってなに?
52デフォルトの名無しさん (アウアウウー Sa5b-LL8a)
2022/11/29(火) 19:30:41.60ID:GC2yOS5aa >>48
集合ってセット型のこと言ってるよね?
どんな職種かにもよるけれど
俺の働いてる環境だとfor文と同じ頻度で使う感じかな
集合ってすごく便利でさ
重複削除するのも排他的な処理にも使えるのでめちゃめちゃコスパいいんだよ
集合ってセット型のこと言ってるよね?
どんな職種かにもよるけれど
俺の働いてる環境だとfor文と同じ頻度で使う感じかな
集合ってすごく便利でさ
重複削除するのも排他的な処理にも使えるのでめちゃめちゃコスパいいんだよ
53デフォルトの名無しさん (アウアウウー Sa5b-LL8a)
2022/11/29(火) 19:34:01.33ID:GC2yOS5aa54デフォルトの名無しさん (アウアウウー Sa5b-LL8a)
2022/11/29(火) 19:36:34.48ID:GC2yOS5aa55デフォルトの名無しさん (ワッチョイ 9f47-NCR5)
2022/11/29(火) 19:46:06.06ID:lUjN289S0 重複を削除したい、というタイミングで集合に入れて戻す
とかならそういう関数だとみなせるので必要が生じたら使う、でいい
ではなくて、最初からずっと集合で持ち続けるような用途があるかどうか
とかならそういう関数だとみなせるので必要が生じたら使う、でいい
ではなくて、最初からずっと集合で持ち続けるような用途があるかどうか
56デフォルトの名無しさん (ブーイモ MMfb-QUc+)
2022/11/29(火) 20:21:39.71ID:SFyPOz/XM >>55
普通にある。
アンケートの選択肢の一覧がわかっていないときに選択肢集合を取り出すのに使ったり、
スケジュールを調整するときに、日程集合aと日程集合bの積集合が空かどうかでスケジュールが被っていないかを確認したりなど、
入れるときから集合にしておいた方がいいケースはいくらでもあるよ。
普通にある。
アンケートの選択肢の一覧がわかっていないときに選択肢集合を取り出すのに使ったり、
スケジュールを調整するときに、日程集合aと日程集合bの積集合が空かどうかでスケジュールが被っていないかを確認したりなど、
入れるときから集合にしておいた方がいいケースはいくらでもあるよ。
57デフォルトの名無しさん (ワッチョイ 9f47-NCR5)
2022/11/29(火) 20:38:01.11ID:lUjN289S0 重複してたら集合に追加する時にはじかれる訳だけど、
それに関してはケアしなくていいの?
無視されてしまったスケジュールの人が発生しそうだけど
勝手に重複が削除される仕組みはどう考えても危険で、
うまく使える局面が思いつかない
それに関してはケアしなくていいの?
無視されてしまったスケジュールの人が発生しそうだけど
勝手に重複が削除される仕組みはどう考えても危険で、
うまく使える局面が思いつかない
58デフォルトの名無しさん (ワッチョイ ff10-Gfcg)
2022/11/29(火) 20:53:34.02ID:VRBW4+C+0 初心者スレ行ったほうがいいんじゃないか?
s1 = {"2022-12-01", "2022-12-02"} // Aさんの希望日
s2 = {"2022-12-02", "2022-12-03"} // Bさんの希望日
print(s1 & s2) // -> {"2022-12-02"}
s1 = {"2022-12-01", "2022-12-02"} // Aさんの希望日
s2 = {"2022-12-02", "2022-12-03"} // Bさんの希望日
print(s1 & s2) // -> {"2022-12-02"}
59デフォルトの名無しさん (ワッチョイ 9f47-NCR5)
2022/11/29(火) 21:10:31.21ID:dP4707zz0 s1 = ["2022-12-01", "2022-12-02"]
s2 = ["2022-12-02", "2022-12-03"]
print(set(s1) & set(s2))
これでも同じなんだよな
&演算が強力だから使いたいだけで、集合で保持しておくメリットが無い
s2 = ["2022-12-02", "2022-12-03"]
print(set(s1) & set(s2))
これでも同じなんだよな
&演算が強力だから使いたいだけで、集合で保持しておくメリットが無い
60デフォルトの名無しさん (ワッチョイ 9f2a-+r4L)
2022/11/29(火) 21:11:54.06ID:NO7HG1hV0 リスト→セットがゼロコスト変換なわけなかろう
61デフォルトの名無しさん (ワッチョイ ff10-h9Ju)
2022/11/29(火) 21:14:02.60ID:eLjR8f750 s1 = ["2022-12-01", "2022-12-02"]
s2 = ["2022-12-02", "2022-12-03"]
for x in s1:
for y in s2:
if x == y:
print(x)
オラァ!
s2 = ["2022-12-02", "2022-12-03"]
for x in s1:
for y in s2:
if x == y:
print(x)
オラァ!
62デフォルトの名無しさん (ワッチョイ 7702-Znd8)
2022/11/29(火) 21:18:24.33ID:+HrRhDam0 内部でソートされてないと有り難みも半減
63デフォルトの名無しさん (ワッチョイ f789-Gg/V)
2022/11/29(火) 22:34:54.85ID:UIouEa7w0 Listが標準、Setがライブラリ拡張で不利だとしても
ドキュメンテーション重視でSetつかうことあるし
視野がせまいとしか
ドキュメンテーション重視でSetつかうことあるし
視野がせまいとしか
64デフォルトの名無しさん (ワッチョイ 9f01-YdBL)
2022/11/29(火) 23:09:52.10ID:4MUOq3YH0 >>59
それどう見てもリストで保持するメリットの方がないだろ...
それどう見てもリストで保持するメリットの方がないだろ...
65デフォルトの名無しさん (ワッチョイ ffbb-NZIw)
2022/11/29(火) 23:36:33.92ID:JTTSm0Nf0 すぐにあれこれ思いつかないけど、予め予約語や予約番号を突っ込んでおいてユーザがそれらを入力したら弾くとか、処理済みのファイル名を覚えておくとか
66デフォルトの名無しさん (ワッチョイ 1709-Z2Iz)
2022/11/30(水) 06:40:38.93ID:Wig3zpdW0 ブラウザの履歴だな
67デフォルトの名無しさん (アウアウウー Sa5b-YdBL)
2022/11/30(水) 06:44:23.82ID:VpVi1ao4a 履歴はURLだけでなくアクセスした日時も覚えておく必要あるからSetだけだと難しい
68デフォルトの名無しさん (ワッチョイ 1797-QUc+)
2022/11/30(水) 13:21:08.67ID:5wV2hx4y0 >>57
それをケアしたいならin演算子を使えばいいだけであって、setの根本的問題ではない。
そして、in演算子はlistとsetならどう考えてもsetのほうが速い。
もちろん、重複を許さないリストのバリデーションなんかにも使えるよね。
それをケアしたいならin演算子を使えばいいだけであって、setの根本的問題ではない。
そして、in演算子はlistとsetならどう考えてもsetのほうが速い。
もちろん、重複を許さないリストのバリデーションなんかにも使えるよね。
69デフォルトの名無しさん (ワッチョイ 1797-QUc+)
2022/11/30(水) 13:29:48.45ID:5wV2hx4y0 リストで持っておけばいいじゃん、必要なときにsetに変換して処理するから、という人は、計算量なんかを考えてみるといいよ
計算量無視するなら62のコードでいいじゃんってことになっちゃうしね。
まあ、Python遅いから計算量を減らすようなコードを書くことに説得力がないというのはそうなんだけど、
結局普段からそういう練習していないと高速化したくてC++に一部実装を変更したときに速いコード書けないから。
もちろん、リストで作っておいてsetに変換する方がいいケースもあるよ。
PandasのDataFrame,Seriesのインデックスのところで演算するのなんかも、集合的な演算で行なっているのだし、慣れておいて損はないと思うが。(実態はboolのSeriesだけど)
計算量無視するなら62のコードでいいじゃんってことになっちゃうしね。
まあ、Python遅いから計算量を減らすようなコードを書くことに説得力がないというのはそうなんだけど、
結局普段からそういう練習していないと高速化したくてC++に一部実装を変更したときに速いコード書けないから。
もちろん、リストで作っておいてsetに変換する方がいいケースもあるよ。
PandasのDataFrame,Seriesのインデックスのところで演算するのなんかも、集合的な演算で行なっているのだし、慣れておいて損はないと思うが。(実態はboolのSeriesだけど)
70デフォルトの名無しさん (アウアウウー Sa5b-LL8a)
2022/11/30(水) 19:56:40.31ID:x00c17Gpa セットを学ぶ時間と意義はあるってことな
セットは慣れたら便利
速度もメモリにも優しくて安心
セット知らないってなんかダサいw
よってこれはPythonistaの総意です
セットは慣れたら便利
速度もメモリにも優しくて安心
セット知らないってなんかダサいw
よってこれはPythonistaの総意です
71デフォルトの名無しさん (ワッチョイ 5701-ykd8)
2022/11/30(水) 22:33:59.64ID:QeHG+uMw0 辞書が上位互換では?
72デフォルトの名無しさん (ワッチョイ 9f2a-+r4L)
2022/11/30(水) 22:47:34.56ID:rU+WJpIK0 値がいらないときは辞書を使う意味がない
73デフォルトの名無しさん (ワッチョイ 9f47-NCR5)
2022/11/30(水) 23:08:38.63ID:v5dUZ8sT0 perlで、値として何でも1を入れて有無だけ判定するような使い方してた
配列でできれば良かったんだけど
配列でできれば良かったんだけど
74デフォルトの名無しさん (ワッチョイ 9f47-NCR5)
2022/11/30(水) 23:12:12.55ID:v5dUZ8sT0 と書いてから気付いた
これsetの有効な用途だな
一度処理した対象は二度と処理しないように処理済みの一覧を作りたい
それを管理する為にsetはうってつけ
これsetの有効な用途だな
一度処理した対象は二度と処理しないように処理済みの一覧を作りたい
それを管理する為にsetはうってつけ
75デフォルトの名無しさん (ワッチョイ 5701-ykd8)
2022/11/30(水) 23:36:43.30ID:QeHG+uMw0 だからそれは辞書でもできるでしょ?
76デフォルトの名無しさん (ワッチョイ 9f47-NCR5)
2022/11/30(水) 23:59:38.73ID:v5dUZ8sT0 辞書でも可能だけどいかにも頭悪いので辞書でやるべきではない
77デフォルトの名無しさん (ワッチョイ 775f-4gln)
2022/12/01(木) 00:09:20.39ID:NDzBgIvm0 集合演算できるのか、いいなあ
78デフォルトの名無しさん (ワッチョイ 9714-ar+C)
2022/12/01(木) 00:40:40.07ID:j5V8nih+0 過剰なものを使いたくない気持ちを持っていたほうがいい
79デフォルトの名無しさん (ワッチョイ f781-Gg/V)
2022/12/01(木) 00:59:18.11ID:YFm4Yapz0 合理的でないとコードの意図が伝わりにくくなるやん
門外不出の書き捨てならどうでもいいけど
門外不出の書き捨てならどうでもいいけど
80デフォルトの名無しさん (テテンテンテン MM8f-Ww1B)
2022/12/01(木) 08:03:00.66ID:c3eQdr+KM なに使おうがココ見てる奴は誰も困らんので
各々好きなように活用すればいい
各々好きなように活用すればいい
81デフォルトの名無しさん (ワッチョイ 775f-4gln)
2022/12/01(木) 17:07:42.57ID:NDzBgIvm0 モチベーションのためにpythonで
awsのサーバーレスいじってる
別に何かを作るつもりはないけど
あー、こうやってユーザーの入力を受け取るのね、
とかデータベースへの書き込みをいじってる
awsのサーバーレスいじってる
別に何かを作るつもりはないけど
あー、こうやってユーザーの入力を受け取るのね、
とかデータベースへの書き込みをいじってる
82デフォルトの名無しさん (ワッチョイ 9f02-CHuw)
2022/12/01(木) 22:19:38.72ID:QPJQThlG0 >>72
順番を保存したい時は辞書を使う
順番を保存したい時は辞書を使う
83デフォルトの名無しさん (ワッチョイ ff10-ykd8)
2022/12/01(木) 23:40:07.68ID:sismMzCH0 OrderedDict使おう
2022/12/03(土) 15:38:28.64
pandasで思ったのですが
import pandas as pd
df=pd.DataFrame({"A":range(0,10,1),"B":range(10,20,1),"C":range(20,30,1)})
df["A+B"]=df["A"]+df["B"]
df["A+C"]=df["A"]+df["C"]
print(df)
これってA+BとA+Cで計算量はO(2n)になっちゃいます?よね
だったら
df["A+B"]=0
df["A+C"]=0
for i in range(len(df)):
df["A+B"].iloc[i]=df["A"].iloc[i]+df["B"].iloc[i]
df["A+C"].iloc[i]=df["A"].iloc[i]+df["C"].iloc[i]
こうすればO(n)だと思うのです?がこういう風に書かないのは視認性を優先しているからでしょうか?
import pandas as pd
df=pd.DataFrame({"A":range(0,10,1),"B":range(10,20,1),"C":range(20,30,1)})
df["A+B"]=df["A"]+df["B"]
df["A+C"]=df["A"]+df["C"]
print(df)
これってA+BとA+Cで計算量はO(2n)になっちゃいます?よね
だったら
df["A+B"]=0
df["A+C"]=0
for i in range(len(df)):
df["A+B"].iloc[i]=df["A"].iloc[i]+df["B"].iloc[i]
df["A+C"].iloc[i]=df["A"].iloc[i]+df["C"].iloc[i]
こうすればO(n)だと思うのです?がこういう風に書かないのは視認性を優先しているからでしょうか?
85デフォルトの名無しさん (ワッチョイ aa01-QZbE)
2022/12/03(土) 16:01:43.70ID:HS9T9UMm0 そもそも O(2n) なんて書かないぞ
86デフォルトの名無しさん (ワッチョイ 4697-KDKu)
2022/12/03(土) 16:38:55.55ID:YuLtkiXA0 >>84
どっちもO(n)だし実際に実行してみると後者の方が遅いと思うよ
どっちもO(n)だし実際に実行してみると後者の方が遅いと思うよ
87デフォルトの名無しさん (ワッチョイ ea47-VscZ)
2022/12/03(土) 17:03:14.55ID:hui5F7Ye0 実測してみればいいのに
2022/12/03(土) 17:15:26.84ID:xZYRIIQ3
>>86
なるほどそうなんですね
前者だと、len(df)の回数だけループしてdf[""]に結果が代入される、をdf[""]=の行だけ繰り返すようなイメージで
例えばlen(df)が10万あったとしたら、10万ループ後にまた10万ループ…、みたいなことかと思ってました
実測してみました(合っているかどうかわかりませんが
かなり遅くなりましたね
import pandas as pd
import time
df=pd.DataFrame({"A":range(0,10000,1),"B":range(10000,20000,1),"C":range(20000,30000,1)})
start=time.time()
df["A+B"]=df["A"]+df["B"]
df["A+C"]=df["A"]+df["C"]
end=time.time()
print(end-start)
start=time.time()
df["A+B"]=0
df["A+C"]=0
for i in range(len(df)):
df["A+B"].iloc[i]=df["A"].iloc[i]+df["B"].iloc[i]
df["A+C"].iloc[i]=df["A"].iloc[i]+df["C"].iloc[i]
end=time.time()
print(end-start)
#0.0027747154235839844
#5.960754871368408
なるほどそうなんですね
前者だと、len(df)の回数だけループしてdf[""]に結果が代入される、をdf[""]=の行だけ繰り返すようなイメージで
例えばlen(df)が10万あったとしたら、10万ループ後にまた10万ループ…、みたいなことかと思ってました
実測してみました(合っているかどうかわかりませんが
かなり遅くなりましたね
import pandas as pd
import time
df=pd.DataFrame({"A":range(0,10000,1),"B":range(10000,20000,1),"C":range(20000,30000,1)})
start=time.time()
df["A+B"]=df["A"]+df["B"]
df["A+C"]=df["A"]+df["C"]
end=time.time()
print(end-start)
start=time.time()
df["A+B"]=0
df["A+C"]=0
for i in range(len(df)):
df["A+B"].iloc[i]=df["A"].iloc[i]+df["B"].iloc[i]
df["A+C"].iloc[i]=df["A"].iloc[i]+df["C"].iloc[i]
end=time.time()
print(end-start)
#0.0027747154235839844
#5.960754871368408
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- Perfume・あ~ちゃんの結婚相手の一般男性、吉田カバンの社長と判明 [977261419]
- 地球から無限km先の場所ってどうなっているの?
- 自民党議員「高市は先人が築き上げた日中関係を壊した。外務省が謝罪に言ってるが自分で責任を取れ」 [834922174]
- 日本、高市のお陰で破滅に近づくwwwwwwww
- AIアーティストだけど作品公開する
- 岡田克也「軽々しく存立危機事態とか言うべきじゃない」高市早苗「台湾で武力攻撃が発生したらどう考えても日本の存立危機事態」 [931948549]
