くだすれPython(超初心者用) その50【まず1嫁】

レス数が1000を超えています。これ以上書き込みはできません。
2020/08/27(木) 20:24:10.68ID:WXD9Eu8v
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
派生言語はそれぞれ専スレがあるのでそっち池。
「Ruby」「某言語では」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。

このスレッドは「お勉強」スレのほうには書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を、勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますので、お礼は Python の布教と初心者の救済をお願いします。

★エラーを解決したい場合は、
  表示されてるエラー全文(勝手に省略やスクショうp等の横着クソ行為禁止)と、
  実行環境(Pythonのバージョン・OSとIDEの種類とバージョン)をシッカリ書くこと。

【【【複数の連続半角スペースはなかったことになる・タブがうまく入らない5chの仕様】】】に注意!
Pythonの★ソースコードをそのまま5ちゃんにコピペすると、インデントが崩れてチヌ★ので
  ↓等の、いわゆるコードうp用サイトに貼ってこいください。
ttps://techiedelight.com/compiler/  Run Code機能あり。最近流行中?
ttp://ideone.com/      デフォ設定はC用のため言語選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。

◇Python公式サイト◇ http://www.python.org/
◇まとめwiki◇ ttp://python.rdy.jp/wiki.cgi

〇前スレ〇 くだすれPython(超初心者用) その49【まず1嫁】
https://mevius.5ch.net/test/read.cgi/tech/1595057607/

次スレは >>985 あたりが挑戦してくだしあ。(980過ぎて自動落ちは、無くなって久しい)
### END OF TEMPLATE ###
2020/10/16(金) 14:09:16.95ID:soxKUD38
プログラミングそのものを学ぶために必要な知識と
プログラムを使って解決したい問題領域の理解に必要な知識は別

汎用的に関数化されてるような数学知識よりもこの2つを区別できる基本的思考力のほうが遥かに重要
2020/10/16(金) 14:43:29.54ID:xKOaU25R
Pythonに計算量の概念って要るの?
あれ競プロだけの知識かと思ってたわ
2020/10/16(金) 14:58:48.06ID:hiR4Fq2K
>>974
pythonに限らずどんな言語だろうがプログラミングする上では意識すべきことだろ。
常識的な設計をすれば瞬間的に終わるようなものを、非効率なバカなロジックで書いて10秒待たされるようなことになれば、結果は間違っていなくても糞プログラムだよ。
2020/10/16(金) 15:02:42.43ID:hiR4Fq2K
補足。希にしか使わなくてその10秒が許容されるというのならそれでもいい。
ただ、高度な高速化なんてせずに普通にやれば速く動くはずのものを遅く動くようにしか書けなかったら、ダメプログラマだろう。
2020/10/16(金) 16:22:52.11ID:xKOaU25R
forを行列計算に置き換えて高速化したとしても可読性下がったら意味なくない?
競プロならどんなに読み辛くても早ければ正義だけどさ
2020/10/16(金) 16:35:36.42ID:gzagFIoh
機械学習、グラフィック、ゲーム、ロボット…
pythonがよく使われるユースケースに絞っても行列使わないとかありえないんだが
2020/10/16(金) 16:44:15.12ID:hiR4Fq2K
>>977
for文でも速度的に問題なくてわざわざ可読性を下げるメリットがないケースは好きにfor文を使えばいい。
計算量の考慮が重要だと言うのは、何でもかんでも最速がベストという意味ではなく、速度要求と可読性その他の要件とをバランスよく考慮して適切な手法を選択するということだぞ。
2020/10/16(金) 16:47:49.42ID:aTlgt2Gj
いやいや、最速がベストだろ。
981デフォルトの名無しさん
垢版 |
2020/10/16(金) 16:55:45.74ID:RKtFr9bS
ベクトルの内積求めるときに
わざわざ対角行列使ってると(たとえ0掛けてても)計算量増えないか?
dot積使った方が速くね?って思う
2020/10/16(金) 16:56:52.34ID:gzagFIoh
>>980
     ,一-、
     / ̄ l |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ■■-っ < んなこたーない
    ´∀`/    \__________
   __/|Y/\.
 Ё|__ | /  |
     | У..  |
2020/10/16(金) 18:02:24.88ID:S/2e63FS
アプリ側でこ速度改善なんてたかが知れてるから、基本可読性優先でいい
984デフォルトの名無しさん
垢版 |
2020/10/16(金) 18:23:43.58ID:n8fCSc9i
>>977
数理的な素養のある人が見ればむしろ行列計算の方が可読性上がることもあるんじゃない
2020/10/16(金) 19:00:19.85ID:iAmNdsxg
可読性()言う奴の半数はゴミコード書くドカタ
可読性ガー言っとけば読解力やら諸々能力低い自分が許されると思ってる
2020/10/16(金) 19:06:25.32ID:gzagFIoh
素人かよ
987デフォルトの名無しさん
垢版 |
2020/10/16(金) 19:44:29.70ID:dDrh0EkP
>>985
ドヤ顔で誰もメンテナンスできないゴミコード量産して自分だけはスマートなコードを書いていると思ってそう
988デフォルトの名無しさん
垢版 |
2020/10/16(金) 21:55:17.39ID:gZ39DCJs
可読性と速さ、どっちを重要視したほうがいいかなんてのはどう考えてもケースバイケースで、正解なんか存在しない。
理系の研究者に弄ってもらうためのコードだったらforとかifの羅列よりも行列計算にまとめておいたほうがいいし、
かなりの疎行列を扱ってて行列計算だと全然速度出なくて困る場合は、速度アップを狙ってforループとかで書いたほうが良かったりもするし。

「アプリ側で速度向上なんてたかが知れてる」も明らかにケースに依る。

ベクトルの内積を計算するのに対角行列使う方法ってどんな方法なのか、興味あるので教えて欲しい。
たいてい行列計算って線形代数ライブラリを使って実装するし、線形代数ライブラリに
行列そのもの以外にベクトルもあって、ベクトルの内積、外積、ノルムぐらいは付いてるのが普通だし、
行列しかないライブラリでも、縦ベクトルをn行1列行列として作って、a.transpose() * bで計算するのがよくあるやり方じゃない?
2020/10/16(金) 22:07:15.84ID:aTlgt2Gj
スパース行列くらい扱えるだろ。
2020/10/16(金) 23:23:38.38ID:gZ39DCJs
>>989
いや、それはそうなんだけどさ。
解析的に解くために行列にしたようなものだったら、
実際の数値計算では行列で扱う必要もない場合もあるわけで、
計算方法、実装方法を選ぶのは目的依存だから必ずしも一つの正解はないんじゃない、ということを言いたい。
RDBのテーブル設計で、テーブルを必ずしも正規化しきった形が実装の正解ではないのと同じで。
2020/10/17(土) 00:18:06.54ID:DkSylr6A
ていうかITの世界でも今や文系が牛耳ってるわけだし理系が土方なのは不変の真理なんじゃないか?
2020/10/17(土) 01:02:22.12ID:KQ9ROz6p
>>991
それはITという言葉を狭く捉えすぎか、理系という言葉を広く捉えすぎ。
別に理系信奉ではないんだけど、理系的アプローチでしか出来ないことってそれなりにあって、そのアプローチを出来る人材が不足しているのは恐らく間違いがない。
2020/10/17(土) 07:45:47.24ID:dPJ220D1
理系な学科を卒業したってだけで
いわゆる文系脳なヤツも相当数混ざってるからな・・・



可読性と速度でモメてるおまいら
ちょっとでも他人がわかりづらいかも?と感じたら
とりまコメントかけ
できればユニバーサル英語でかけ
おk!
994デフォルトの名無しさん
垢版 |
2020/10/17(土) 10:05:55.87ID:1RQ0Wdhu
くだすれPython(超初心者用) その51【まず1嫁】
http://mevius.5ch.net/test/read.cgi/tech/1602896738/
995デフォルトの名無しさん
垢版 |
2020/10/17(土) 11:50:33.93ID:0qFIP5N2
>>985
「可読性」に限らず
言い訳する人は行動パターンや結果が共通してるのが面白い
2020/10/17(土) 13:01:15.96ID:Pewarzgb
df.loc[df['a'] == df['b'], 'flag'] = True

みたいな感じで

df['a'] == df['b']
df['c'] == df['d']

の2条件が成立したらflag=Trueとしたいです
なにかうまい方法ないでしょうか?
2020/10/17(土) 13:18:40.58ID:Pewarzgb
>>996
すいません
単に&で条件つなぐだけですよね

andと&間違えてた・・・
複数言語でアプリ同時に作成するとこうなるアホ頭脳です
998デフォルトの名無しさん
垢版 |
2020/10/17(土) 13:19:57.11ID:/Ip3Dsod
and & && * 色々ある
2020/10/17(土) 13:23:11.18ID:DSW3CJY2
>>985
速度と可読性のバランスの取れたコーディングができない素人の言い訳ですね
1000デフォルトの名無しさん
垢版 |
2020/10/17(土) 13:27:50.02ID:/Ip3Dsod
くだすれPython(超初心者用) その51【まず1嫁】
http://mevius.5ch.net/test/read.cgi/tech/1602896738/
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 50日 17時間 3分 40秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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