当スレに★Python以外のプログラミング言語での回答類を書くべからず★
派生言語はそれぞれ専スレがある(この板にあるとは限らない)ので、そっち池。
「Ruby」「Rails」「某言語では」「クソチョンw」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。
このスレッドは「お勉強」スレのほうには書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を、勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますので、お礼は Python の布教と初心者の救済をお願いします。
★エラーを解決したい場合★は、
表示されたエラーの全文(勝手に省略やスクショうp等の横着クソ行為禁止)と、
実行環境(Pythonのバージョン・OSとIDEの種類およびバージョン)をシッカリ書くこと。
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
〇前スレ〇 【まず1嫁】くだすれPython(超初心者用) その54
https://mevius.5ch.net/test/read.cgi/tech/1623240344/
次スレたては >>985 あたりが挑戦する。
### END OF TEMPLATE ###
探検
【まず1嫁】くだすれPython(超初心者用) その55
■ このスレッドは過去ログ倉庫に格納されています
2021/10/01(金) 15:46:47.17ID:9qOHXj6D
124デフォルトの名無しさん
2021/10/09(土) 16:19:52.75ID:/xiMgjvY sys.stdout.write()
125デフォルトの名無しさん
2021/10/09(土) 16:24:43.13ID:dPZPc1xL WindowsというかDOSの頃から内部は/でもパス区切りできて
バックスラッシュ要求するのはシェルや一部のアプリ
単体プログラムなら/で書いたほうがポータビリティある
バックスラッシュ要求するのはシェルや一部のアプリ
単体プログラムなら/で書いたほうがポータビリティある
126デフォルトの名無しさん
2021/10/09(土) 18:09:17.61ID:JVX7Q22F >>121
Path.globでイテレータを作成した後に追加・削除されたファイルやディレクトリは
イテレーションに含まれるか含まれないかは不定なので
それでも困らないような使い方じゃなければ使い方が悪い
>例外で取得できるのは問題のないディレクトリにアクセスするときの間違ったファイル名です
問題のないディレクトリなのに間違ったファイル名なのか・・・・
全部読んでないからかよくわからん
Path.globでイテレータを作成した後に追加・削除されたファイルやディレクトリは
イテレーションに含まれるか含まれないかは不定なので
それでも困らないような使い方じゃなければ使い方が悪い
>例外で取得できるのは問題のないディレクトリにアクセスするときの間違ったファイル名です
問題のないディレクトリなのに間違ったファイル名なのか・・・・
全部読んでないからかよくわからん
127デフォルトの名無しさん
2021/10/09(土) 19:07:55.16ID:Ngy1mnu3 統合環境?総合環境?
おすすめの教えて
winでもマックでもリヌクスでもいいです
おすすめの教えて
winでもマックでもリヌクスでもいいです
128デフォルトの名無しさん
2021/10/09(土) 19:13:36.12ID:/xiMgjvY eric4
129デフォルトの名無しさん
2021/10/09(土) 19:19:03.79ID:A9QtIjdU130デフォルトの名無しさん
2021/10/09(土) 21:23:39.35ID:aguDhBGS >>127
Jupyter Notebook、Notebookの後継であるJupyterLab、
VSCode, Google Collaboratory
YouTube などで、よく紹介されているのは、Google Collaboratory
他には、WSL2, Linux, Docker
多言語のversion manager なら、asdf とか、
日本人が作った、バージョンマネージャーのanyenv とか
anyenvでは、19言語を統一された方法で、
nodenv, phpenv, pyenv, rbenv, goenv, jlenv などを使う。
Python ならpyenv、Julia ならjlenv
Python標準では、venv
多くの言語で、version manager の使い方を統一したいのなら、asdf, anyenv
Jupyter Notebook、Notebookの後継であるJupyterLab、
VSCode, Google Collaboratory
YouTube などで、よく紹介されているのは、Google Collaboratory
他には、WSL2, Linux, Docker
多言語のversion manager なら、asdf とか、
日本人が作った、バージョンマネージャーのanyenv とか
anyenvでは、19言語を統一された方法で、
nodenv, phpenv, pyenv, rbenv, goenv, jlenv などを使う。
Python ならpyenv、Julia ならjlenv
Python標準では、venv
多くの言語で、version manager の使い方を統一したいのなら、asdf, anyenv
131デフォルトの名無しさん
2021/10/09(土) 23:27:09.55ID:cIVnj/jm132130
2021/10/10(日) 00:15:53.95ID:lB7MFpHR プロ用では、anyenv から、Docker へ移行していくだろう
133デフォルトの名無しさん
2021/10/10(日) 05:07:59.49ID:wTu2fZfo tkinterにドラッグアンドドロップつける
tkinterDnD2というやつ
dnd_root.bind(<Drop>, callback)
callback(ev):
__files = dnd_root.splitlist(ev.data)
みたいに書きます
このevてdndEventクラスで
http://tkinterdnd.sourceforge.net/TkinterDnD.html#DnDEvent
にあるように、いくつかの属性にアクセスできるんだけど
この属性のそれぞれが何を意味してるのかっていうのは、どこに書いてあるんでしょうか
ドキュメント的なものを探してるんだけど、見当たらなくて
tkinterDnD2というやつ
dnd_root.bind(<Drop>, callback)
callback(ev):
__files = dnd_root.splitlist(ev.data)
みたいに書きます
このevてdndEventクラスで
http://tkinterdnd.sourceforge.net/TkinterDnD.html#DnDEvent
にあるように、いくつかの属性にアクセスできるんだけど
この属性のそれぞれが何を意味してるのかっていうのは、どこに書いてあるんでしょうか
ドキュメント的なものを探してるんだけど、見当たらなくて
134デフォルトの名無しさん
2021/10/10(日) 08:00:27.46ID:kKlMir+m >>133
https://www.ellogon.org/petasis/index.php/tcltk-projects/tkdnd/tkdnd-man-page#lbAI
TkinterDnD.pyは読んでる前提
https://www.ellogon.org/petasis/index.php/tcltk-projects/tkdnd/tkdnd-man-page#lbAI
TkinterDnD.pyは読んでる前提
135デフォルトの名無しさん
2021/10/10(日) 09:09:58.87ID:wTu2fZfo >>134
おー助かりました
おー助かりました
136デフォルトの名無しさん
2021/10/10(日) 09:10:27.91ID:YLnhElYI137デフォルトの名無しさん
2021/10/10(日) 11:33:12.15ID:ykpYSE0z 私の開発環境はIDLEとGVIMだわ、大したことやってないし
138デフォルトの名無しさん
2021/10/10(日) 12:39:25.44ID:H4xzBt6k importで頭が混乱してきました
https://pastebin.com/tRafMmRt
sample0.pyのimport sample2で、sample2内のsample1がimportされると思ったのですが
結果、importはされませんでした
そう判断したのは、sample0→sample2でのsample1のimportで
printもされず、BASEのランダムも生成されなかったからです
これは、sample0.pyでsample1をすでにimportしているので
sample2内のsample1のimportは省略というか、
sample0でのsample1のimportを引き継いだ
みたいなことでいいのでしょうか・・?
https://pastebin.com/tRafMmRt
sample0.pyのimport sample2で、sample2内のsample1がimportされると思ったのですが
結果、importはされませんでした
そう判断したのは、sample0→sample2でのsample1のimportで
printもされず、BASEのランダムも生成されなかったからです
これは、sample0.pyでsample1をすでにimportしているので
sample2内のsample1のimportは省略というか、
sample0でのsample1のimportを引き継いだ
みたいなことでいいのでしょうか・・?
139デフォルトの名無しさん
2021/10/10(日) 13:16:40.64ID:kKlMir+m >>138
そう
あちこちにあるimport sys他が都度走るのはいやだし
https://docs.python.org/ja/3/reference/import.html
他の動作も可能だけれどフレームワーク実装とか特殊なケースでなければ
モジュール側でうまく対応した方が良い。
そう
あちこちにあるimport sys他が都度走るのはいやだし
https://docs.python.org/ja/3/reference/import.html
他の動作も可能だけれどフレームワーク実装とか特殊なケースでなければ
モジュール側でうまく対応した方が良い。
140デフォルトの名無しさん
2021/10/10(日) 13:24:05.94ID:H4xzBt6k >>139
なるほど・・
どうもimportするたびに新規発行されるみたいなイメージが強くなってしまって・・
>あちこちにあるimport sys他が都度走る
たしかにそうですよね
ありがとうございました
なるほど・・
どうもimportするたびに新規発行されるみたいなイメージが強くなってしまって・・
>あちこちにあるimport sys他が都度走る
たしかにそうですよね
ありがとうございました
141デフォルトの名無しさん
2021/10/10(日) 14:08:59.72ID:PpP5FnLO >>114
>>122
for x in range(500000):
p_err_files = p_err_files_org.copy()
for i in p_err_files:
for j in p_err_files:
if str(i).replace("/", "\\").startswith(str(j).replace("/", "\\")):
if len(str(i)) > len(str(j)):
p_err_files.remove(i)
7秒
for x in range(500000):
p_err_files = p_err_files_org.copy()
for i in p_err_files:
p_err_files = [j for j in p_err_files if not j.match(str(i/'*'))]
97秒
p_err_filesの内容によってどう変わるかわかりませんがかなり遅いです
綺麗な書き方だけにどうにかしたい
報告です。質問じゃないです
>>122
for x in range(500000):
p_err_files = p_err_files_org.copy()
for i in p_err_files:
for j in p_err_files:
if str(i).replace("/", "\\").startswith(str(j).replace("/", "\\")):
if len(str(i)) > len(str(j)):
p_err_files.remove(i)
7秒
for x in range(500000):
p_err_files = p_err_files_org.copy()
for i in p_err_files:
p_err_files = [j for j in p_err_files if not j.match(str(i/'*'))]
97秒
p_err_filesの内容によってどう変わるかわかりませんがかなり遅いです
綺麗な書き方だけにどうにかしたい
報告です。質問じゃないです
142デフォルトの名無しさん
2021/10/10(日) 15:13:50.14ID:ykpYSE0z >>141
ふむ、matchが遅いのだろうね、、じゃあ二人の良いところをドッキングしよう
for x in range(500000):
____p_err_files = p_err_files_org.copy()
____for i in p_err_files:
________i = str(i).replace("/", "\\") + '\\' #replaceのせいで見にくいからあえて別にしてみました
________p_err_files = [j for j in p_err_files if not str(j).replace("/", "\\").startswith(i)]
これは3秒いっちゃうんじゃない?
ところで/と\\って混在するの? pathlib.Pathをstr変換するとOSに合わせた区切り文字で文字列化しない?
replaceいらないんじゃない? いや、私も昔混在しててエラーになった経験があるんだけども
それって文字列化してから自分でスラッシュを足して混在させてたような気がしてきた
今適当にやってみても混在しないし・・さ
ふむ、matchが遅いのだろうね、、じゃあ二人の良いところをドッキングしよう
for x in range(500000):
____p_err_files = p_err_files_org.copy()
____for i in p_err_files:
________i = str(i).replace("/", "\\") + '\\' #replaceのせいで見にくいからあえて別にしてみました
________p_err_files = [j for j in p_err_files if not str(j).replace("/", "\\").startswith(i)]
これは3秒いっちゃうんじゃない?
ところで/と\\って混在するの? pathlib.Pathをstr変換するとOSに合わせた区切り文字で文字列化しない?
replaceいらないんじゃない? いや、私も昔混在しててエラーになった経験があるんだけども
それって文字列化してから自分でスラッシュを足して混在させてたような気がしてきた
今適当にやってみても混在しないし・・さ
143デフォルトの名無しさん
2021/10/10(日) 16:01:08.25ID:PpP5FnLO144デフォルトの名無しさん
2021/10/10(日) 16:15:29.74ID:PpP5FnLO 混在するのいやだから自分でつなぐときos.path.join使ってます
今ソース確認したけど"/"使ってない
今ソース確認したけど"/"使ってない
145デフォルトの名無しさん
2021/10/10(日) 16:23:35.36ID:ykpYSE0z146デフォルトの名無しさん
2021/10/10(日) 17:00:09.47ID:PpP5FnLO 取得したばかだから混在はないですね
最終形
for x in range(500000):
____p_err_files = p_err_files_org.copy()
____for i in p_err_files:
________p_err_files = [j for j in p_err_files if not str(j).startswith(str(i) + os.sep)]
最終形
for x in range(500000):
____p_err_files = p_err_files_org.copy()
____for i in p_err_files:
________p_err_files = [j for j in p_err_files if not str(j).startswith(str(i) + os.sep)]
147デフォルトの名無しさん
2021/10/10(日) 17:10:38.07ID:ykpYSE0z >>146
う、美しい、、os.sepもエレガント
う、美しい、、os.sepもエレガント
148デフォルトの名無しさん
2021/10/10(日) 20:43:45.45ID:PpP5FnLO ありゃ、バグってたかも(最終形じゃないやつ)
新コード 14秒
for x in range(5000):
____p_err_files = [str(p) for p in p_err_files_org]
____for i_idx, i in enumerate(p_err_files[:-1]):
________for j in p_err_files[i_idx + 1:]:
____________if j.startswith(i + os.sep):
________________p_err_files.remove(j)
____p_err_files = [pathlib.Path(p) for p in p_err_files]
最終形って書いたコード 56秒
新コードがバグってないかよくテストしなければ
新コード 14秒
for x in range(5000):
____p_err_files = [str(p) for p in p_err_files_org]
____for i_idx, i in enumerate(p_err_files[:-1]):
________for j in p_err_files[i_idx + 1:]:
____________if j.startswith(i + os.sep):
________________p_err_files.remove(j)
____p_err_files = [pathlib.Path(p) for p in p_err_files]
最終形って書いたコード 56秒
新コードがバグってないかよくテストしなければ
149デフォルトの名無しさん
2021/10/10(日) 21:08:00.05ID:PpP5FnLO 最初のデータだと
新コード 14秒
最終形って書いたコード 4秒
件数が多いと新コードが早い
新コード 14秒
最終形って書いたコード 4秒
件数が多いと新コードが早い
150デフォルトの名無しさん
2021/10/10(日) 21:41:11.57ID:ykpYSE0z for x in range(5000):
____p_err_files = p_err_files_org.copy()
____for i in p_err_files:
________if i.is_dir():
____________i = str(i) + os.sep
____________p_err_files = [j for j in p_err_files if not str(j).startswith(i)]
最速のコード・・できました、、これは2秒台かもしれん
最後がドットのディレクトリでis_dir()ができるのか知りませんが
____p_err_files = p_err_files_org.copy()
____for i in p_err_files:
________if i.is_dir():
____________i = str(i) + os.sep
____________p_err_files = [j for j in p_err_files if not str(j).startswith(i)]
最速のコード・・できました、、これは2秒台かもしれん
最後がドットのディレクトリでis_dir()ができるのか知りませんが
151デフォルトの名無しさん
2021/10/10(日) 22:14:56.87ID:PpP5FnLO152デフォルトの名無しさん
2021/10/10(日) 22:25:50.37ID:PpP5FnLO 件数の多いデータ loop回数減らしてます
新コード 2秒
最終形って書いたコード 11秒
isdir 60秒
新コード 2秒
最終形って書いたコード 11秒
isdir 60秒
153デフォルトの名無しさん
2021/10/10(日) 22:53:16.01ID:fsOtTZsl > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
154デフォルトの名無しさん
2021/10/10(日) 23:14:16.55ID:kKlMir+m is_dir()はos.stat(fstat)つかってそうだし遅いだろうね
事後処理多すぎるしos.walk()のが適当かも
事後処理多すぎるしos.walk()のが適当かも
155デフォルトの名無しさん
2021/10/10(日) 23:25:00.22ID:ykpYSE0z for x in range(5000):
____p_err_files = p_err_files_org.copy()
____for idx, i in enumerate(p_err_files[:-1], start=1):
________i = str(i) + os.sep #これは出した方が速いの?変わらない?
________p_err_files = [j for j in p_err_files[idx:] if not str(j).startswith(i)]
界王拳3倍だぁああああ
____p_err_files = p_err_files_org.copy()
____for idx, i in enumerate(p_err_files[:-1], start=1):
________i = str(i) + os.sep #これは出した方が速いの?変わらない?
________p_err_files = [j for j in p_err_files[idx:] if not str(j).startswith(i)]
界王拳3倍だぁああああ
156デフォルトの名無しさん
2021/10/10(日) 23:36:40.30ID:ykpYSE0z やっぱ>>155は無し
このp_err_files[:-1]やp_err_files[idx:]ってダメな気がする
途中でp_err_filesの要素抜くからバグる気がするんだけど・・
新コードと最終形の結果同じなんだよね?
このp_err_files[:-1]やp_err_files[idx:]ってダメな気がする
途中でp_err_filesの要素抜くからバグる気がするんだけど・・
新コードと最終形の結果同じなんだよね?
157デフォルトの名無しさん
2021/10/10(日) 23:50:06.43ID:PpP5FnLO >>155
最初のデータ(件数の少ないやつ)
新コード 14秒
155のやつ 2秒
件数の多いデータ 466件
新コード 28秒
155のやつ 32秒
件数の多いほうほぼ互角ですね
>________i = str(i) + os.sep #これは出した方が速いの?変わらない?
圧倒的に速いです
最初のデータ(件数の少ないやつ)
新コード 14秒
155のやつ 2秒
件数の多いデータ 466件
新コード 28秒
155のやつ 32秒
件数の多いほうほぼ互角ですね
>________i = str(i) + os.sep #これは出した方が速いの?変わらない?
圧倒的に速いです
158デフォルトの名無しさん
2021/10/10(日) 23:51:21.86ID:PpP5FnLO159デフォルトの名無しさん
2021/10/10(日) 23:57:12.93ID:ykpYSE0z for x in range(5000):
____p_err_files = p_err_files_org.copy()
____for i in p_err_files:
________if i in p_err_files:
____________i = str(i) + os.sep
____________p_err_files = [j for j in p_err_files if not str(j).startswith(i)]
はい、これ最後にするわw inで抜いた要素の場合は処理を飛ばすです
is_dir()みたいに遅いかも? お疲れっした!
____p_err_files = p_err_files_org.copy()
____for i in p_err_files:
________if i in p_err_files:
____________i = str(i) + os.sep
____________p_err_files = [j for j in p_err_files if not str(j).startswith(i)]
はい、これ最後にするわw inで抜いた要素の場合は処理を飛ばすです
is_dir()みたいに遅いかも? お疲れっした!
160デフォルトの名無しさん
2021/10/11(月) 00:00:41.38ID:Z6IULiPa161デフォルトの名無しさん
2021/10/11(月) 07:20:20.01ID:nIh2l5lJ 出来ました、これが本当の最後! globで作られるリストでは先にディレクトリが並び、
後にそのディレクトリ内のファイルが並ぶことを利用して
消えるのは常にidxの後ろのファイルであることを考慮したものです
for x in range(5000):
____p_err_files = p_err_files_org.copy()
____for idx in range(len(p_err_files)):
________try:
____________i = str(p_err_files[idx]) + os.sep
________except IndexError:
____________break
________p_err_files = [j for j in p_err_files if not str(j).startswith(i)]
見てくださいこのカッコイイボディー、1秒台を叩き出すポテンシャルが伺えます
後にそのディレクトリ内のファイルが並ぶことを利用して
消えるのは常にidxの後ろのファイルであることを考慮したものです
for x in range(5000):
____p_err_files = p_err_files_org.copy()
____for idx in range(len(p_err_files)):
________try:
____________i = str(p_err_files[idx]) + os.sep
________except IndexError:
____________break
________p_err_files = [j for j in p_err_files if not str(j).startswith(i)]
見てくださいこのカッコイイボディー、1秒台を叩き出すポテンシャルが伺えます
162デフォルトの名無しさん
2021/10/11(月) 14:30:12.13ID:Z6IULiPa 最新コードです
メインループはリスト、サブループは集合
リストは長さでソート
集合で in を高速にし、内包表記で削除するデータを集め差集合を求める
件数が多い場合に焦点を当ててます
for x in range(5000):
____p_err_files = p_err_files_org.copy()
____p_err_list = sorted([str(p) for p in p_err_files], key = len)
____p_err_set = set(p_err_list)
____for i in p_err_list:
________if i in p_err_set:
____________i += os.sep
____________p_err_set -= {j for j in p_err_set if j.startswith(i)}
____p_err_files = [pathlib.Path(p) for p in p_err_set]
測定結果は後ほど
メインループはリスト、サブループは集合
リストは長さでソート
集合で in を高速にし、内包表記で削除するデータを集め差集合を求める
件数が多い場合に焦点を当ててます
for x in range(5000):
____p_err_files = p_err_files_org.copy()
____p_err_list = sorted([str(p) for p in p_err_files], key = len)
____p_err_set = set(p_err_list)
____for i in p_err_list:
________if i in p_err_set:
____________i += os.sep
____________p_err_set -= {j for j in p_err_set if j.startswith(i)}
____p_err_files = [pathlib.Path(p) for p in p_err_set]
測定結果は後ほど
163デフォルトの名無しさん
2021/10/11(月) 15:03:13.08ID:yoxInkMN p_err_files_orgを含めてideoneあたりに貼ってくれんかな
164デフォルトの名無しさん
2021/10/11(月) 15:04:52.03ID:Z6IULiPa 最初のデータ(件数の少ないやつ) 500,000ループ
最新コード 14秒
新コード 13秒
最終形って書いたコード 4秒
159 3秒
161 3秒
件数の多いデータ 466件 5,000ループ
最新コード 4秒
新コード 14秒
最終形って書いたコード 54秒
159 28秒
161 13秒
巨大ディレクトリテスト 122496件 1ループ
最新コード 223秒
新コード 277秒
最終形って書いたコード 測定不能ギブアップ
159 ギブアップ
161 ギブアップ
最新コード 14秒
新コード 13秒
最終形って書いたコード 4秒
159 3秒
161 3秒
件数の多いデータ 466件 5,000ループ
最新コード 4秒
新コード 14秒
最終形って書いたコード 54秒
159 28秒
161 13秒
巨大ディレクトリテスト 122496件 1ループ
最新コード 223秒
新コード 277秒
最終形って書いたコード 測定不能ギブアップ
159 ギブアップ
161 ギブアップ
165デフォルトの名無しさん
2021/10/11(月) 15:38:36.71ID:9gfKW03X > ID:PpP5FnLO, ID:ykpYSE0z
そろそろやめてもらっていいですか
そろそろやめてもらっていいですか
166デフォルトの名無しさん
2021/10/11(月) 15:38:47.81ID:nIh2l5lJ >>164
ブラボー、集合速い!
ちなみに最新コードのsetで順番が変わった結果は、これで戻せると思います
____p_err_files = sorted([pathlib.Path(p) for p in p_err_set] , key=p_err_files_org.index)
ブラボー、集合速い!
ちなみに最新コードのsetで順番が変わった結果は、これで戻せると思います
____p_err_files = sorted([pathlib.Path(p) for p in p_err_set] , key=p_err_files_org.index)
167デフォルトの名無しさん
2021/10/12(火) 00:09:42.22ID:QANgax+i >>165
ガイジに話が通じると思ってる奴もガイジ
ガイジに話が通じると思ってる奴もガイジ
168デフォルトの名無しさん
2021/10/12(火) 13:14:04.41ID:Y4+OaxqJ uuid含む辞書 のリストの検索って
やっぱ内包表記が一番早いですか?
item = [d for d in db if d[id] == _id][0]
やっぱ内包表記が一番早いですか?
item = [d for d in db if d[id] == _id][0]
169デフォルトの名無しさん
2021/10/12(火) 14:22:16.90ID:65IdcDyl170デフォルトの名無しさん
2021/10/12(火) 17:12:16.40ID:db3N35kL171デフォルトの名無しさん
2021/10/12(火) 18:55:46.32ID:rbfrUXN4 線形探索に変わりはないから本質的には変わらない
規模と目的にもよるが事前にハッシュテーブルを作成するなりしたらいいんじゃない?
規模と目的にもよるが事前にハッシュテーブルを作成するなりしたらいいんじゃない?
172デフォルトの名無しさん
2021/10/12(火) 19:05:49.73ID:rbfrUXN4 >>170
最初の1つを取得したいなら素直にfor文で回して見つけ次第breakすればいいんじゃない?
最初の1つを取得したいなら素直にfor文で回して見つけ次第breakすればいいんじゃない?
173デフォルトの名無しさん
2021/10/12(火) 19:27:30.01ID:db3N35kL174デフォルトの名無しさん
2021/10/12(火) 19:48:08.27ID:Y4+OaxqJ 謎のなりすましw
175デフォルトの名無しさん
2021/10/12(火) 20:14:27.30ID:DOoMLgfj tkinterとMVCを勉強中なんですが
view用のtkvarってmodel(db)に置くんですか?
view側が持つのですか?
view用のtkvarってmodel(db)に置くんですか?
view側が持つのですか?
176デフォルトの名無しさん
2021/10/12(火) 20:38:17.90ID:db3N35kL >>174
答えは見つかりましたか?
答えは見つかりましたか?
177デフォルトの名無しさん
2021/10/13(水) 00:27:53.69ID:zS1AsSBo178デフォルトの名無しさん
2021/10/13(水) 04:42:48.68ID:+txmauo5 >>175
view
ウィジェットとtkvar(表示(view)に関わる)
model
変数(データ実体)
controller
view.widget.tkvar.set(mode.var)
おれの認識
view
ウィジェットとtkvar(表示(view)に関わる)
model
変数(データ実体)
controller
view.widget.tkvar.set(mode.var)
おれの認識
179デフォルトの名無しさん
2021/10/13(水) 08:21:06.00ID:5N5C/lUt180デフォルトの名無しさん
2021/10/13(水) 08:46:20.82ID:XAFUKX/t 内包表記ってなんですか?
181デフォルトの名無しさん
2021/10/13(水) 10:54:11.99ID:V99uCirA [_ for _ in (1,2,3)]
182デフォルトの名無しさん
2021/10/13(水) 12:56:21.92ID:xAxceSCu どんなに複雑なコードでも内包表記で書こうとするような奴はPython向いてないとは思う
183デフォルトの名無しさん
2021/10/13(水) 13:38:38.75ID:znbxIIJY 馬鹿の一つ覚え
184デフォルトの名無しさん
2021/10/13(水) 14:17:57.86ID:k/aGOBxZ next filterは見た目いいけどそのままだと例外飛ぶからdefault指定すべき
あとid検索をしょっちゅうやるつもりなら171の言う通りidをキーに持つハッシュテーブルにしたほうがいい
あとid検索をしょっちゅうやるつもりなら171の言う通りidをキーに持つハッシュテーブルにしたほうがいい
185デフォルトの名無しさん
2021/10/13(水) 15:04:27.22ID:i0OqJqsg ネストする時は内包表記でもインデントしてね
186デフォルトの名無しさん
2021/10/13(水) 15:48:08.21ID:5N5C/lUt >>184
お、褒められたw default指定か、なるほど、、じゃあこう
item = next(filter(lambda d: d[id] == _id, db), None)
ハッシュテーブルって辞書のことですよね?
お、褒められたw default指定か、なるほど、、じゃあこう
item = next(filter(lambda d: d[id] == _id, db), None)
ハッシュテーブルって辞書のことですよね?
187デフォルトの名無しさん
2021/10/14(木) 08:52:02.98ID:tO9afOB/ >>178
Viewは簡単に生き死にするから、変数(データ実体) をtkvarにしてModelに持たせる方がいいと思うよ。
形式変換などが必要なときは、Modelにそれ用のアクセサを付ければいい。
ControllerがModelとViewのインスタンスを持ち、ViewはControllerだけを参照する。
Modelは基本的にController、Viewの参照をどっちも持たない。
Viewは簡単に生き死にするから、変数(データ実体) をtkvarにしてModelに持たせる方がいいと思うよ。
形式変換などが必要なときは、Modelにそれ用のアクセサを付ければいい。
ControllerがModelとViewのインスタンスを持ち、ViewはControllerだけを参照する。
Modelは基本的にController、Viewの参照をどっちも持たない。
188デフォルトの名無しさん
2021/10/14(木) 09:10:49.38ID:Exint/Io 作り方にもよるけど
tkinterをqtに変えようとか、移植に伴ってツールキットを交換することを考えると
modelをtkverのデータ置きにすると全面的な書き直しがいると思うつーか、そうなった
ので俺は最近modelには一般の変数とロジックだけ置く
viewには可能な限りtkinter固有の全部を置く。vcmdとかも
で全操作をcontrollerに書く。コイツが全部の発信源
よくviewがmodel見る三角形図あるけど、個人的にはviewの影響を限定的にしたい
https://i.imgur.com/a7HUCYH.png
tkinterをqtに変えようとか、移植に伴ってツールキットを交換することを考えると
modelをtkverのデータ置きにすると全面的な書き直しがいると思うつーか、そうなった
ので俺は最近modelには一般の変数とロジックだけ置く
viewには可能な限りtkinter固有の全部を置く。vcmdとかも
で全操作をcontrollerに書く。コイツが全部の発信源
よくviewがmodel見る三角形図あるけど、個人的にはviewの影響を限定的にしたい
https://i.imgur.com/a7HUCYH.png
189デフォルトの名無しさん
2021/10/14(木) 09:42:03.64ID:tO9afOB/ 確かに、tkinterのVarはデータバインディング(しかも双方向可能)の考え方そのものなので、
MVCに少しそぐわない(ViewModelっていうんだっけ?)。
どっちにしろ、データベースやネットワークサービスがデータソースになる場合は、Varは単なるバスみたいな使い方になるし。
MVCに少しそぐわない(ViewModelっていうんだっけ?)。
どっちにしろ、データベースやネットワークサービスがデータソースになる場合は、Varは単なるバスみたいな使い方になるし。
190デフォルトの名無しさん
2021/10/14(木) 11:40:53.17ID:wCUDNz+i まあ移植性を捨てればtkvarはdbに置いて
bindingと最小限のイベントハンドラをcontrollerに置いて
あとはm-v間でやってくれぇ〜というのが一番書きやすいだろう
真面目にやるとcontroller薄くなりすぎるはずなのでc-vとmに分けるっていうのも良いと思う。わしはこれが好き
GUI(tk.Tk):
_super().__init__()
云々
GUI.mainloop()するやつ
bindingと最小限のイベントハンドラをcontrollerに置いて
あとはm-v間でやってくれぇ〜というのが一番書きやすいだろう
真面目にやるとcontroller薄くなりすぎるはずなのでc-vとmに分けるっていうのも良いと思う。わしはこれが好き
GUI(tk.Tk):
_super().__init__()
云々
GUI.mainloop()するやつ
191デフォルトの名無しさん
2021/10/15(金) 16:12:08.85ID:Tty/f66M PythonでLZ4を使うと、lz4.frame,lz4.block,lz4.streamっていうのがあるみたいなのですが
それぞれ何がどう違うのでしょうか
検索すると英語の情報が多いのですが、アホなので分かりません
それぞれ何がどう違うのでしょうか
検索すると英語の情報が多いのですが、アホなので分かりません
192デフォルトの名無しさん
2021/10/15(金) 16:25:20.62ID:yvxpjjvp 質問ですが、defaultdictに対して.getを使った場合、値が存在しない場合でもメモリを使ってしまうのですか?
193デフォルトの名無しさん
2021/10/15(金) 18:54:50.40ID:TUcBd+bC >>192
https://docs.python.org/ja/3/library/collections.html#collections.defaultdict.__missing__
> もし default_factory 属性が None でない場合、このメソッドは引数なしで呼び出され、与えらえた key に対応するデフォルト値を提供します。この値は、辞書内に key に対応して登録され、最後に返されます。
なんでデフォルト値の分消費する。(各種オーバーヘッドは未考慮)
>>> help(collections.defaultdict)
困ったらhelp
同じことが書かれてる
https://docs.python.org/ja/3/library/collections.html#collections.defaultdict.__missing__
> もし default_factory 属性が None でない場合、このメソッドは引数なしで呼び出され、与えらえた key に対応するデフォルト値を提供します。この値は、辞書内に key に対応して登録され、最後に返されます。
なんでデフォルト値の分消費する。(各種オーバーヘッドは未考慮)
>>> help(collections.defaultdict)
困ったらhelp
同じことが書かれてる
194デフォルトの名無しさん
2021/10/15(金) 19:07:39.63ID:4mSLIm8m >>193
ありがとうございます。
ありがとうございます。
195デフォルトの名無しさん
2021/10/16(土) 23:48:05.88ID:7DXC85u5 >>321
youtube-dl --skip-download --dateafter now-3days --get-title --get-id --get-description --get-duration -i "チャンネルURL"
youtube-dl --skip-download --dateafter now-3days --get-title --get-id --get-description --get-duration -i "チャンネルURL"
196デフォルトの名無しさん
2021/10/17(日) 14:11:08.72ID:7C23oe5i Mike Python
197デフォルトの名無しさん
2021/10/17(日) 17:37:19.17ID:kbVq19bl > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
198デフォルトの名無しさん
2021/10/17(日) 19:55:12.60ID:t5hHOLNv Python3.9で、souted()とラムダ式を勉強しているところです
sorted()のkeyに指定するラムダで、戻り値にマイナスを付けるコードがあり、
これは何だろうと思って以下のリストを作成してsorted()にかけて出力してみました
(コメント行として書いている箇所が出力結果です)
li = [('a', 1), ('b', 200), ('c', 50), ('e', -3), ('h', -55000), ('d', 10)]
print(sorted(li, key=lambda x: x[0]))
# [('a', 1), ('b', 200), ('c', 50), ('d', 10), ('e', -3), ('h', -55000)]
print(sorted(li, key=lambda x: -x[0]))
# TypeError bad operand type for unary -: 'str'
print(sorted(li, key=lambda x: x[1]))
# [('h', -55000), ('e', -3), ('a', 1), ('d', 10), ('c', 50), ('b', 200)]
print(sorted(li, key=lambda x: -x[1]))
# [('b', 200), ('c', 50), ('d', 10), ('a', 1), ('e', -3), ('h', -55000)]
出力結果を見るに、マイナスを付けるとreverse=Trueを指定したときと
同じ結果が得られるということなのかなと思ったのですが
1つだけTypeErrorになってしまいました
これは何故なのでしょうか
sorted()のkeyに指定するラムダで、戻り値にマイナスを付けるコードがあり、
これは何だろうと思って以下のリストを作成してsorted()にかけて出力してみました
(コメント行として書いている箇所が出力結果です)
li = [('a', 1), ('b', 200), ('c', 50), ('e', -3), ('h', -55000), ('d', 10)]
print(sorted(li, key=lambda x: x[0]))
# [('a', 1), ('b', 200), ('c', 50), ('d', 10), ('e', -3), ('h', -55000)]
print(sorted(li, key=lambda x: -x[0]))
# TypeError bad operand type for unary -: 'str'
print(sorted(li, key=lambda x: x[1]))
# [('h', -55000), ('e', -3), ('a', 1), ('d', 10), ('c', 50), ('b', 200)]
print(sorted(li, key=lambda x: -x[1]))
# [('b', 200), ('c', 50), ('d', 10), ('a', 1), ('e', -3), ('h', -55000)]
出力結果を見るに、マイナスを付けるとreverse=Trueを指定したときと
同じ結果が得られるということなのかなと思ったのですが
1つだけTypeErrorになってしまいました
これは何故なのでしょうか
199デフォルトの名無しさん
2021/10/17(日) 20:06:53.96ID:hODn77KL sorted関係ないしエラーメッセージがまんま理由
>>> -'a'
…
TypeError: bad operand type for unary -: 'str'
>>> -'a'
…
TypeError: bad operand type for unary -: 'str'
200デフォルトの名無しさん
2021/10/17(日) 20:42:04.88ID:t5hHOLNv >>199
ありがとうございます
戻り値が'a'というstr型なのに負の値にしようとして怒られてるってことでしょうか
key=lambda x: -x[N] という書き方は、reverseオプションの代替ではなく
戻り値に-1を掛けている…という認識であってますか?
(そのため結果として逆順にソートされたように見える)
ありがとうございます
戻り値が'a'というstr型なのに負の値にしようとして怒られてるってことでしょうか
key=lambda x: -x[N] という書き方は、reverseオプションの代替ではなく
戻り値に-1を掛けている…という認識であってますか?
(そのため結果として逆順にソートされたように見える)
201デフォルトの名無しさん
2021/10/17(日) 20:47:32.06ID:NeddvKFI -x[0] の演算順序は、どっち?
-x が先なのか、-(x[0]) のカッコ内が先なのか?
前者なら、xが文字列型で、
後者なら、x[0]が文字列型で、エラー
-x が先なのか、-(x[0]) のカッコ内が先なのか?
前者なら、xが文字列型で、
後者なら、x[0]が文字列型で、エラー
202デフォルトの名無しさん
2021/10/17(日) 23:08:28.45ID:ChJOOsVw >>198
・lambda x: 〜のxには('a', 1)とかが入る
・lambda x: 〜の返り値(〜の計算結果)でソートされる
・文字列型にマイナスを掛ける操作(符号反転)は定義されてないのでエラー
・符号反転がreverse=Trueと等価か?についてはそう考えていいけど数値でないと符号反転操作ができないので万能ではない
・符号反転が役立つのは文字列(例では第1要素)は辞書順でソートして数値(例では第2要素)は降順でソートするとか昇順降順降り混ぜたソートをしたいとき
Effective Pythonからの受け売りなので立ち読みとかできるなら読んでみるといい
・lambda x: 〜のxには('a', 1)とかが入る
・lambda x: 〜の返り値(〜の計算結果)でソートされる
・文字列型にマイナスを掛ける操作(符号反転)は定義されてないのでエラー
・符号反転がreverse=Trueと等価か?についてはそう考えていいけど数値でないと符号反転操作ができないので万能ではない
・符号反転が役立つのは文字列(例では第1要素)は辞書順でソートして数値(例では第2要素)は降順でソートするとか昇順降順降り混ぜたソートをしたいとき
Effective Pythonからの受け売りなので立ち読みとかできるなら読んでみるといい
203デフォルトの名無しさん
2021/10/17(日) 23:47:35.33ID:W3iDPsRK モドリッチ
204デフォルトの名無しさん
2021/10/18(月) 13:59:02.18ID:bl1s8YLW values = [2, 1, 0, 1, 2]
orders = []
values[i]が右より大きいならorders.append[i]
その条件を満たすまでi+nで見ていく.最大値len(values)
上記の例だと[0, 1, 4, 3, 2]
が得たいんだけど、どう書いたらいいですか?
なんか超低速か無限ループにはまってしまって…
orders = []
values[i]が右より大きいならorders.append[i]
その条件を満たすまでi+nで見ていく.最大値len(values)
上記の例だと[0, 1, 4, 3, 2]
が得たいんだけど、どう書いたらいいですか?
なんか超低速か無限ループにはまってしまって…
205デフォルトの名無しさん
2021/10/18(月) 14:01:45.68ID:bl1s8YLW あ valuesはランダムな整数のランダムな長さの配列(1〜10くらい)です
206デフォルトの名無しさん
2021/10/18(月) 14:16:32.64ID:zNA2BH7N なんで01432になるんだろ
01444じゃないの
01444じゃないの
207デフォルトの名無しさん
2021/10/18(月) 14:17:00.26ID:N0fetjcl208デフォルトの名無しさん
2021/10/18(月) 14:18:36.21ID:zNA2BH7N つか問題文は自分の言葉で伝え直さないでコピペするべき
209デフォルトの名無しさん
2021/10/18(月) 15:32:14.49ID:r9t2S6+p コピペばれると退学だから
それと判らないように質問してるんだろう
それと判らないように質問してるんだろう
210デフォルトの名無しさん
2021/10/18(月) 20:16:41.07ID:2nbXAeQ6 言わんとしていることはわかる
ランク付けだろ
rank =[i for i in range(len(values))]
でdrop駆使していけるはずだ
ランク付けだろ
rank =[i for i in range(len(values))]
でdrop駆使していけるはずだ
211デフォルトの名無しさん
2021/10/18(月) 21:39:27.07ID:jVCGujj+ >>3
機械学習で最適なクロール間隔を学習しろ
機械学習で最適なクロール間隔を学習しろ
212デフォルトの名無しさん
2021/10/19(火) 10:06:30.06ID:10EXZk67 def hoge(*,a,b):
_print(a,b)
m="a"
n="b"
eval( f"hoge({m}=10,{n}=20)" )
こういう引数必須で、動的に引数名を指定したい場合
evalを使うのが定石でしょうか?
_print(a,b)
m="a"
n="b"
eval( f"hoge({m}=10,{n}=20)" )
こういう引数必須で、動的に引数名を指定したい場合
evalを使うのが定石でしょうか?
213デフォルトの名無しさん
2021/10/19(火) 10:27:13.40ID:K7fU3Cbr そんな回りくどい処理が必要な状況が、
俺には全く想定できない。
俺には全く想定できない。
214デフォルトの名無しさん
2021/10/19(火) 10:41:06.36ID:LLvKMRJR215デフォルトの名無しさん
2021/10/19(火) 11:38:40.18ID:DE2IVg3K タプルのリストをlist.sort()するとき
同じ値なら元のインデックスが若い順に並びますか?
l = [('あ', 0), ('い', 1), ('う', 0)]
l.sort(key = lambda x:x[1])
必ず
[('あ', 0), ('う', 0), ('い', 1)]
ですか?
場合によって
[('う', 0), ('あ', 0), ('い', 1)]
になりうる?
同じ値なら元のインデックスが若い順に並びますか?
l = [('あ', 0), ('い', 1), ('う', 0)]
l.sort(key = lambda x:x[1])
必ず
[('あ', 0), ('う', 0), ('い', 1)]
ですか?
場合によって
[('う', 0), ('あ', 0), ('い', 1)]
になりうる?
216デフォルトの名無しさん
2021/10/19(火) 11:43:32.81ID:z0N9htUT >>215
https://docs.python.org/ja/3/howto/sorting.html#sort-stability-and-complex-sorts
python list.sort stable
とかでググる
https://docs.python.org/ja/3/howto/sorting.html#sort-stability-and-complex-sorts
python list.sort stable
とかでググる
217デフォルトの名無しさん
2021/10/19(火) 11:47:54.98ID:10EXZk67 >>213,214
ありがとうございます
datetimeのtimedeltaを使いたいのですが
timedelta(seconds=3000)
な感じで、secondsの部分がminutesやdaysにしたいときがあるので
条件分岐していたのですが、他の方法があるのかなと思いまして
ありがとうございます
datetimeのtimedeltaを使いたいのですが
timedelta(seconds=3000)
な感じで、secondsの部分がminutesやdaysにしたいときがあるので
条件分岐していたのですが、他の方法があるのかなと思いまして
218デフォルトの名無しさん
2021/10/19(火) 11:51:51.94ID:kFYLNe28 そもそもですがタプルってなんですか?
219デフォルトの名無しさん
2021/10/19(火) 11:59:21.79ID:10EXZk67 自己解決?したかもです
daysやらminutesやらデフォルト値を0に設定して
timedelta(days=days・・・,seconds=seconds)
みたいに全部ぶっこめばいい気がしてきました
daysやらminutesやらデフォルト値を0に設定して
timedelta(days=days・・・,seconds=seconds)
みたいに全部ぶっこめばいい気がしてきました
220デフォルトの名無しさん
2021/10/19(火) 12:01:28.19ID:DE2IVg3K221デフォルトの名無しさん
2021/10/19(火) 12:11:27.56ID:LLvKMRJR >>219
timedelta()の引数は全部任意でデフォルト値0が設定されてるから自分で指定する必要はないよ
timedelta()の引数は全部任意でデフォルト値0が設定されてるから自分で指定する必要はないよ
222デフォルトの名無しさん
2021/10/19(火) 12:18:41.33ID:10EXZk67 >>221
def hoge(u,v):
_timedelta(ここ=v)
hoge("seconds",3000)みたいなとき
ここ、の部分をどうやって指定するのでしょうか?
if u=="days":
_timedelta(days=v)
略
みたいにしていたのですが
timedelta(days=days,,,,seconds=seconds)
でもいいのかなぁと
def hoge(u,v):
_timedelta(ここ=v)
hoge("seconds",3000)みたいなとき
ここ、の部分をどうやって指定するのでしょうか?
if u=="days":
_timedelta(days=v)
略
みたいにしていたのですが
timedelta(days=days,,,,seconds=seconds)
でもいいのかなぁと
223デフォルトの名無しさん
2021/10/19(火) 12:25:04.75ID:K7fU3Cbr a=minutes=3
timedelta(a)でいいんでない?
timedelta(a)でいいんでない?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【前橋市】小川晶前市長とラブホテルで打ち合わせをした54歳男性職員を停職処分 今月末で依願退職するという [シャチ★]
- 【おこめ券】鈴木農相 米価維持の意図「一切ない」★2 [ぐれ★]
- 【埼玉】「無免許で高速道路で事故」トラックの追突事故で10代男性死亡 無免許過失運転致死の疑いでトルコ国籍の男(22)逮捕 戸田市 [ぐれ★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★6 [七波羅探題★]
- 広島・廿日市、おこめ券配布せず 全市民に3000円現金給付へ [どどん★]
- レーダー照射問題で日本のホットライン呼びかけに中国応じず…2023年3月に開設も機能せず [♪♪♪★]
- ??「税金の必要性について書け」中学生「はい…」 [696684471]
- 【動画】鈴木農水大臣の恥ずかしい動画が発掘される [834922174]
- おじちゃんケツ毛バーガー事件ってなーに?
- 【速報】1ポンド210円で日英GDP逆転(残り1.5円)...世界6位の経済規模に転落 [237216734]
- 【実況】博衣こよりのえちえちチーズケーキを仕込み(雑談あり)🧪★2
- アメップ「ジャップ安すぎワロタ。飛行機代込でもフロリダより東京のディズニー行った方が安いまである」 [649381991]
