Pythonのお勉強 Part75 (893レス)
上下前次1-新
794(1): (ワッチョイ 8610-ZAtR) 08/25(月)21:38 ID:a/zkXuf60(1)調 AAS
それは一般論の範囲内の話だし、そもそも高階関数の実装者側が注意深く実装すれば副作用の影響を回避できるというものでもないような。どんな副作用かも分からないんだし。
一般論として副作用を持つ式というのは可能な限り避けた方がいいよねというのは前提とした上で、たとえば自分以外がコードに手を入れることはないということが分かっているようなケースでも副作用を避けないといけない具体的な理由みたいなものがあるのかなというのが知りたかったんよ。
795: (ワッチョイ bebd-hBFX) 08/25(月)23:52 ID:N2pfjYln0(1)調 AAS
>>794
一般論もクソも、副作用を考慮することで複雑性が高まることは自明であり、書くのが自分だけだろうと関係ない。
account.deposit(amount)
これが実はaccountはCatクラスのインスタンスで、depositは引数に応じた声色でスピーカーから鳴き声を鳴らすメソッドで、amountには声色を指定する文字列が入っている可能性は否定できないだろう?
accountとは本当に銀行口座なのか、実はディズニーランドではないのかなどと常に疑ってかからなければならない。
しかしお前は普段そんな心配はしていない。何故か?それはお前自身や周囲の人間がそこまでのバカではないとお前が信じているからだ。
同様に、lambdaに副作用書くバカは自分含めチームにいないと信じることにするなら、lambdaを見るたびにどんな副作用があるのか、同じ引数で2度呼び出されても問題ないのか、
といった余計な心配に脳のリソースを割く必要がなくなり、生産性が向上する。
796(3): (ワッチョイ 8610-ZAtR) 08/26(火)07:53 ID:lpW4FrXI0(1)調 AAS
生産性の向上っていうのが誰視点なのかって話。
高階関数の実装者側は、そもそも渡される関数の副作用に対してできることは何もない(どんな副作用かも分からないんだから当然)のだから、元々「余計な心配にリソースを割く」こと自体がない。引数として渡される関数には副作用がないか、副作用を持つとしても高階関数の処理に影響は与えないという前提で書くだけでしょ。引数として副作用のあるlambdaを渡して、それが原因で高階関数の処理に影響を与えたら、それは呼び出し側が悪いってスタンスで書くしかない。
高階関数の呼び出し側は、特に高階関数のコードが読める状況なら(典型的には自分だけで書いている状況なら)、引数として渡す関数・lambdaに副作用があったとしても、それが高階関数の処理に影響を与えるか否かを判断できる。高階関数の処理に影響を与えない副作用がある関数・lambdaを与えるのは別に問題はないのではないか、それでも何か避けた方が良い固有の問題点があるのかどうかというのか792の疑問ね。
コードを読む人は、高階関数に引数として渡される関数・lambdaには副作用がないか、副作用を持つとしても高階関数の処理に影響は与えないという前提で読むだけ。
実際に副作用のあるlambdaを書くことはほとんどないけれど、780みたいな単純な代入処理はたまにlambdaで済ませたくなることもある。そういうときに、一般論とか教条主義的なスタンスを超えた問題が何があるのかなという疑問だったんだが。
797: (ワッチョイ 6a1a-uCg5) 08/26(火)09:39 ID:tZRcIfkk0(1/2)調 AAS
>>796
他人とちゃんと話し合って決めろよ
798: (ワッチョイ dd8d-hBFX) 08/26(火)09:58 ID:qtH/IdiV0(1)調 AAS
>>796
皆がお前のようにいちいち小難しいことを考えているわけではない、ってことだ。
一定以上のレベルのプログラマであればlambdaで副作用書いてるのを目にした時点で一般常識に照らして「こいつバカじゃないのか」という疑念を持つ。
お前のように細かいことを深く考えた上でやっているとは普通は思わない。
そしてバカを疑いながらのリーディングは通常よりも注意力を要し、結果的に時間がかかる、即ち可読性は低下する。
799: (ワッチョイ 6a1a-uCg5) 08/26(火)10:13 ID:tZRcIfkk0(2/2)調 AAS
>>796 は仕事じゃないんだろうな
800: (ワッチョイ a9f6-ut8q) 08/26(火)11:02 ID:GdDdRaCq0(1)調 AAS
800get
801: (ワッチョイ 7954-IRdO) 08/28(木)07:37 ID:yOq6T87r0(1)調 AAS
デフォルト名前空間付きタグがどうやっても取得できない
802: (ワッチョイ 29eb-ZAtR) 08/29(金)09:32 ID:sEZGPQSB0(1)調 AAS
dataclassは比較的新しいモジュールだけど、急速に普及した印象がある。namedtupleより分かりやすいので良い。
803(1): (ワッチョイ 4ad1-Y9fL) 08/30(土)18:55 ID:hbOtSRYd0(1)調 AAS
goやrustみたいな最初から型がある言語のほうが良かったなぁ(´・ω・`)
804: (ワッチョイ 7954-IRdO) 08/30(土)19:03 ID:qOwp6KvW0(1)調 AAS
むしろもっとperlみたいにゆるゆるな方が好み
805: (ワッチョイ c6b3-ZAtR) 08/30(土)19:07 ID:9+bLWO6W0(1)調 AAS
パフォーマンスの点と他者の書くコードに型指定を強制できないという点は仕方ないけれど、それ以外は、型で実現したいことって概ねPytnonでもできるようになってない? そうでもない?
806(1): (ワッチョイ ca02-NWkk) 08/30(土)19:57 ID:Inltr+l10(1/2)調 AAS
>>803
型を明記しないと、パッと見でわからないよね
実行してデバッグしないと
807: (ワッチョイ ca02-NWkk) 08/30(土)19:58 ID:Inltr+l10(2/2)調 AAS
>>806
ただ、
コンパイルしないのはラクだな
808: (ワッチョイ feeb-VoZ8) 08/30(土)20:59 ID:LdU2fVxg0(1)調 AAS
Pythonが出てきた頃はPerl全盛だったけどCGIとかP言語はもう死語だろうな
809(3): (ワッチョイ 132b-482X) 08/31(日)10:31 ID:GjhCFU0W0(1)調 AAS
python出てくる前はpython的な言語ってなんだたの?
lisp?
810: (アウアウウー Sae7-8tKF) 08/31(日)10:48 ID:8dn8jVHLa(1)調 AAS
当時から既に広く使われていて最もpython的と言うならTcl/Tkだよ
811: (ワッチョイ 6f6c-O/rL) 08/31(日)20:58 ID:aib5LYmb0(1/5)調 AAS
>>809
シェルスクリプト
もしくは
rexx
812(1): (ワッチョイ 6f76-P3Uo) 08/31(日)21:10 ID:yW7onUoP0(1)調 AAS
立ち位置的にはPerlでしょ
$とか%とかだりーなーとか思いつつ、ライブラリあるしみんな使ってるから使うかーって感じだった
今もオフサイドがとかうるせーなーとか思いつつ、結局Perlの時と同じでまあ言語なんかなんでもいいかに落ち着いて使ってる
813(1): (ワッチョイ 738e-Uwoy) 08/31(日)21:34 ID:1n2Iv0Hx0(1)調 AAS
シェルスクリプトの代わりにはならんかったよ
初期導入されてたのってRedHatくらいだったし
Luaみたいな組み込み言語の側面はあったから
Tcl/Tkはしっくりくる
814: (ワッチョイ a327-jRKo) 08/31(日)21:38 ID:Uf/mN+Cj0(1/4)調 AAS
>>809
シェルスクリプト
VBScript
815(2): (ワッチョイ cfc5-O/rL) 08/31(日)21:38 ID:pHIfhBnQ0(1/3)調 AAS
awkだろにわかどもが
816: (ワッチョイ a327-jRKo) 08/31(日)21:39 ID:Uf/mN+Cj0(2/4)調 AAS
Pythonの言語仕様はクソだが、とりあえず無償だったのでいろんな製品に採用されただけ。
817(2): (ワッチョイ 6f6c-O/rL) 08/31(日)21:40 ID:aib5LYmb0(2/5)調 AAS
>>812
>>813
perlの前がなんだったかって話だぞ
わかってんのか?
ラリーウォール自体が話してるんだが
なんだこいつらキチガイか?
818(1): (ワッチョイ a327-jRKo) 08/31(日)21:41 ID:Uf/mN+Cj0(3/4)調 AAS
>>815
それはシェルスクリプト内で使うもの
なんでもawkでやるやつは昔から嫌われている。
いまでもawkで作り込まれていてメンテナンスがたいへんな業務システムがえるわ。
819: (ワッチョイ 6f6c-O/rL) 08/31(日)21:41 ID:aib5LYmb0(3/5)調 AAS
>>815
sed awk シェルスクリプトだな
ちゃんと書くと
820(1): (ワッチョイ a327-jRKo) 08/31(日)21:43 ID:Uf/mN+Cj0(4/4)調 AAS
>>817
それならC言語だろうに
スクリプト言語だとシェルスクリプト
Pythonだって外部プログラムの呼び出しばかりでPython独自のライブラリは少ない。
821: (ワッチョイ cfc5-O/rL) 08/31(日)21:46 ID:pHIfhBnQ0(2/3)調 AAS
>>818
Perlの前ってことは正しいだろ
822: (ワッチョイ 3354-uCOC) 08/31(日)21:47 ID:F59m/DJE0(1/4)調 AAS
pythonが出てくる前の話なんだからperlだろ
perlの前はawk
823(3): (ワッチョイ cfc5-O/rL) 08/31(日)21:59 ID:pHIfhBnQ0(3/3)調 AAS
Pythonの前だったわ
Asm->c/fortran->awk/sed/bash->perl->python->chatgpt/claude
が言語の歴史として正しいか
824: (ワッチョイ 6f6c-O/rL) 08/31(日)22:07 ID:aib5LYmb0(4/5)調 AAS
>>820
ズレまくってるな
ここまで文脈わからないのが居るのこえー
825: (ワッチョイ 6f6c-O/rL) 08/31(日)22:08 ID:aib5LYmb0(5/5)調 AAS
>>823
そう思う
826: (ワッチョイ 3354-uCOC) 08/31(日)22:14 ID:F59m/DJE0(2/4)調 AAS
cからawkには行かない
お手軽スクリプト言語の系譜を辿っている
827: (ワッチョイ 7381-iys5) 08/31(日)22:56 ID:/gVZuLVw0(1)調 AAS
>>823
馬鹿の代表例
828: (ワッチョイ 3354-uCOC) 08/31(日)23:05 ID:F59m/DJE0(3/4)調 AAS
>>823の可読性の低さがやばい
829: (ワッチョイ ff74-kaWg) 08/31(日)23:21 ID:BbjhEhoF0(1)調 AAS
Pythonを置き換えるのはどんな特徴を持った言語になるのかな。それともAI利用の広がりによって、プログラミング言語というもの自体があまり使われなくなったりするのか。
830: (ワッチョイ 3354-uCOC) 08/31(日)23:50 ID:F59m/DJE0(4/4)調 AAS
もうテキストエディタで書くのは無理になるだろうな
概要設計や詳細設計や実装の各段階にAIが介入してきて、
オススメを提示してくる
それをそのまま使うかちょい修正して進めていくといつの間にか出来上がる
831: (ワッチョイ a327-jRKo) 09/01(月)01:11 ID:E66qBEkG0(1)調 AAS
そもそもawkはシェルスクリプトでできないことを書くために作ったのにawkメインになるのは本来の使い方ではない。
自分がわかるものを多用するのは初心者にありがち。
bashも構文を拡張しすぎて、変なコードを書くやつがいて、こういう人間はawkも多用して、一貫性がないスクリプトを作る。
832: (ワッチョイ 43cc-O/rL) 09/01(月)01:23 ID:jU4Yf7TF0(1)調 AAS
身の回りのことができればいいんだよ
833: (ワッチョイ 3354-uCOC) 09/01(月)06:50 ID:yLzoixd30(1)調 AAS
ものすごい頑張ってる巨大batファイルとかよく見る
作れるのは判ったから、まともに書け
834: (ワッチョイ 4347-ZyWg) 09/01(月)11:22 ID:ZXBt3uyf0(1)調 AAS
文法はBASICでいい
835: (ラクッペペ MM7f-XnkP) 09/01(月)12:31 ID:/Y8xWjD9M(1)調 AAS
OPEN "TEST.DAT" FOR INPUT AS #1
836: (ワッチョイ 4379-yzHn) 09/01(月)15:52 ID:3nUHTtao0(1)調 AAS
perlは、個人的にはsedやawkのより使いやすい代用品だなぁ
単独でというより、シェルスクリプトでコマンドとして使うことが多い
837: (ワッチョイ a323-Uwoy) 09/01(月)16:15 ID:BP0v7SMQ0(1)調 AAS
起動時間やメモリ消費が問題になることはほぼないしな
perl/rubyで簡潔に書けることをsed/awkでコネコネしてると泣けてくる
838: (ブーイモ MM7f-jRKo) 09/01(月)16:21 ID:PK9JSPJ+M(1)調 AAS
60代がいるなw
839(1): (ワッチョイ 73f6-8tKF) 09/02(火)11:36 ID:/Zmper4S0(1)調 AAS
>>809
>python出てくる前はpython的な言語ってなんだたの?
>>817
>perlの前がなんだったかって話だぞ
どっちやねん
840: (ワッチョイ ff67-O/rL) 09/02(火)14:12 ID:kizKvhm30(1)調 AAS
>>839
関西弁アホすぎ
朝鮮人か?
バカリズム朝鮮人並みに馬鹿だな
841: (ワッチョイ ff2a-0vxd) 09/02(火)18:09 ID:v1mKUBov0(1)調 AAS
なんでやねん
842: (ワッチョイ 6f8c-kST1) 09/02(火)18:39 ID:f8uf/zR40(1)調 AAS
せやせや!
843: (ワッチョイ 4301-gtKn) 09/02(火)19:15 ID:i1waRe/20(1)調 AAS
In the face of ambiguity, refuse the temptation to guess.
844: (ワッチョイ 1342-49dw) 09/02(火)20:59 ID:UyC0HX6M0(1)調 AAS
せやかて工藤
845: (ワッチョイ cf10-kaWg) 09/03(水)08:24 ID:Yiqf6tZF0(1)調 AAS
Pytnonは習得しやすい言語という立ち位置だし、それは実際にもそうだと思うけど、言語仕様は、全体としては結構大きくなっちゃっていて、シンプルな言語とはちょっと言いにくい感じになっているかな。
なくても何とかなるけどあると利便性が向上する機能(パッと思いつくものとしてはf-stringとかmatch文とか)が増えてくるとそういう印象になるのかも。
846: (JP 0Hdf-8tKF) 09/03(水)14:54 ID:eTDtbpqFH(1)調 AAS
さてはlisperだな
847: (ワッチョイ 43cc-482X) 09/04(木)00:57 ID:UisKbpz40(1)調 AAS
bashの文字列操作で凝ったことすると可読性最悪になるからそこでpython使うと分かりやすすぎて感動した
848: 普天率土 (ワッチョイ 7333-n2sn) 09/04(木)14:39 ID:gEToyzrn0(1)調 AAS
Pythonまったく使ったことなくて
5chのスレタイ読み上げラジオをAIで作ったら3000行超えたわ
そこで初めてAIに分割して作るもんだと教わった
849: (ワッチョイ 7a1c-aJ3f) 09/10(水)20:25 ID:zlwQrrhf0(1)調 AAS
あるプログラムの出力結果の変数を構造保ったままテキストでダンプして出力しようとしてるけど難しいんだな
perlならdata::dumperで一発なんだけどな
850: (ワッチョイ 9a02-MPWR) 09/10(水)20:30 ID:u3op23Y70(1)調 AAS
コンパイルしなくて便利な分、
パット見でオブジェクトとか変数の型がわからないから、
ガッツリのプログラムは大変だね…
851: (ワッチョイ a36d-5o5I) 09/10(水)22:08 ID:AoAHRWDo0(1)調 AAS
PyYAMLは?
カスタムタグでクラスも扱える
852(1): (ワッチョイ 7a1c-aJ3f) 09/11(木)02:01 ID:8aE/TL8t0(1)調 AAS
ありがとう
量子コンピューティングSDK:qiskitで実機の戻り調べてるんだけど
やっぱり変数の型調べながら一つずつ開いていくしかないっぽいね
バイナリの中までは調べないけどさ
っていうかperlのData::Dumperの動きの方が特例的にやばい感じで異常なんだな
まさにperlって感じ
853: (ワッチョイ df95-6P5Z) 09/11(木)04:47 ID:ntfz+n6+0(1)調 AAS
pythonでcpu並列とGPU並列をまなびたいです。
おすすめのサイトありますか?
854: (スフッ Sdba-bj1o) 09/11(木)10:07 ID:3rL2CEwSd(1)調 AAS
構造調べたいだけなら
pprint.pprint(hoge)
855: (ワッチョイ 9ab4-aFDf) 09/11(木)18:16 ID:XtPwu2Bi0(1)調 AAS
>>852
Gist に Perl の Data.Dumper を Python に移植したものがあった (MIT ライセンス)
https://gist.github.com/passos/1071857
これでいけそう?
856: (ワッチョイ b393-mKxa) 09/12(金)19:31 ID:13rTt+Ea0(1)調 AAS
Pythonでサーバーサイド作ろうかと思ったけど遅いかな
ほかの言語にしたほうがいいかな
857(1): (ワッチョイ 8a9f-snD5) 09/13(土)13:34 ID:DCq23AIZ0(1)調 AAS
気になるならPyPyとかあるけど
Webアプリなら待ち時間がほとんどだから書きやすさ重視
じゃないと速度重視なAIのフロントエンドにつかわれてない
858: (ワッチョイ 5ff2-O3fR) 09/13(土)20:28 ID:8jhWe9D50(1)調 AAS
>>857
なるへそね
まあ速度がクリティカルじゃなければ気にしなくていいよね
859: (ワッチョイ 3fb6-mPtt) 09/14(日)19:55 ID:ithLDxGz0(1)調 AAS
PYTHON!
「ドッペルゲンガー(極端なそっくりさん)」を調べたら赤の他人なのにDNAが似ていた
2025.09.14 SUN
https://nazology.kusuguru.co.jp/archives/113854
ADHDの脳は実際に普通の人とは構造が異なっていた
2025.09.14 SUN
https://nazology.kusuguru.co.jp/archives/184809
>>各研究で用いられていたMRI(磁気共鳴画像)装置や画像の解析方法に“微妙な違い”があり、その影響が十分に補正できていなかったためです。この問題は以前から専門家の間でも指摘されていましたが、長年、解決が難しいまま残されていました。
>>この問題に対して、千葉大学(Chiba University)、大阪大学(Osaka University)、福井大学(University of Fukui)など国内複数の大学による共同研究チーム(代表:水野義史〈Yoshifumi Mizuno〉准教授)は、実際に複数の装置で同じ被験者を測定してそのズレを正確に補正する「TS法」と呼ばれる手法を本格的に導入し、長年の課題だった技術的ノイズを徹底的に排除しました。
>>その結果、ADHDの子どもたちの脳にどんな“違い”があるのかを、これまでになく明確に示すことに成功したという。
>>これは理屈としてはばらつきを補正する非常に優れた方法ですが、実際には大規模な協力体制と多くの技術的・資金的なサポートが必要となるため、これまで本格的に実施されることはありませんでした。
>>研究グループはこうして、ADHDの子どもとそうでない子ども、計294名(ADHDの子ども116名、定型発達(健常)児178名)の脳画像を比較しました。ここでは、年齢や性別、知能指数(IQ)などの違いも統計的にしっかり調整されています。
>>結果、ADHDの子どもたちの脳には、実際につくりの違いがあることがはっきり示されました。
◇全精神病や知的障碍者も該当しているでしょう!
まるで45億年前の太陽系!? “惑星の誕生”が初めて観測される
2025.09.13
https://wired.jp/article/exoplanet-gap-discovery/
脳から直接脳波を読み取り意思疎通 ALS患者などの生活の助けに 埋め込み型BCI装置開発 2028年の実用化に向けて年内の治験申請を目指す
9/14(日) 9:00
https://news.yahoo.co.jp/articles/cf64abfd0662436950e9bcccf85ddefd84a6b33e
860: (ワッチョイ 8f1f-42/7) 09/14(日)20:14 ID:EbV68LBT0(1)調 AAS
スレチ
861: (アウアウウー Sa53-ilUi) 09/14(日)20:28 ID:uqktGAy2a(1)調 AAS
まるちんこ
862(2): (ワッチョイ ff02-LMNA) 09/19(金)12:09 ID:qGqvKNvA0(1)調 AAS
awkで以下のように連想配列を使ってます
BEGIN {
arr["id1"] = "val1";
arr["id2"] = "val2";
printf(arr["id2"]);
}
→結果は「val2」
また、以下のようなid列、val列のCSVファイルがあります
id1,val1
id2,val2
これらのものを使い、Pythonでも同様に、idが指定した値に合致するval列を取得したいと思ってます
以下のようにcsv.DictReaderを使ってディクショナリに読み込んでみることはできました
with open('data/data.csv', 'r') as file:
d = list(csv.DictReader(file, fieldnames=['id', 'val']))
このリストを列挙して中身を表示する等はできたのですが、
指定したidに合致するval列を取得する方法が分かりません
よい方法を教えてください
863: (ベーイモ MM8f-xxKh) 09/19(金)12:24 ID:4hZSGpQJM(1)調 AAS
>>862
1. そのレスを丸ごとコピーします
2. ChatGPTやClaude等のAIの入力欄に貼り付けます
3. メッセージを送信します
4. (゚д゚)
864: (ワッチョイ 3f32-yasC) 09/19(金)12:53 ID:jazVqD/P0(1)調 AAS
ありがとうございます!!
865(1): (ワッチョイ 8ff0-0uML) 09/19(金)13:17 ID:2/pebCZF0(1)調 AAS
d['id1'] で 'val1' を参照できるようにしたいということなら、各行ごとに1つのdict にするんじゃなくて、全体を1つのdict にする方がいいのでは。 d = { id: val for id, val in csv.reader( file ) } とかは?
866(1): (スフッ Sd5f-ilUi) 09/19(金)13:47 ID:tcJc82E7d(1)調 AAS
with open('data/data.csv', 'r') as file:
d = csv.DictReader(file, fieldnames=['id', 'val'])
print(d['idHOGE'])
867: (ワッチョイ 4f01-hzaU) 09/19(金)16:26 ID:vOzhAdtP0(1)調 AAS
今はChatGPTでも重複時はどうしますか?ってちゃんと確認してくるんだな
出てくるコードの質はともかく要点はほぼ全部網羅してくれてめちゃ親切
868: (ワッチョイ 7f36-IHfe) 09/19(金)18:19 ID:7aePTcRM0(1)調 AAS
chatGPTにプログラムの質問をするときは必ずThinkingモードにすること
デフォルト設定だとThinkingしないクソコード出してくることが多い
869: (アウアウウー Sa53-ilUi) 09/19(金)19:23 ID:hOahK7C8a(1)調 AAS
ちっとは考えろやバカタレ
870: (ワッチョイ 3f02-VRQG) 09/20(土)18:48 ID:usmEJHWE0(1)調 AAS
Visual Studio Codeの変数ウォッチウィンドウが見づらいわ
他にないのかね?
871(1): (ワッチョイ 8ffc-tBek) 09/20(土)19:05 ID:FzwQ5fID0(1)調 AAS
現状VSCodeかPyCharmの二択だからPyCharmかな試すなら
やりたいことによってはJupyterが最強の場合もある
872: (ワッチョイ 0602-faWY) 09/21(日)10:32 ID:oeEC4MB10(1)調 AAS
>>865
>>866
回答どうもです
いろいろと見直し、全体を1つのdictにする、という方針として、以下のようにしました
awkの連想配列とPythonの辞書の違いを再認識しました
with open('data/data.csv', 'r') as file:
d = csv.DictReader(file, fieldnames=['id', 'val'])
result = {row['id']: row['val'] for row in d}
print(result['id2'])
→val2が得られる
873: (ワッチョイ 0601-WLcO) 09/21(日)12:52 ID:wuI8+BKP0(1)調 AAS
id重複時に黙って後勝ちになるが望ましいかどうか
874(1): (ワッチョイ 6a04-lG8I) 09/21(日)13:04 ID:ttcu4MUo0(1/2)調 AAS
そんなことはどうでもいいだろうよ
責任の所在の話したってしょうがないでしょ
875: (ワッチョイ 8a02-CSnM) 09/21(日)14:22 ID:RnLJIZeo0(1)調 AAS
>>871
まあ、PyCharmも似たようなもんだね…
業務レベルなので、Jupyterは無理かな…
876: (ワッチョイ 3bf6-4qXD) 09/21(日)14:41 ID:KUfqxhia0(1/3)調 AAS
awkのことはよく知らないが、連想配列でキーの重複があるの?
877(1): (ワッチョイ 6f54-vMDn) 09/21(日)15:03 ID:TKqe4uhF0(1/2)調 AAS
あんなのはハッシュだしな
どうやって衝突回避してるのか謎だった
今も謎
878(2): (ワッチョイ 9301-xzLD) 09/21(日)15:34 ID:kS1Ctw9y0(1/2)調 AAS
>>874
外部ファイルから読み込むのに重複時の振る舞いがどうでもいい場合なんてある?
仮に後勝ちは望ましくないがチェック処理を入れるくらいならサイレントにバグるので問題ないケースだとしてもそういう確認とか意思決定は明示的にしないといけないんじゃない
879: (ワッチョイ 9301-xzLD) 09/21(日)15:37 ID:kS1Ctw9y0(2/2)調 AAS
>>877
ハッシュの衝突を回避してるわけじゃなくて衝突してもいいような構造にしてるだけ
その代わり衝突が増えるにつれ性能が悪化していく
880(1): (ワッチョイ 3bf6-4qXD) 09/21(日)15:54 ID:KUfqxhia0(2/3)調 AAS
862を読む限り、csvファイルのキー列の値のユニーク性は前提になっていると思うんだが。だから連想配列とかdictに入れるって想定なんじゃないの?
881(1): (ワッチョイ 6a04-lG8I) 09/21(日)15:59 ID:ttcu4MUo0(2/2)調 AAS
>>878
データの操作とデータ構造の検査は切り分けることが出来る話でしょ
質問はデータ操作なんだからそっちにフォーカスすればいい
IDなんて名前なんだから作成元が非重複を保証してんのかもしれんし、貰い手側が質問の処理の前段でなんかチェックさせてもいい
いずれにしてもこの質問では考慮する必要のないかつ混同する必要のない事柄ってこと
882(1): (ワッチョイ 732a-ljyC) 09/21(日)16:40 ID:e5nOC9aY0(1)調 AAS
>>878
> 外部ファイルから読み込むのに重複時の振る舞いがどうでもいい場合なんてある?
ログファイルを読み、とある項目の最新内容が欲しい場合とか。
883(1): (ワッチョイ 8701-xzLD) 09/21(日)17:30 ID:7OCfaZ6W0(1)調 AAS
>>881
俺は分けることができるとも分けたほうがいいとも思わないから考え方の違いだね
チェックを入れると内包表記を使わないほうがよくなる可能性が高かったりするわけでデータ操作と呼んでるところの内容が変わってくる
>>880
ユニークが前提となっているからどうでもよいじゃなくて「ユニークが前提なので万が一重複が来た時は後勝ちで問題ない」というところまで明確に判断しておいたほうがいいんじゃないのという話
>>882
それはどうでもいい場合じゃなくてログを読む方向に合わせて後勝ちか先勝ちかどちらか一方に仕様を決めなければいけない場合だと思う
884: (ワッチョイ 6f54-vMDn) 09/21(日)17:58 ID:TKqe4uhF0(2/2)調 AAS
何かの関数の戻り値を渡す、みたいに動作が決まってたら決め打ちでいいけど、
ファイルや通信なんか何でもありなので、
そもそも開けない、通信できない、から始まって、間違いまくったデータでもちゃんと動かないと
885(2): (ワッチョイ 3bf6-4qXD) 09/21(日)19:55 ID:KUfqxhia0(3/3)調 AAS
>>883
ユニーク性が前提となっていることを明確にしておくのはいいことだけど、ユニーク性を前提として設計しているにも拘らず「万一重複が来た」らそれ自体大問題だと思うけど。それは想定していた前提が成立していないということでしょ。そもそも862のようにid値を検索キーとして使う場合で「後勝ちで問題ない」場合なんてあるかな?
重複がないということを前提にできるからこそdictを使っているのであって、前提が変わってくるならデータ構造の選択とかも変わってくると思うけど。一般論としてデータに重複があっても問題がない場合かどうか気をつけようということなら素直に頷けるんだけど、862のケースで主張するのはムリがあると思うよ。
886: (アウアウウー Sacf-kv3/) 09/21(日)19:56 ID:kxRRh56Ha(1)調 AAS
うましかいないよな
887: (ワッチョイ 8eaf-wBym) 09/21(日)20:54 ID:ORrZGGDb0(1)調 AAS
https://mannersy.co.jp/guivenv.htm
888: (ワッチョイ 2e01-xzLD) 09/21(日)23:42 ID:4W4Jokme0(1)調 AAS
>>885
個人的にはソフトウェアの設計は想定している前提が成立していない場合の対応まで決めるものだと思ってるけど、今回のはそんな大げさな話じゃないよね
後勝ちになる実装を採用してることを自覚してそれで問題ないと判断できてるかどうか
889(1): (ワッチョイ 1e10-4qXD) 09/22(月)00:15 ID:scIzhboY0(1/2)調 AAS
重複がありうる状況なら、後勝ちで上書きしてしまう仕様で問題ないわけないだろ。862みたいに検索キーとして使っている場合に。誰がそんな状況でdictを使うんだよ、あほか。
890: (ワッチョイ 2e01-xzLD) 09/22(月)00:42 ID:nbJbLtLI0(1/2)調 AAS
>>889
上で出てきたログの例を理解できない?
後勝ちでいい例なんていくらでもあると思うんだが
891: (ワッチョイ 1e10-4qXD) 09/22(月)01:23 ID:scIzhboY0(2/2)調 AAS
あのさ、>>862をもう一回読んできたら? 「idが指定した値に合致するval列を取得したい」って書いてあるだろ?
idに重複があったら、val列の値の中に参照できないものが出てきてしまうわけだけど、それを許容している状況設定だと本気で思うのか?
892: (ワッチョイ 2e01-xzLD) 09/22(月)01:41 ID:nbJbLtLI0(2/2)調 AAS
>>885
「862のようにid値を検索キーとして使う場合」とか「862みたいに検索キーとして使っている場合」って書いてたら「id値を検索キーとして使う場合」のジェネラルな話をしてるのかと思うじゃん普通?
862に限定した話ならそりゃ重複時に上書きが望ましい可能性は低そうだと思うよ
だからこそ問題提起したわけで
ただ「望ましい」と「問題ない」は同じではなくて単純上書き以外の実装をする価値がないくらいに重複の可能性が低いなら望ましくなくても上書きする実装でも問題ないという判断もありえるよね
結局自覚して意思決定できてるかどうか
893: (ワッチョイ 23ad-0Qkb) 09/24(水)00:35 ID:q1Q2Yb580(1)調 AAS
そもそも awkの例を出してきた人が、連想配列の重複を考慮していないのに
それを python で ってやったから、おかしくなっているとしか
中途半端に、awk を出した結果
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 1.542s*