【まず1嫁】くだすれPython(超初心者用) その55at TECH
【まず1嫁】くだすれPython(超初心者用) その55 - 暇つぶし2ch170:デフォルトの名無しさん
21/10/12 17:12:16.40 db3N35kL.net
>>169
こうですか?
item = next(filter(lambda d: d[id] == _id, db))

171:デフォルトの名無しさん
21/10/12 18:55:46.32 rbfrUXN4.net
線形探索に変わりはないから本質的には変わらない
規模と目的にもよるが事前にハッシュテーブルを作成するなりしたらいいんじゃない?

172:デフォルトの名無しさん
21/10/12 19:05:49.73 rbfrUXN4.net
>>170
最初の1つを取得したいなら素直にfor文で回して見つけ次第breakすればいいんじゃない?

173:デフォルトの名無しさん
21/10/12 19:27:30.01 db3N35kL.net
>>172
検索速度を速くするために内包表記、全走査せず見つけたら止まるようにジェネレータを使うので
item = next(filter(lambda d: d[id] == _id, db))
もしくは、
item = next(d for d in db if d[id] == _id)
>>171
ハッシュテーブル使うならこうですか?
item = eval(' | '.join([f'db[{i}]' for i in range(len(db))]))[id]

174:デフォルトの名無しさん
21/10/12 19:48:08.27 Y4+OaxqJ.net
謎のなりすましw

175:デフォルトの名無しさん
21/10/12 20:14:27.30 DOoMLgfj.net
tkinterとMVCを勉強中なんですが
view用のtkvarってmodel(db)に置くんですか?
view側が持つのですか?

176:デフォルトの名無しさん
21/10/12 20:38:17.90 db3N35kL.net
>>174
答えは見つかりましたか?

177:デフォルトの名無しさん
21/10/13 00:27:53.69 zS1AsSBo.net
>>173
内包表記使わないと死ぬ病気なの?
いつ、何故内包表記が速くなるか勉強した方がいい
ネットに落ちているサンプルコードのように繰り返しappendする訳でもないのだから大して変わらん

178:デフォルトの名無しさん
21/10/13 04:42:48.68 +txmauo5.net
>>175
view
ウィジェットとtkvar(表示(view)に関わる)
model
変数(データ実体)
controller
view.widget.tkvar.set(mode.var)
おれの認識

179:デフォルトの名無しさん
21/10/13 08:21:06.00 5N5C/lUt.net
>>177
内包表記みるとファビョっちゃう病気なの?
内包表記が速くなるだけじゃないことを勉強した方がいい
ネットに落ちてるサンプルコードのように単純な処理のだから内包表記を使わない手はない

180:デフォルトの名無しさん
21/10/13 08:46:20.82 XAFUKX/t.net
内包表記ってなんですか?

181:デフォルトの名無しさん
21/10/13 10:54:11.99 V99uCirA.net
[_ for _ in (1,2,3)]

182:デフォルトの名無しさん
21/10/13 12:56:21.92 xAxceSCu.net
どんなに複雑なコードでも内包表記で書こうとするような奴はPython向いてないとは思う

183:デフォルトの名無しさん
21/10/13 13:38:38.75 znbxIIJY.net
馬鹿の一つ覚え

184:デフォルトの名無しさん
21/10/13 14:17:57.86 k/aGOBxZ.net
next filterは見た目いいけどそのままだと例外飛ぶからdefault指定すべき
あとid検索をしょっちゅうやるつもりなら171の言う通りidをキーに持つハッシュテーブルにしたほうがいい

185:デフォルトの名無しさん
21/10/13 15:04:27.22 i0OqJqsg.net
ネストする時は内包表記でもインデントしてね

186:デフォルトの名無しさん
21/10/13 15:48:08.21 5N5C/lUt.net
>>184
お、褒められたw default指定か、なるほど、、じゃあこう
item = next(filter(lambda d: d[id] == _id, db), None)
ハッシュテーブルって辞書のことですよね?

187:デフォルトの名無しさん
21/10/14 08:52:02.98 tO9afOB/.net
>>178
Viewは簡単に生き死にするから、変数(データ実体) をtkvarにしてModelに持たせる方がいいと思うよ。
形式変換などが必要なときは、Modelにそれ用のアクセサを付ければいい。
ControllerがModelとViewのインスタンスを持ち、ViewはControllerだけを参照する。
Modelは基本的にController、Viewの参照をどっちも持たない。

188:デフォルトの名無しさん
21/10/14 09:10:49.38 Exint/Io.net
作り方にもよるけど
tkinterをqtに変えようとか、移植に伴ってツールキットを交換することを考えると
modelをtkverのデータ置きにすると全面的な書き直しがいると思うつーか、そうなった
ので俺は最近modelには一般の変数とロジックだけ置く
viewには可能な限りtkinter固有の全部を置く。vcmdとかも
で全操作をcontrollerに書く。コイツが全部の発信源
よくviewがmodel見る三角形図あるけど、個人的にはviewの影響を限定的にしたい
URLリンク(i.imgur.com)

189:デフォルトの名無しさん
21/10/14 09:42:03.64 tO9afOB/.net
確かに、tkinterのVarはデータバインディング(しかも双方向可能)の考え方そのものなので、
MVCに少しそぐわない(ViewModelっていうんだっけ?)。
どっちにしろ、データベースやネットワークサービスがデータソースになる場合は、Varは単なるバスみたいな使い方になるし。

190:デフォルトの名無しさん
21/10/14 11:40:53.17 wCUDNz+i.net
まあ移植性を捨てればtkvarはdbに置いて
bindingと最小限のイベントハンドラをcontrollerに置いて
あとはm-v間でやってくれぇ~というのが一番書きやすいだろう
真面目にやるとcontroller薄くなりすぎるはずなのでc-vとmに分けるっていうのも良いと思う。わしはこれが好き
GUI(tk.Tk):
_super().__init__()
云々
GUI.mainloop()するやつ


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch