!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:A6xfpKBe026デフォルトの名無しさん (テテンテンテン 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
89デフォルトの名無しさん (ワッチョイ 4697-KDKu)
2022/12/03(土) 17:44:15.36ID:YuLtkiXA0 >>88
C/C++言語で似たような処理をうまく実装すれば、基本的にはどっちの書き方でもそんなに違わないのだけどね。
結局は行数×2の足し算をしなければいけないのは、どうループを回そうが同じ
(厳密にはCPUのキャッシュに載る書き方をするかどうかとかで性能は違うかもだけど)
Pandasの場合、DataFrameは、実は列ごとのデータであるSeriesをくっつけてるだけで、
列と列を足して新しいSeriesを作るような演算は、Series同士の演算ということで専用のCのコードが走ってロスが少ない。
一方1行ごとにPythonのforループで値を取り出して出すと、Pythonの遅いループのせいで遅くなる。
NumPyでもPandasでも、ブロードキャストせず値を一個一個取り出すような処理はめちゃくちゃ遅くなるからどうしようもない場合以外避けるべき。
C/C++言語で似たような処理をうまく実装すれば、基本的にはどっちの書き方でもそんなに違わないのだけどね。
結局は行数×2の足し算をしなければいけないのは、どうループを回そうが同じ
(厳密にはCPUのキャッシュに載る書き方をするかどうかとかで性能は違うかもだけど)
Pandasの場合、DataFrameは、実は列ごとのデータであるSeriesをくっつけてるだけで、
列と列を足して新しいSeriesを作るような演算は、Series同士の演算ということで専用のCのコードが走ってロスが少ない。
一方1行ごとにPythonのforループで値を取り出して出すと、Pythonの遅いループのせいで遅くなる。
NumPyでもPandasでも、ブロードキャストせず値を一個一個取り出すような処理はめちゃくちゃ遅くなるからどうしようもない場合以外避けるべき。
90デフォルトの名無しさん (ワッチョイ ea47-VscZ)
2022/12/03(土) 17:51:36.28ID:hui5F7Ye0 外部モジュール使わない場合でも、
本当にループを書くより、同等の処理が一行で書ける系の書き方の方が速い
本当にループを書くより、同等の処理が一行で書ける系の書き方の方が速い
91デフォルトの名無しさん (アウアウウー Sa08-g9pY)
2022/12/03(土) 18:32:31.91ID:H3EtATlxa >>84
富豪になれ
富豪になれ
92デフォルトの名無しさん (アウアウウー Sa08-g9pY)
2022/12/03(土) 18:35:20.84ID:H3EtATlxa iでループするとiというPyObjectにいちいちアクセスするから無駄が増える
93デフォルトの名無しさん (ワンミングク MM3e-lQrs)
2022/12/03(土) 20:52:15.48ID:AKVIlfb6M 計算よりもコードの解釈10000回に掛かる時間が長いのよ
94デフォルトの名無しさん (ワッチョイ ea47-VscZ)
2022/12/03(土) 21:05:08.47ID:hui5F7Ye0 実はこっそりコンパイルしてるだろと思っても本当にインタプリタなんだよな
変数名とか間違ってても到達しなければエラーにならない
変数名とか間違ってても到達しなければエラーにならない
95デフォルトの名無しさん (アウアウウー Sa3a-7Zdh)
2022/12/03(土) 21:18:53.10ID:pO2d8Q/6a 今時JITもない純粋なインタプリタだしな
どう考えても速くはならない
どう考えても速くはならない
96デフォルトの名無しさん (スッププ Sd02-zcV8)
2022/12/03(土) 22:10:50.47ID:aUunlJ3Sd >>84
O記法に使われるのは極限の値だからO(n)もO(2n)も大差がない一次関数的オーダーとみなされる
O記法に使われるのは極限の値だからO(n)もO(2n)も大差がない一次関数的オーダーとみなされる
97デフォルトの名無しさん (ワンミングク MM3e-lQrs)
2022/12/03(土) 23:18:09.05ID:AKVIlfb6M スクリプトなのを逆手に取ったトリッキーな事も出来るけどね
変数名を辞書のキーに使ってウィジェットを管理することでeval関数で自動同期できたりとか
変数名を辞書のキーに使ってウィジェットを管理することでeval関数で自動同期できたりとか
98デフォルトの名無しさん (ワッチョイ ea47-VscZ)
2022/12/03(土) 23:25:00.89ID:hui5F7Ye0 perlはコンパイルしてから動くのに、evalで動的なことできるんだよな
あいつが一番気持ち悪い
あいつが一番気持ち悪い
99デフォルトの名無しさん (ワッチョイ 0a10-R4o2)
2022/12/04(日) 00:54:32.96ID:E/Vw0mdO0 >>84
後者も毎回2行の処理があるから2nだよね
後者も毎回2行の処理があるから2nだよね
100デフォルトの名無しさん (アウアウウー Sa08-g9pY)
2022/12/04(日) 10:22:35.31ID:2Pwe8xJ8a Oが下がってもループそのものをpythonで描いてる限り速くならんって話だろ
101デフォルトの名無しさん (ワッチョイ 972c-JkWk)
2022/12/04(日) 10:53:22.33ID:AtzUGoNp0 >>97
もうちょっと詳しく聞きたい
もうちょっと詳しく聞きたい
102デフォルトの名無しさん (スプッッ Sd2a-jzPi)
2022/12/04(日) 11:16:52.00ID:1/Hu21BBd ChatGPTがやばい
たとえばネットで公開されてるプログラムのソースコードを渡したらめちゃくちゃ詳細に教えてくれる
自分はpython初心者だけど、理解できるレベルに噛み砕いて説明してもらえる
ここまですごいと「プログラム勉強する意味とは?」と不安になってくる
本当に「AIにやらせりゃいい」の時代が来る
これから人類は、仕事の価値が安すぎてロボットやAIにやらせないような、隙間の部分を仕事にしていくしかないかも
金銭的な資産がない状態から、技術を通して一定の財産を築いていくことは難しくなっていって
資産がある人間は苦労もせずさらに財産を増やせる、という社会構造だけが残ってしまうのでは
たとえばネットで公開されてるプログラムのソースコードを渡したらめちゃくちゃ詳細に教えてくれる
自分はpython初心者だけど、理解できるレベルに噛み砕いて説明してもらえる
ここまですごいと「プログラム勉強する意味とは?」と不安になってくる
本当に「AIにやらせりゃいい」の時代が来る
これから人類は、仕事の価値が安すぎてロボットやAIにやらせないような、隙間の部分を仕事にしていくしかないかも
金銭的な資産がない状態から、技術を通して一定の財産を築いていくことは難しくなっていって
資産がある人間は苦労もせずさらに財産を増やせる、という社会構造だけが残ってしまうのでは
103デフォルトの名無しさん (ワッチョイ 2e2a-ffC/)
2022/12/04(日) 12:10:29.10ID:vdoNuXff0 ひらめいた
104デフォルトの名無しさん (ワンミングク MM3e-lQrs)
2022/12/04(日) 13:23:26.47ID:0ZfK2JLIM >>101
自分はtkinterをクラス化して使ってるんだけど
ウィジェットを管理するクラスと、1つの変数に対応した複数のウィジェット持つフレームクラス(ラベル、インプット、ボタン)の2種類があって
管理クラスにウィジェットのタイプと変数名を渡せば、ウインドウ内に配置して、変数との同期を自動でやってくれるって感じにしてる
管理クラスは辞書で変数名をキーに、フレームオブジェクトを値として持っていて
updateを呼び出すとevalとexecをループで回して同期を行う感じ
色を変えたり、タイトルを変えたりするときは変数名をハンドル代わりにしてアクセスする
変数には共有のモジュール変数を使う必要があるけどね
自分はtkinterをクラス化して使ってるんだけど
ウィジェットを管理するクラスと、1つの変数に対応した複数のウィジェット持つフレームクラス(ラベル、インプット、ボタン)の2種類があって
管理クラスにウィジェットのタイプと変数名を渡せば、ウインドウ内に配置して、変数との同期を自動でやってくれるって感じにしてる
管理クラスは辞書で変数名をキーに、フレームオブジェクトを値として持っていて
updateを呼び出すとevalとexecをループで回して同期を行う感じ
色を変えたり、タイトルを変えたりするときは変数名をハンドル代わりにしてアクセスする
変数には共有のモジュール変数を使う必要があるけどね
105デフォルトの名無しさん (アウアウウー Sa3a-7Zdh)
2022/12/04(日) 14:29:21.47ID:XaoAEs7Da >>98
それrubyもpythonもphpも同じだぞ
それrubyもpythonもphpも同じだぞ
106デフォルトの名無しさん (ワッチョイ ea47-VscZ)
2022/12/04(日) 14:40:23.35ID:CjwdkMkG0 rubyは知らんけど、phpはどう考えてもコンパイルしとらんだろ
107デフォルトの名無しさん (アウアウウー Sa3a-7Zdh)
2022/12/04(日) 14:45:10.78ID:XaoAEs7Da コンパイルというのが機械語という意味なら
むしろPHPはJITなので1番してる
Rubyは最近YJITというのが入ってデフォルトでオフだが
オンにするとJITが走る
pythonはJITはしてないがVMの中間言語にコンパイルして実行している
perlもJITなしのVM中間言語にコンパイル
むしろPHPはJITなので1番してる
Rubyは最近YJITというのが入ってデフォルトでオフだが
オンにするとJITが走る
pythonはJITはしてないがVMの中間言語にコンパイルして実行している
perlもJITなしのVM中間言語にコンパイル
108デフォルトの名無しさん (アウアウウー Sa3a-7Zdh)
2022/12/04(日) 14:46:34.14ID:XaoAEs7Da つまりどの言語も何かしらの中間言語にコンパイルはしている
その後JITするかは処理系の実装次第
これはV8やJSCでも同じ
その後JITするかは処理系の実装次第
これはV8やJSCでも同じ
109デフォルトの名無しさん (ワッチョイ ea47-VscZ)
2022/12/04(日) 14:48:27.42ID:CjwdkMkG0 そら、ソースファイルを実行できんし
全ての言語がプロセッサが実行できる形式に変換はしとるわ
言ってるのはそういうことではない
全ての言語がプロセッサが実行できる形式に変換はしとるわ
言ってるのはそういうことではない
110デフォルトの名無しさん (ブーイモ MM5a-npym)
2022/12/04(日) 15:10:34.41ID:LiTniMSdM お前らのバカさかげんには
開いた口が塞がらない笑笑
コンパイラ作ったことないのか?
なにがJITだバカw
開いた口が塞がらない笑笑
コンパイラ作ったことないのか?
なにがJITだバカw
111デフォルトの名無しさん (ワッチョイ 04da-UzR7)
2022/12/04(日) 15:44:47.04ID:OHPAilb60 JITはJIT(just in time)コンパイラの略なんだが...
112デフォルトの名無しさん (ワッチョイ d8cf-R4o2)
2022/12/04(日) 15:50:06.61ID:qWdYVkpM0 BASICの時代から中間言語使ってるしな
113デフォルトの名無しさん (アウアウウー Sa3a-7Zdh)
2022/12/04(日) 16:00:54.70ID:XaoAEs7Da >>110
かわいそう
かわいそう
114デフォルトの名無しさん (ワッチョイ 04da-UzR7)
2022/12/04(日) 17:22:39.36ID:OHPAilb60 今時の実用言語で純粋にインタプリタ形式なのはシェルスクリプトぐらいじゃないかな
115デフォルトの名無しさん (ワッチョイ 9630-RX5i)
2022/12/04(日) 17:56:55.17ID:AMZRvu8s0 >>104
時間の問題でしょ
アメリカでは自律のタクシーが稼働しているぐらいだし
時間の問題で労働人口は大幅に減る
その前に役所系の手続きをなんとかして欲しいけど
引っ越した時のナンバープレート交換とか
1番並んで、10番並んで、15番並んでと、、延々と指示されたところに行って並んで
書類提出して待つってことを朝からやり続けてプレート付けて帰るまで1日かかったけど
中国人が途中でキレて「お前いくらもらってるんだ?すぐ出来ないのか!」とか怒鳴ってたけど
もうあり得ない
時間の問題でしょ
アメリカでは自律のタクシーが稼働しているぐらいだし
時間の問題で労働人口は大幅に減る
その前に役所系の手続きをなんとかして欲しいけど
引っ越した時のナンバープレート交換とか
1番並んで、10番並んで、15番並んでと、、延々と指示されたところに行って並んで
書類提出して待つってことを朝からやり続けてプレート付けて帰るまで1日かかったけど
中国人が途中でキレて「お前いくらもらってるんだ?すぐ出来ないのか!」とか怒鳴ってたけど
もうあり得ない
116デフォルトの名無しさん (スッププ Sd02-zcV8)
2022/12/04(日) 19:21:18.01ID:o3Jeub4td スレチの話するや釣って安価すら間違うから始末に負えない
117デフォルトの名無しさん (ワッチョイ 1a63-4FAg)
2022/12/04(日) 19:25:47.00ID:HgjSOVEG0 別の時空間と重ね合わせが起きているせいじゃないか?
どうも間違えていると言う認識を持ってなさそうだし
どうも間違えていると言う認識を持ってなさそうだし
118デフォルトの名無しさん (ワッチョイ 9b5f-QHkP)
2022/12/07(水) 23:42:34.19ID:18d7hgTv0 pythonから初めた人が、一番ビックリするのはどの言語だろう。
異質というか書き方、考え方がまったく異なるのは
異質というか書き方、考え方がまったく異なるのは
119デフォルトの名無しさん (ワッチョイ d8cf-R4o2)
2022/12/07(水) 23:47:25.14ID:cTs8jKu40 一般的なのはALGOL系言語ばかりだから
その範囲で見るかどうか
その範囲で見るかどうか
120デフォルトの名無しさん (ワッチョイ 1666-qI7H)
2022/12/07(水) 23:54:09.00ID:zyT8atzW0 びっくりの方向性だよな
そんな原始的なのという驚きか、そんなに進歩してるのなのか
そんな原始的なのという驚きか、そんなに進歩してるのなのか
121デフォルトの名無しさん (ブーイモ MMba-yU1l)
2022/12/08(木) 00:31:24.99ID:QpDPt4dNM Lisp、Prolog、Haskell
近いようで遠いRubyやJavaScriptも少し潜れば驚くかも
近いようで遠いRubyやJavaScriptも少し潜れば驚くかも
122デフォルトの名無しさん (ワッチョイ 1a63-4FAg)
2022/12/08(木) 00:53:56.36ID:9104bOlZ0 sed
言語じゃないと言う説もある
言語じゃないと言う説もある
123デフォルトの名無しさん (ワッチョイ 7cda-N87w)
2022/12/08(木) 04:16:29.48ID:xxMUZ71f0 FORTH&MIND系、APLが吃驚どっきりかと
124デフォルトの名無しさん (オッペケ Sr39-KTO4)
2022/12/08(木) 04:57:00.65ID:wTGSW5Ddr アセンプリ言語はさすがの俺でもチンプンカンプン
125デフォルトの名無しさん (ワッチョイ 1666-qI7H)
2022/12/08(木) 09:21:07.59ID:1SDiWL4a0 情報技術者のテスト範囲だぞ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 【卓球】早田ひな、「総額100万スられた」「ずっと憧れていたスペインとイタリア…」ヨーロッパ旅行で悲劇 スリ被害を告白 [muffin★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 日経平均の下落率3%超す、財政懸念で長期金利上昇 ★2 [お断り★]
- 【実況】博衣こよりのえちえち歌枠🧪★2
- 【画像】外務省局長「この度はうちの🦎がすみません…」中国「……」 [165981677]
- 産経新聞「高市早苗の答弁さぁ……思慮が足りてなくね?官僚と詰めずに思いつきで話しているでしょ」 [175344491]
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 【雑談】暇人集会所part18
- 外務省局長、よくわからないまま帰国へ [834922174]
