↑スレ立てる毎に減るので、減ってたら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/
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
探検
Pythonのお勉強 Part70
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 8b01-Qpn1)
2023/03/04(土) 00:18:00.31ID:dUl31UkL069デフォルトの名無しさん (ワンミングク MM92-h/t+)
2023/03/26(日) 20:00:18.71ID:i0hL3v/7M Google Collaborates で pyinstaller 使ってexe ファイル作成完了通知出てるんだけど、肝心の完成したexe ファイルがgoogle drive の何処にも見当たりません
作業フォルダにある筈なのに
作業フォルダにある筈なのに
70デフォルトの名無しさん (ワッチョイ 2e90-GvoQ)
2023/03/26(日) 22:57:21.33ID:90L+5Zxw0 もしかして:Google Colaboratory
71デフォルトの名無しさん (ブーイモ MM26-pkhP)
2023/03/26(日) 23:11:28.31ID:zGe4zRyjM >>68
子供の年齢や頭の良さやプログラミングを学びたい目的によって
どういう言語がいいかは変わってくるんだから
そこを無視して勝手に選択肢を限定するのはダメだろ
それぞれの状況にあった選択肢を提示しつつその中で自分の考える一番のおすすめと理由をあわせて伝えたほうがいいぞ
共通試験目的限定ならDNCLの範囲だけなので命令型で書ける普通の言語なら基本的にどれでもいい
しいて言えばインデックスがゼロベースじゃない言語はやや不利
子供の年齢や頭の良さやプログラミングを学びたい目的によって
どういう言語がいいかは変わってくるんだから
そこを無視して勝手に選択肢を限定するのはダメだろ
それぞれの状況にあった選択肢を提示しつつその中で自分の考える一番のおすすめと理由をあわせて伝えたほうがいいぞ
共通試験目的限定ならDNCLの範囲だけなので命令型で書ける普通の言語なら基本的にどれでもいい
しいて言えばインデックスがゼロベースじゃない言語はやや不利
72デフォルトの名無しさん (アウアウウー Saa5-jS6D)
2023/03/27(月) 00:02:23.30ID:Zr0uw00ma バックエンドエンジニア : 80万円
Ruby : 90
Python, Go : 85
レガシー
Java : 80
ただし、Pythonはウェブ開発ではなく、AI・機械学習。
Javaは給料の中抜き構造があるので、
リモートワーク・副業など、モダンなバックエンドはRuby
Ruby : 90
Python, Go : 85
レガシー
Java : 80
ただし、Pythonはウェブ開発ではなく、AI・機械学習。
Javaは給料の中抜き構造があるので、
リモートワーク・副業など、モダンなバックエンドはRuby
73デフォルトの名無しさん (ブーイモ MM85-gF7D)
2023/03/27(月) 00:14:37.02ID:oSkR0ochM 一番初めに覚える言語なんて極端に難しかったり非実用的だったりする言語でなければなんでもいいだろう
一つの言語に拘ってる奴は結局モノにならないよ。
一つの言語に拘ってる奴は結局モノにならないよ。
74デフォルトの名無しさん (スプッッ Sdc2-sLGM)
2023/03/27(月) 02:12:05.21ID:rXMlzKKVd Rubyは既に終わってる
これから学ぶのは愚の骨頂
これから学ぶのは愚の骨頂
75デフォルトの名無しさん (アウアウウー Saa5-l/MQ)
2023/03/27(月) 08:13:51.01ID:OH4YPBlYa >>73
じゃあなにか一つ選んで
じゃあなにか一つ選んで
76デフォルトの名無しさん (ブーイモ MM26-0why)
2023/03/27(月) 09:05:16.71ID:3N4bL3ItM エクセルとVBAは理想的
セルをメモリ空間に見立てて好きなとこに数字入れて演算させる
全てのプログラム言語がセル内包してりゃいいのにな
変数初期値もセル内に記述
プログラムはアルゴリズムだけ記述するだけっての
セルをメモリ空間に見立てて好きなとこに数字入れて演算させる
全てのプログラム言語がセル内包してりゃいいのにな
変数初期値もセル内に記述
プログラムはアルゴリズムだけ記述するだけっての
77デフォルトの名無しさん (ワッチョイ 2e46-4NaH)
2023/03/27(月) 10:19:19.01ID:tnMA91mR0 二次元配列を好きに使うと良いのでないの。
78デフォルトの名無しさん (ブーイモ MM26-0why)
2023/03/27(月) 11:42:54.48ID:3N4bL3ItM セル内計算式もプログラムに記述しなくていい
79デフォルトの名無しさん (ワッチョイ 7197-gF7D)
2023/03/27(月) 18:35:08.31ID:yqCWHD4F0 >>75
目的と想定受講者を決めて。
目的と想定受講者を決めて。
80デフォルトの名無しさん (ワッチョイ 6e33-wSlO)
2023/03/27(月) 19:12:03.68ID:78ye37e60 >>79
じゃあ、中学生と高校生の情報の教科書
じゃあ、中学生と高校生の情報の教科書
81デフォルトの名無しさん (ブーイモ MM19-pkhP)
2023/03/27(月) 21:59:41.94ID:OOl3bABcM え?教科書決める側の人なの?
82デフォルトの名無しさん (ワッチョイ dd5f-2p+o)
2023/03/27(月) 22:15:05.71ID:+kKm8gNC0 R7RS-small か R5RS
83デフォルトの名無しさん (ワッチョイ 8102-PjJe)
2023/03/28(火) 14:53:42.83ID:vZrgWFuJ0 >>62
1年次教養の純粋なCS/ITリテラシならPythonがLisp/Schemeを駆逐しつつあるな、数値計算ではFortranとMatlab(Octave),Python+scipy,Rが三強
東大の進振り後の理数系シラバス見るとFortran一強だけど
Fortranといっても今は2008水準が普通だから、ライブラリ無しの素でnumpyより配列操作が短く書けて強力、素で十分なので環境構築も楽
最近pipが検索出来なくなったり不安定なのが解決されれば、やはり最強エコシステムを持つPythonが完全覇権になるのは時間の問題だと思うが
1年次教養の純粋なCS/ITリテラシならPythonがLisp/Schemeを駆逐しつつあるな、数値計算ではFortranとMatlab(Octave),Python+scipy,Rが三強
東大の進振り後の理数系シラバス見るとFortran一強だけど
Fortranといっても今は2008水準が普通だから、ライブラリ無しの素でnumpyより配列操作が短く書けて強力、素で十分なので環境構築も楽
最近pipが検索出来なくなったり不安定なのが解決されれば、やはり最強エコシステムを持つPythonが完全覇権になるのは時間の問題だと思うが
84デフォルトの名無しさん (ワッチョイ 8102-PjJe)
2023/03/28(火) 15:15:05.26ID:vZrgWFuJ0 90年水準(33年前)だけどnumpyとfortranの対応表、完全に一致
https://www.fortran90.org/src/rosetta.html
そもそもmatlab(octave)/Fortran書きがPythonでもfortran風なコードを書けるようにするのがscipy/numpyの目的かつ求心力だから、どっちか書いてる人なら互いに移行するのは容易なんじゃないかな
多分うわべだけなら数日
numpyの核はFortranコードをコマンド一発でimportできるPythonライブラリにコンパイルするf2pyモジュールだから、Pythonで本格的に数値計算や配列プログラミングやるならFortranも多少学ぶべきと思う
https://www.fortran90.org/src/rosetta.html
そもそもmatlab(octave)/Fortran書きがPythonでもfortran風なコードを書けるようにするのがscipy/numpyの目的かつ求心力だから、どっちか書いてる人なら互いに移行するのは容易なんじゃないかな
多分うわべだけなら数日
numpyの核はFortranコードをコマンド一発でimportできるPythonライブラリにコンパイルするf2pyモジュールだから、Pythonで本格的に数値計算や配列プログラミングやるならFortranも多少学ぶべきと思う
86デフォルトの名無しさん (ワッチョイ 493c-+ld4)
2023/03/30(木) 21:47:14.33ID:8bCrCcnU0 すみません、勉強したてで教えてほしいです。
CSVファイルに機器情報が入っています。(以下参照)
そのCSVファイルを読み込んで、機器情報クラスに値をリストに格納していく処理をしたいと思っています。
リストに格納自体はできているのですが、クラスオブジェクトの値を出力すると、下記のようになぜかNoneと表示される部分があります。
1
router
192.168.1.1
admin
None
2
switch
192.168.1.2
admin
None
ソースコード
https://pastebin.com/1bkPJdVY
CSVファイルは以下のような構造になっています。
1行目はヘッダーです。
id,device,ipaddress,password
1, router, 192.168.1.1, admin
2, switch1, 192.168.1.2, admin
3, swtich2, 192.168.1.3, admin
4 ,accesspoint, 192.168.1.1, admin
CSVファイルに機器情報が入っています。(以下参照)
そのCSVファイルを読み込んで、機器情報クラスに値をリストに格納していく処理をしたいと思っています。
リストに格納自体はできているのですが、クラスオブジェクトの値を出力すると、下記のようになぜかNoneと表示される部分があります。
1
router
192.168.1.1
admin
None
2
switch
192.168.1.2
admin
None
ソースコード
https://pastebin.com/1bkPJdVY
CSVファイルは以下のような構造になっています。
1行目はヘッダーです。
id,device,ipaddress,password
1, router, 192.168.1.1, admin
2, switch1, 192.168.1.2, admin
3, swtich2, 192.168.1.3, admin
4 ,accesspoint, 192.168.1.1, admin
87デフォルトの名無しさん (ワッチョイ 493c-+ld4)
2023/03/30(木) 21:49:01.61ID:8bCrCcnU0 print_device_list()メソッドで、自信のid,device,ipaddress,passwordの4種類を表示しているだけなのですが
何故5つ目にNoneという値が表示されるのでしょうか。
教えてください。。。
何故5つ目にNoneという値が表示されるのでしょうか。
教えてください。。。
88デフォルトの名無しさん (ワッチョイ 2e10-uhGV)
2023/03/30(木) 21:55:24.24ID:8C8DwwZp0 書けるかな
89デフォルトの名無しさん (ワッチョイ 2e10-uhGV)
2023/03/30(木) 21:56:43.08ID:8C8DwwZp090デフォルトの名無しさん (ワッチョイ 493c-AYh6)
2023/03/30(木) 22:56:11.91ID:8bCrCcnU091デフォルトの名無しさん (ワッチョイ 5f7d-OFZ/)
2023/04/02(日) 11:03:39.24ID:iE0mKbow0 スクレイピングするプログラム作ったけどロリポップのサーバーにアップロードして運用しようとしてるけど上手くできない。
みんなローカルでやってるのかな?
常時パソコンオンならそれでいいかあ
みんなローカルでやってるのかな?
常時パソコンオンならそれでいいかあ
92デフォルトの名無しさん (ワッチョイ ffbb-u6c4)
2023/04/02(日) 11:14:31.42ID:LokYTN6p0 そのレベルのやつがスクレイピングするなよ
93デフォルトの名無しさん (ワッチョイ 5f7d-OFZ/)
2023/04/02(日) 11:15:43.27ID:iE0mKbow0 さーせん
94デフォルトの名無しさん (アウアウウー Sa23-mFyV)
2023/04/02(日) 13:49:47.16ID:Ky8sq4kqa User-Agent は真面目に描いた方が良い
cookie 対応は必須
あとは逮捕されんように適度な wait
cookie 対応は必須
あとは逮捕されんように適度な wait
2023/04/02(日) 15:06:54.62
ゲームのキャラクターをクラス化するときに
class Player:
def __init__(self, hp, mp, defense, speed):
self.hp = hp
self.mp = mp
self.defense = defense
self.speed = speed
def attack(self, target):
# 攻撃処理
pass
こんな感じでやると思うけど
例えばattackの引数の部分って
(1)相手のキャラクターオブジェクトを入れる
(2)キャラクターのHPなど、使うパラメーターだけ入れる
のかどっちが良いのだろう
(1)の場合って
#攻撃処理 の部分でtarget.counter(self)とかできて便利そうだけど
パット見、内部で何やってるかわかりにくそう?
(2)の場合だと
attackの返り値を、攻撃され後のHPを返すとかにすると
player2.hp = player1.attack(player2.hp)
みたいに冗長感でる
(1)の方が、おそらく他のメソッド追加したときに基本は引数targetの一つで修正しやすそう
でも、もっとオブジェクト化してPlayerクラス以外の戦闘システムクラスとか作れば
player2.hp = player1.attack(player2.hp)の部分も見やすくなるし、より具体的なメソッド名にすればいい
どこまで分割して設計するかが難しいな・・
あと(1)でやってしまうと、あとでtargetの仕様が変わった時に
target引き継いだメソッド全部チェックしないといけないような
class Player:
def __init__(self, hp, mp, defense, speed):
self.hp = hp
self.mp = mp
self.defense = defense
self.speed = speed
def attack(self, target):
# 攻撃処理
pass
こんな感じでやると思うけど
例えばattackの引数の部分って
(1)相手のキャラクターオブジェクトを入れる
(2)キャラクターのHPなど、使うパラメーターだけ入れる
のかどっちが良いのだろう
(1)の場合って
#攻撃処理 の部分でtarget.counter(self)とかできて便利そうだけど
パット見、内部で何やってるかわかりにくそう?
(2)の場合だと
attackの返り値を、攻撃され後のHPを返すとかにすると
player2.hp = player1.attack(player2.hp)
みたいに冗長感でる
(1)の方が、おそらく他のメソッド追加したときに基本は引数targetの一つで修正しやすそう
でも、もっとオブジェクト化してPlayerクラス以外の戦闘システムクラスとか作れば
player2.hp = player1.attack(player2.hp)の部分も見やすくなるし、より具体的なメソッド名にすればいい
どこまで分割して設計するかが難しいな・・
あと(1)でやってしまうと、あとでtargetの仕様が変わった時に
target引き継いだメソッド全部チェックしないといけないような
96デフォルトの名無しさん (スップ Sd9f-OFZ/)
2023/04/02(日) 15:10:35.20ID:N+wJxevFd97デフォルトの名無しさん (ワントンキン MMdf-52IU)
2023/04/02(日) 17:03:42.13ID:FAkG0zqpM >>95
自分だったら敵も味方も同じクラスにして、バトルマネージャークラスに引数1と引数2で渡して戦闘させるかな
自分だったら敵も味方も同じクラスにして、バトルマネージャークラスに引数1と引数2で渡して戦闘させるかな
98デフォルトの名無しさん (ワッチョイ df5f-qI6q)
2023/04/02(日) 21:44:47.49ID:pfBpJrjB0 >>97
そのマネージャの中の話ちゃうの?
そのマネージャの中の話ちゃうの?
99デフォルトの名無しさん (ワッチョイ ff10-icd+)
2023/04/03(月) 23:29:26.65ID:vazLPyWV0 >>95
このような場合、引数に何を渡すかはプログラムの設計や実装によって異なります。一般的には、攻撃対象のキャラクターオブジェクトを引数に渡すことが好ましいでしょう。
これは、攻撃処理に必要な情報がキャラクターオブジェクトに含まれているためです。たとえば、攻撃力や防御力、素早さなどは攻撃側と防御側の両方に必要な情報です。また、攻撃によってダメージが発生する場合、キャラクターオブジェクトに現在の体力値が含まれているため、攻撃対象の体力を別途渡す必要がなくなります。
ただし、引数にキャラクターオブジェクトを渡す場合でも、攻撃側のプレイヤークラスのメソッド内で、攻撃対象のキャラクターのオブジェクト内部の状態を直接変更することは避けるべきです。攻撃処理は、攻撃側と防御側のキャラクターの両方のオブジェクトの状態を適切に変更する必要があります。
このような設計を行う場合、戦闘システムクラスなど、別のクラスを導入することもできます。攻撃対象のキャラクターのオブジェクトに対して、攻撃処理を実行するためのメソッドを定義し、戦闘システムクラスから呼び出すことができます。こうすることで、攻撃処理に関連する情報をまとめて扱うことができ、プログラムの保守性や拡張性を高めることができます。
このような場合、引数に何を渡すかはプログラムの設計や実装によって異なります。一般的には、攻撃対象のキャラクターオブジェクトを引数に渡すことが好ましいでしょう。
これは、攻撃処理に必要な情報がキャラクターオブジェクトに含まれているためです。たとえば、攻撃力や防御力、素早さなどは攻撃側と防御側の両方に必要な情報です。また、攻撃によってダメージが発生する場合、キャラクターオブジェクトに現在の体力値が含まれているため、攻撃対象の体力を別途渡す必要がなくなります。
ただし、引数にキャラクターオブジェクトを渡す場合でも、攻撃側のプレイヤークラスのメソッド内で、攻撃対象のキャラクターのオブジェクト内部の状態を直接変更することは避けるべきです。攻撃処理は、攻撃側と防御側のキャラクターの両方のオブジェクトの状態を適切に変更する必要があります。
このような設計を行う場合、戦闘システムクラスなど、別のクラスを導入することもできます。攻撃対象のキャラクターのオブジェクトに対して、攻撃処理を実行するためのメソッドを定義し、戦闘システムクラスから呼び出すことができます。こうすることで、攻撃処理に関連する情報をまとめて扱うことができ、プログラムの保守性や拡張性を高めることができます。
100デフォルトの名無しさん (ワッチョイ df02-52IU)
2023/04/04(火) 00:33:15.86ID:Y1prdwvH0 chatGPTは中身がねえな
101デフォルトの名無しさん (ワッチョイ 5f01-kVuH)
2023/04/04(火) 03:05:10.39ID:Vcg4gzRX0 @AIBoom_net 日本医師国家試験にGPT-4が合格
https://doi.org/10.48550/arXiv.2303.18027
ワシントン大・札幌心臓血管クリニック・東北大・イエール大学の研究者グループによる報告。 過去5年間にわたる試験で複数の大規模言語モデルをテストした所GPT-4は5年間全てに合格したとのこと。日本語においてもLLMの可能性を示唆。 https://pbs.twimg.com/media/FsxgcIqakAAy6El.png
https://doi.org/10.48550/arXiv.2303.18027
ワシントン大・札幌心臓血管クリニック・東北大・イエール大学の研究者グループによる報告。 過去5年間にわたる試験で複数の大規模言語モデルをテストした所GPT-4は5年間全てに合格したとのこと。日本語においてもLLMの可能性を示唆。 https://pbs.twimg.com/media/FsxgcIqakAAy6El.png
102デフォルトの名無しさん (ワッチョイ 5f5d-HBHE)
2023/04/04(火) 21:54:16.17ID:gwk3sUuA0 プログラム全くの初心者だけど
最新がPython 3.11ってWikiに書いてあるけど
3.9の本で勉強するのはやめたほうが良い?
3.9もらったけど新しいの買うべきかな
最新がPython 3.11ってWikiに書いてあるけど
3.9の本で勉強するのはやめたほうが良い?
3.9もらったけど新しいの買うべきかな
103デフォルトの名無しさん (ワッチョイ 5f10-icd+)
2023/04/04(火) 22:10:09.40ID:eULr+R9z0104デフォルトの名無しさん (ワッチョイ 5f10-icd+)
2023/04/04(火) 22:11:29.74ID:eULr+R9z0 ちなみにVscodeでインストールできるマイクロソフト提供の現在のバージョンは3.10.10
105デフォルトの名無しさん (ワッチョイ df5f-qI6q)
2023/04/04(火) 22:40:13.03ID:hpZyh5qR0 まだ大半の人が3.9以下の機能でしかコーディングしてないから学習上は問題ないよ
導入は最新にしといて便利な3.10や3.11の機能を見つけたら取り入れていけばいい
導入は最新にしといて便利な3.10や3.11の機能を見つけたら取り入れていけばいい
106デフォルトの名無しさん (ワッチョイ ff10-wDYO)
2023/04/04(火) 22:41:11.68ID:xfFnhO3R0107デフォルトの名無しさん (ワッチョイ 5f5d-HBHE)
2023/04/04(火) 22:46:20.60ID:gwk3sUuA0 こんな親切なスレ初めてだ
ありがと
ありがと
108デフォルトの名無しさん (ワッチョイ 5f7d-OFZ/)
2023/04/05(水) 08:31:57.17ID:m7UpLh2J0 ほんとありがたいですよね。
感謝してます
感謝してます
109デフォルトの名無しさん (ワッチョイ ffbb-u6c4)
2023/04/05(水) 09:09:36.82ID:9/ydvHjQ0 (普通は3.9の環境で学習して最終的に最新使うんだよ。Pythonの入門書なら仮想環境の作り方ぐらいのってんだろ)
110デフォルトの名無しさん (ワッチョイ ff33-9P2W)
2023/04/05(水) 09:21:31.45ID:jJ19tKHg0 >>109
頓珍漢な事書かないで
頓珍漢な事書かないで
111デフォルトの名無しさん (ワッチョイ 5f7d-OFZ/)
2023/04/05(水) 11:52:04.66ID:m7UpLh2J0 良いスクレイピングはサイト内移動は直接リンク指定よりクリックさせたほうがいいですか?
112デフォルトの名無しさん (スッップ Sd9f-yXQ9)
2023/04/05(水) 22:47:04.75ID:S76AEhIad 複数のDataframe型をひとつのリスト型にまとめたとき、
その変数(リスト)を出力・ファイル保存する方法、
保存したファイルを再び読み込んで元のリスト変数を取り出す方法、
を教えていただけないでしょうか?
to_parquetが使えるかと思ったら、リストには使えないようで、困っております
pythonにはmatlabのmatファイルのようなものは存在しないのですね?
その変数(リスト)を出力・ファイル保存する方法、
保存したファイルを再び読み込んで元のリスト変数を取り出す方法、
を教えていただけないでしょうか?
to_parquetが使えるかと思ったら、リストには使えないようで、困っております
pythonにはmatlabのmatファイルのようなものは存在しないのですね?
113デフォルトの名無しさん (ワッチョイ ff10-wDYO)
2023/04/05(水) 23:22:13.78ID:CU/hLZe30114デフォルトの名無しさん (ワッチョイ 5f01-vkwt)
2023/04/06(木) 02:43:39.76ID:E3jlMe5F0 >>112
リストをpickleファイルに保存する方法あるけどそれ使えないでしょうか
リストをpickleファイルに保存する方法あるけどそれ使えないでしょうか
115デフォルトの名無しさん (ブーイモ MMa3-e2c1)
2023/04/06(木) 15:38:12.20ID:GjcsnpaqM >>112
DataFrameのメソッドでシリアライズしたいならリストの代わりにネストしたDataFrameにすれば可能
リストを使いたいならpickle.dump/load
でもDataFrameごとに個別にシリアライズしたほうが扱いやすくていいと思う
DataFrameのメソッドでシリアライズしたいならリストの代わりにネストしたDataFrameにすれば可能
リストを使いたいならpickle.dump/load
でもDataFrameごとに個別にシリアライズしたほうが扱いやすくていいと思う
116デフォルトの名無しさん (ワッチョイ cd46-zyVn)
2023/04/09(日) 10:35:43.18ID:Sk1Y+X+W0 intとNoneを返すfunc()の型ヒントはどう書くの。
Noneを返さない実装は少ないと思うが、そんな型ヒント例がない。Noneを省略でintのみ?
def func() -> int:
Noneを返さない実装は少ないと思うが、そんな型ヒント例がない。Noneを省略でintのみ?
def func() -> int:
117デフォルトの名無しさん (ワッチョイ bd5f-JuRI)
2023/04/09(日) 10:43:17.20ID:pP899uy+0118デフォルトの名無しさん (ワッチョイ bd5f-CkHC)
2023/04/09(日) 11:42:14.17ID:RVii0j8Q0119デフォルトの名無しさん
2023/04/09(日) 14:35:42.69ID:l7RPhDng 型ヒントってエラーチェックもしてくれるようになる日はいつくるの
120デフォルトの名無しさん (ワッチョイ cd46-B/IP)
2023/04/09(日) 15:12:18.81ID:Sk1Y+X+W0 >>117,118
ありまとう。そのURLから辿った先の peps.python.org/pep-0484/ に例あった。
def lookup(self, name: str) -> Optional[Node]:
ありまとう。そのURLから辿った先の peps.python.org/pep-0484/ に例あった。
def lookup(self, name: str) -> Optional[Node]:
121デフォルトの名無しさん (ワッチョイ bd5f-CkHC)
2023/04/09(日) 15:48:14.66ID:RVii0j8Q0 >>119
ダックタイプは捨てないから公式で強制は来ない
TypeScriptみたいになる可能性はある、dataclassに型指定がデフォルトで組み込まれた次のステップとして基本的なバリデートがライブラリからインスパイアされて入る未来はあるかもね
基本的にはmypy, pyright, pydanticあたりで対応
ダックタイプは捨てないから公式で強制は来ない
TypeScriptみたいになる可能性はある、dataclassに型指定がデフォルトで組み込まれた次のステップとして基本的なバリデートがライブラリからインスパイアされて入る未来はあるかもね
基本的にはmypy, pyright, pydanticあたりで対応
122デフォルトの名無しさん
2023/04/09(日) 15:57:52.49ID:l7RPhDng ABCモジュールで抽象クラスを作るメリットが全然ピンとこない・・
https://magazine.techacademy.jp/magazine/19310
継承して子のクラスでsayHello上書きすればいいだけじゃないの?
https://qiita.com/Akatsuki_py/items/3e35ba326ff254a6790d
これもattack上書きすればいいだけじゃないの?
→ 共通の変数やメソッドをたくさん持っていることが多いので、手間が省ける
?
継承するだけなのに手間ってある?
AIに聞いてみた
ようは
> 抽象メソッドを定義することで、サブクラスで実装する必要があることを明示的にすることができます。
> 抽象クラスを継承したサブクラスは、抽象メソッドを実装しない限りインスタンス化できないため、クラスの使い方が明確になります。
> 例外を発生させることで、抽象メソッドが実装されていないことを明示的にすることができます。
ってことらしい
ようは例えば、サブクラスを他の開発者に投げていたとき、オーバーライドすべきメソッドをエラーによって明示できる
ってこと・・?
https://magazine.techacademy.jp/magazine/19310
継承して子のクラスでsayHello上書きすればいいだけじゃないの?
https://qiita.com/Akatsuki_py/items/3e35ba326ff254a6790d
これもattack上書きすればいいだけじゃないの?
→ 共通の変数やメソッドをたくさん持っていることが多いので、手間が省ける
?
継承するだけなのに手間ってある?
AIに聞いてみた
ようは
> 抽象メソッドを定義することで、サブクラスで実装する必要があることを明示的にすることができます。
> 抽象クラスを継承したサブクラスは、抽象メソッドを実装しない限りインスタンス化できないため、クラスの使い方が明確になります。
> 例外を発生させることで、抽象メソッドが実装されていないことを明示的にすることができます。
ってことらしい
ようは例えば、サブクラスを他の開発者に投げていたとき、オーバーライドすべきメソッドをエラーによって明示できる
ってこと・・?
123デフォルトの名無しさん
2023/04/09(日) 15:59:55.38ID:l7RPhDng124122
2023/04/09(日) 16:21:39.12ID:l7RPhDng ・親クラスHumanを書く開発者A
・そのHumanを継承する子クラス(犬クラス、猫クラス)を書く開発者B、C
・犬、猫をインスタンス化して機能を実装する開発者D
よくよく考えると、たしかに開発者B、Cは実装し忘れが無くなっていいかもしれない
でも親クラスのabcモジュールで抽象化されたメソッドに変更があった場合
開発者DがsayHello実行したら、子クラスで上書きされたsayHelloが実行されるのでは・・?
だったら最初から上書き前提で書いたほうが、
と思わんでもないのですが
・そのHumanを継承する子クラス(犬クラス、猫クラス)を書く開発者B、C
・犬、猫をインスタンス化して機能を実装する開発者D
よくよく考えると、たしかに開発者B、Cは実装し忘れが無くなっていいかもしれない
でも親クラスのabcモジュールで抽象化されたメソッドに変更があった場合
開発者DがsayHello実行したら、子クラスで上書きされたsayHelloが実行されるのでは・・?
だったら最初から上書き前提で書いたほうが、
と思わんでもないのですが
125デフォルトの名無しさん (ワッチョイ 6efb-P3kV)
2023/04/09(日) 16:43:24.90ID:csvNgA1W0 そーゆーのは仮想関数でやるべき
126デフォルトの名無しさん (ワッチョイ bd5f-CkHC)
2023/04/09(日) 17:34:31.05ID:RVii0j8Q0 >>124
なんの入門書みてるのか分からんが継承なんてPython関係なしに非推奨の流れだから使わなくていいよ
Humanを継承する猫なんて例えとしても論外
ライブラリやフレームワークなどの提供側で有用なケースは多いけど使う側のユーザーが手を出すケースはほとんどない、初学者ならなおさら
なんの入門書みてるのか分からんが継承なんてPython関係なしに非推奨の流れだから使わなくていいよ
Humanを継承する猫なんて例えとしても論外
ライブラリやフレームワークなどの提供側で有用なケースは多いけど使う側のユーザーが手を出すケースはほとんどない、初学者ならなおさら
127デフォルトの名無しさん (ブーイモ MMcd-OxX8)
2023/04/09(日) 20:05:53.89ID:yYyAhZLzM 問題集おすすめしてほしい
ついにこの日がきた 姪っ子がPythonと書かれた教科書を持って帰ってきた
姪っ子は数学に時間がかかりすぎてるので、代わりにPythonを勉強して教えてやりたい
自分はずーっと食わず嫌いでPythonから逃げてたんだが、いい機会なので、高卒レベルくらいに使えるようになりたい
なお、日ごろはC++がちょろっと【しか】使えない
ついにこの日がきた 姪っ子がPythonと書かれた教科書を持って帰ってきた
姪っ子は数学に時間がかかりすぎてるので、代わりにPythonを勉強して教えてやりたい
自分はずーっと食わず嫌いでPythonから逃げてたんだが、いい機会なので、高卒レベルくらいに使えるようになりたい
なお、日ごろはC++がちょろっと【しか】使えない
128デフォルトの名無しさん (ワッチョイ ae33-/aea)
2023/04/09(日) 20:42:55.90ID:jJFRgIVZ0 何か気持ち悪いな
あと、問題集とか聞いてるやつ初めて見たかもしれん
あと、問題集とか聞いてるやつ初めて見たかもしれん
129デフォルトの名無しさん (ワッチョイ eebb-90pI)
2023/04/09(日) 20:53:35.11ID:zwa/Onc+0 paizaでもやれば
130デフォルトの名無しさん (ワッチョイ ae33-/aea)
2023/04/09(日) 20:57:13.03ID:jJFRgIVZ0 オンラインの学習サイトすぐみつかるからそこでやればいいよ
131デフォルトの名無しさん
2023/04/09(日) 21:03:05.02ID:l7RPhDng >>126
Humanは間違えました、Animalですね
>継承なんてPython関係なしに非推奨の流れ
>ライブラリやフレームワークなどの提供側で有用なケースは多い
これはどういうことでしょうか
いわゆる委譲やコンポジションの話ですよね
なるべく委譲使えるところは委譲で、継承と使い分けする、という話ではなく
>非推奨
ということは、どのような場合にも継承を使わずに記述するという意味でしょうか?
Animalの例で言うと
class Dog:
def __init__(self):
self.animal = Animal()
dog1 = Dog()
dog1.animal.say()
みたいな?
Humanは間違えました、Animalですね
>継承なんてPython関係なしに非推奨の流れ
>ライブラリやフレームワークなどの提供側で有用なケースは多い
これはどういうことでしょうか
いわゆる委譲やコンポジションの話ですよね
なるべく委譲使えるところは委譲で、継承と使い分けする、という話ではなく
>非推奨
ということは、どのような場合にも継承を使わずに記述するという意味でしょうか?
Animalの例で言うと
class Dog:
def __init__(self):
self.animal = Animal()
dog1 = Dog()
dog1.animal.say()
みたいな?
132デフォルトの名無しさん
2023/04/09(日) 21:18:36.24ID:l7RPhDng 継承のデメリットって
例えばBirdクラスを作ったときに
Animalクラスにflyメソッド作りがち
つまり犬と鳥との間で、共有メソッドではないflyメソッドを定義しちゃった
みたいな問題かな、と想像するのですが
そういう場合のデザインパターンってあるのでしょうか
runメソッドもflyメソッドもまとめたmixin継承して、飛ぶ系のAnimalクラスもうひとつ作るとか
でもこれだと結局は継承しちゃいますよね
例えばBirdクラスを作ったときに
Animalクラスにflyメソッド作りがち
つまり犬と鳥との間で、共有メソッドではないflyメソッドを定義しちゃった
みたいな問題かな、と想像するのですが
そういう場合のデザインパターンってあるのでしょうか
runメソッドもflyメソッドもまとめたmixin継承して、飛ぶ系のAnimalクラスもうひとつ作るとか
でもこれだと結局は継承しちゃいますよね
133デフォルトの名無しさん (ワッチョイ 8202-Rzwh)
2023/04/09(日) 23:17:30.33ID:FKzaKr3N0 本質的に難しい問題だね
動物の中でも鳥、こうもり、昆虫などが飛べるけど
鳥でもダチョウとか飛べないし
カイコも飛べない
軽傷を使うと比較的ましというだけだね
動物の中でも鳥、こうもり、昆虫などが飛べるけど
鳥でもダチョウとか飛べないし
カイコも飛べない
軽傷を使うと比較的ましというだけだね
134デフォルトの名無しさん (ワッチョイ bd5f-JuRI)
2023/04/10(月) 00:10:55.10ID:0qWpy2US0 うまくモデル化できてるならよくて
直感的じゃないのに無理やり適用するのが悪いってだけ
犬にfly投げて能力不足で失敗ともできるし
直感的じゃないのに無理やり適用するのが悪いってだけ
犬にfly投げて能力不足で失敗ともできるし
135デフォルトの名無しさん (ワッチョイ 6e63-Ay2p)
2023/04/10(月) 00:12:02.83ID:e9gB5xZX0 AnimalクラスにBoolean型のflyableってメンバ変数を作って
flyメソッドを呼び出したとき
Falseなら何もしない(または何かエラーを返す)Trueならflyの内容を処理するっていうのはダメかな?
空飛ぶDogとか飛べないBirdとかが欲しくなっても作れると思ったんだけど…
flyメソッドを呼び出したとき
Falseなら何もしない(または何かエラーを返す)Trueならflyの内容を処理するっていうのはダメかな?
空飛ぶDogとか飛べないBirdとかが欲しくなっても作れると思ったんだけど…
136デフォルトの名無しさん (ブーイモ MM66-9pDP)
2023/04/10(月) 05:05:07.56ID:oMIHCwe3M 30代Pythonクソチョン男は強姦魔の犯罪者です!
あなたの近くにいます!
父母と祖父母の戸籍謄本を提出させましょう!
あなたの近くにいます!
父母と祖父母の戸籍謄本を提出させましょう!
137デフォルトの名無しさん (ワントンキン MM52-h6wA)
2023/04/10(月) 06:17:45.77ID:AkbnXQ4MM 分類というのは共通項を括りだしたものだから、どっちかしか持ってないものを持たせるのはおかしいんじゃない
moveやactionみたいな抽象的な仮想関数を作って派生先でrunやflyを呼び出せば良さそう
moveやactionみたいな抽象的な仮想関数を作って派生先でrunやflyを呼び出せば良さそう
138デフォルトの名無しさん (スププ Sd22-fkYs)
2023/04/11(火) 07:28:10.41ID:g9ggwvxZd139795 (スップ Sd22-5cAy)
2023/04/11(火) 12:13:57.24ID:tWs/BYOwd Animalとして管理したい属性にflyableがあるんだから別に良いと思うけどな
というか無かったら指示できない
というか無かったら指示できない
140デフォルトの名無しさん (ワッチョイ 1d56-pd7i)
2023/04/12(水) 09:20:22.82ID:tingCOYl0 >>139
ある門があって飛べる動物のみ入れる、みたいなのを作るときにflyableで判定するって作り方が簡単そう
ある門があって飛べる動物のみ入れる、みたいなのを作るときにflyableで判定するって作り方が簡単そう
141デフォルトの名無しさん (ワッチョイ 4201-BePx)
2023/04/12(水) 14:23:32.75ID:uWUQySNG0 flyableという属性が実行時に変化するものではなくて型によって決まってるものなら
Gate.accept(target: Flyable)としておけば実行時に問い合わせなくても静的にチェック可能
異なる種類の”門”が追加されるたびにベースクラスに~ableなフラグを追加して
継承したクラスのコンストラクタやそれを呼び出してるコードをすべて変更する必要があるから
それが望ましい設計となる状況はかなり限られてる
Gate.accept(target: Flyable)としておけば実行時に問い合わせなくても静的にチェック可能
異なる種類の”門”が追加されるたびにベースクラスに~ableなフラグを追加して
継承したクラスのコンストラクタやそれを呼び出してるコードをすべて変更する必要があるから
それが望ましい設計となる状況はかなり限られてる
142デフォルトの名無しさん (スップ Sd22-5cAy)
2023/04/12(水) 18:19:53.40ID:u0W7mUTqd 突き詰めていくとanimalなんて要らなくて振る舞いやらインターフェースだけでええやんとなり
動物とは何かという問いに
動物とは何かという問いに
143デフォルトの名無しさん (ワッチョイ bd5f-EQFc)
2023/04/12(水) 19:33:55.06ID:7avtugDp0144デフォルトの名無しさん (ワッチョイ 7d6b-d7Fp)
2023/04/13(木) 07:06:26.87ID:7NoTvSPt0 numpyのarrayで内包表記を使う方法ってありますか
リスト内包表記をnumpyに渡してるサンプルは見つかりましたが、これはまずリストを作ってそれをnumpyに渡してるだけですよね
リスト内包表記をnumpyに渡してるサンプルは見つかりましたが、これはまずリストを作ってそれをnumpyに渡してるだけですよね
145デフォルトの名無しさん (スッップ Sd22-z9Lb)
2023/04/14(金) 05:56:54.13ID:Gstlub5yd146デフォルトの名無しさん (アウアウウー Sacb-/q5i)
2023/04/15(土) 10:16:53.39ID:nVVXe4mla147デフォルトの名無しさん (ワッチョイ 7ffb-Qmbz)
2023/04/15(土) 10:34:24.00ID:P4lYIe9L0 jupyterじゃないならどっちみちpycなるんやからそんな変わらんやろ
148デフォルトの名無しさん (ワッチョイ 87a7-JaIR)
2023/04/15(土) 11:42:56.51ID:O06ex0uM0 ProcessPoolExecutorを使ってマルチプロセスで複数処理を動かすとき、あるプロセスから別プロセスの処理状況を知る、または知らせるような事って出来ますか?
今はManagerによるプロセス間共有変数にプロセスの処理状況を格納してフラグとし、他のプロセスはその変数の値が特定の値になるまでtime.sleepとwhileで待機しています。
スマートではないように思うので、例えば
別プロセスに対して「処理を再開してもいいよ」と通知したり、
別プロセスのインスタンスの関数を実行したり...
といった事が出来ればと思ったのです。何か良い方法はないでしょうか。
今はManagerによるプロセス間共有変数にプロセスの処理状況を格納してフラグとし、他のプロセスはその変数の値が特定の値になるまでtime.sleepとwhileで待機しています。
スマートではないように思うので、例えば
別プロセスに対して「処理を再開してもいいよ」と通知したり、
別プロセスのインスタンスの関数を実行したり...
といった事が出来ればと思ったのです。何か良い方法はないでしょうか。
149デフォルトの名無しさん (ワッチョイ 07e3-pEVB)
2023/04/15(土) 11:53:29.81ID:iK0tlqDR0150デフォルトの名無しさん (ワッチョイ 5f01-9fcd)
2023/04/15(土) 15:09:11.60ID:sKf60sYO0 >>148
awaitに書き直すのが一番スッキリすると思うけど書き直すのが面倒ならcondvar
awaitに書き直すのが一番スッキリすると思うけど書き直すのが面倒ならcondvar
PythonでPyGameを使ってゲームが作れるようになりたいです。
Pythonのソースコードをすらすら書けるようになるには、どうしたらいいですか?
153デフォルトの名無しさん (ワッチョイ 8736-Jl7Z)
2023/04/16(日) 22:36:43.99ID:2LWEnpk00 dictionary型ってどういうときに使うの?
全然ありがたみがわからない
全然ありがたみがわからない
154デフォルトの名無しさん (ワッチョイ a75f-ABex)
2023/04/16(日) 23:07:46.43ID:zYleX6N80 適材適所だから配列だけで困ってないなら知らなくてもいい
配列の探索はみつかるまで最悪全要素しらべる必要があるけど
辞書のキーは比較的短時間で探せる構造になってたりはする
配列の探索はみつかるまで最悪全要素しらべる必要があるけど
辞書のキーは比較的短時間で探せる構造になってたりはする
155デフォルトの名無しさん (ワッチョイ 7f33-S3w6)
2023/04/16(日) 23:12:03.98ID:KBeSrEQR0 dict型とdictionary型は違うからな
156デフォルトの名無しさん
2023/04/16(日) 23:28:39.97ID:calMfenH WebアプリのAPIでクエリとかレスポンス返すときにJSONで扱いたいときかなぁ
json.dumps/loadsであんまり意識しなくてよくなる
import json
json_str = '{"a":10,"b":20,"c":true,"d":null}'
d = json.loads(json_str)
print(type(d),d)
json_str = json.dumps(d)
print(type(json_str), json_str)
#<class 'dict'> {'a': 10, 'b': 20, 'c': True, 'd': None}
#<class 'str'> {"a": 10, "b": 20, "c": true, "d": null}
あとは引数に展開するときとか?
def deco(a,b=0,*args,**kwrgs):
print(a,b)
print(args)
print(kwrgs)
a=1
b=2
args=[3,4,5]
kwrgs={"x":11,"y":22}
deco(a,b,*args,**kwrgs)
#1 2
#(3, 4, 5)
#{'x': 11, 'y': 22}
json.dumps/loadsであんまり意識しなくてよくなる
import json
json_str = '{"a":10,"b":20,"c":true,"d":null}'
d = json.loads(json_str)
print(type(d),d)
json_str = json.dumps(d)
print(type(json_str), json_str)
#<class 'dict'> {'a': 10, 'b': 20, 'c': True, 'd': None}
#<class 'str'> {"a": 10, "b": 20, "c": true, "d": null}
あとは引数に展開するときとか?
def deco(a,b=0,*args,**kwrgs):
print(a,b)
print(args)
print(kwrgs)
a=1
b=2
args=[3,4,5]
kwrgs={"x":11,"y":22}
deco(a,b,*args,**kwrgs)
#1 2
#(3, 4, 5)
#{'x': 11, 'y': 22}
157デフォルトの名無しさん (ワッチョイ 5f02-baic)
2023/04/17(月) 00:52:15.92ID:n1XKDS030 googleアカウントとか python じゃないけど辞書型だよ
メールアドレスをキーにしてバリューはそのアカウントの情報
配列よりも高速にアクセスできるし
重複チェックも容易
メールアドレスをキーにしてバリューはそのアカウントの情報
配列よりも高速にアクセスできるし
重複チェックも容易
158デフォルトの名無しさん (アウアウウー Sacb-zO2x)
2023/04/17(月) 13:29:10.71ID:4hNaPs7ta Ruby では、辞書はHash
require 'json'
# JSON では、nil ではなく、null を使う
json_str = '{"a":1,"b":"bb","c":true,"d":null}'
puts json_str #=> {"a":1,"b":"bb","c":true,"d":null}
p json_obj = JSON.parse( json_str )
#=> {"a"=>1, "b"=>"bb", "c"=>true, "d"=>nil} # nil になる
p json_obj.class #=> Hash
puts JSON.dump( json_obj )
#=> {"a":1,"b":"bb","c":true,"d":null} # null になる
require 'json'
# JSON では、nil ではなく、null を使う
json_str = '{"a":1,"b":"bb","c":true,"d":null}'
puts json_str #=> {"a":1,"b":"bb","c":true,"d":null}
p json_obj = JSON.parse( json_str )
#=> {"a"=>1, "b"=>"bb", "c"=>true, "d"=>nil} # nil になる
p json_obj.class #=> Hash
puts JSON.dump( json_obj )
#=> {"a":1,"b":"bb","c":true,"d":null} # null になる
159デフォルトの名無しさん (アウアウウー Sacb-/q5i)
2023/04/17(月) 16:06:07.88ID:kmcXsww3a >>158
Rubyは欠陥言語
# https://ideone.com/cpA5lk
require 'json'
json_obj = {:a=>1, :b=>"bb", :c=>true, :d=>nil, "b"=>"BB"}
p json_obj.class #=> Hash
json_str = JSON.dump(json_obj)
puts json_str #=> {"a":1,"b":"bb","c":true,"d":null,"b":"BB"}
puts JSON.parse(json_str) #=> {"a"=>1, "b"=>"BB", "c"=>true, "d"=>nil}
Rubyは欠陥言語
# https://ideone.com/cpA5lk
require 'json'
json_obj = {:a=>1, :b=>"bb", :c=>true, :d=>nil, "b"=>"BB"}
p json_obj.class #=> Hash
json_str = JSON.dump(json_obj)
puts json_str #=> {"a":1,"b":"bb","c":true,"d":null,"b":"BB"}
puts JSON.parse(json_str) #=> {"a"=>1, "b"=>"BB", "c"=>true, "d"=>nil}
160デフォルトの名無しさん (アウアウウー Sacb-Naft)
2023/04/18(火) 15:41:29.64ID:sxhvE7iUa 白目!
161158 (アウアウウー Sacb-Naft)
2023/04/18(火) 20:29:38.91ID:OYqyJGa8a 元々、JSON では、:b みたいなシンボルは使えない。ParserError。
"b" みたいな文字列しか使えない
require 'json'
json_str = '{:b=>"bb"}'
puts json_str #=> {:b=>"bb"}
p json_obj = JSON.parse( json_str )
#=> JSON::ParserError
"b" みたいな文字列しか使えない
require 'json'
json_str = '{:b=>"bb"}'
puts json_str #=> {:b=>"bb"}
p json_obj = JSON.parse( json_str )
#=> JSON::ParserError
162158 (アウアウウー Sacb-Naft)
2023/04/18(火) 20:54:35.49ID:OYqyJGa8a 元々、JavaScript でも、同じプロパティが上書きされるだけ
const json_str = '{"b":"bb","b":"BB"}';
const json_obj = JSON.parse( json_str );
console.log( json_obj );
//=> Object { b: "BB" } 1つになる!
const json_str = '{"b":"bb","b":"BB"}';
const json_obj = JSON.parse( json_str );
console.log( json_obj );
//=> Object { b: "BB" } 1つになる!
163デフォルトの名無しさん (ワッチョイ 4701-sFbk)
2023/04/19(水) 03:05:38.54ID:ZTiW0i9K0 そもそもアカウント管理はLDAP使うんじゃないのか?
プログラムレベルの処理になるとメモリ上でディクショナリ使うかもしれないが
プログラムレベルの処理になるとメモリ上でディクショナリ使うかもしれないが
164デフォルトの名無しさん (ワッチョイ 07e3-pEVB)
2023/04/19(水) 11:55:51.92ID:J7SITOSf0 インデックスが同じ DataFrame df と Series s があり、全ての要素は float であるとする。
df の各行について s の対応する行の要素より大きい要素が一つでもあるかどうか調べたいんだが、どうしたら良い?
df > s で True/False が格納された DataFrame が返ることを期待していたが、「automatic reindexing は推奨されない」と言われてすべて NaN の DataFrame が返された。
df の各行について s の対応する行の要素より大きい要素が一つでもあるかどうか調べたいんだが、どうしたら良い?
df > s で True/False が格納された DataFrame が返ることを期待していたが、「automatic reindexing は推奨されない」と言われてすべて NaN の DataFrame が返された。
165デフォルトの名無しさん
2023/04/19(水) 13:52:15.60ID:HyPlOTI2 pathlibでイテレーティブルに操作できるようなライブラリ作ろうとしたけどめんどくさくて断念
例えば
ディレクトリ構成
data
├a
├b
└c
dataディレクトリを指定して、子ディレクトリに対して操作する場合
pathlibを拡張したクラス=PathEXとして
PathEX(data_dir_path).find_dir(pattern).delete_files_with_chars(characters)
(pattern=aとcディレクトリだけ見つける)
みたいなことをやりたい場合
イテレーティブルな操作だと
「aの中のcaractersを含むファイル1を削除、aの中のcaractersを含むファイル2を削除、、、cの中のcaractersを含むファイル1を削除、、、、」
みたいなのが理想だけど
その前にdirかどうかをスルーする操作やpatternのdirかどうかを判別しないといけないので
イテレーションであるメリットが少ないような・・
なのでfind_dirの段階でイテレーションを再帰して、patternだけのパスをリストに格納
そのリストからfileだけを検索(イテレーションを再帰して→ファイルだけのパスをリストに格納)
そのリストからdelete_files_with_chars(characters)
みたいに、目的のファイルやディレクトリのパスだけをflattenにして
その確定したリストに対して操作する方が良いような気がしてきた
これが何万ファイルとかになってくると違いがあるのかはわからないけど。
明らかにpathlibオブジェクト数の分だけメモリ溜まっていきそうなので
ただこれなら.find_dir(pattern).find(pattern).ignor(pattern)みたいにいくらpatternを追加しても
pattern毎に再帰は増えるけどシンプルに操作できる
今のところこれで困ってないしエラー処理が簡単なのでいいけど、無駄は多そう
例えば
ディレクトリ構成
data
├a
├b
└c
dataディレクトリを指定して、子ディレクトリに対して操作する場合
pathlibを拡張したクラス=PathEXとして
PathEX(data_dir_path).find_dir(pattern).delete_files_with_chars(characters)
(pattern=aとcディレクトリだけ見つける)
みたいなことをやりたい場合
イテレーティブルな操作だと
「aの中のcaractersを含むファイル1を削除、aの中のcaractersを含むファイル2を削除、、、cの中のcaractersを含むファイル1を削除、、、、」
みたいなのが理想だけど
その前にdirかどうかをスルーする操作やpatternのdirかどうかを判別しないといけないので
イテレーションであるメリットが少ないような・・
なのでfind_dirの段階でイテレーションを再帰して、patternだけのパスをリストに格納
そのリストからfileだけを検索(イテレーションを再帰して→ファイルだけのパスをリストに格納)
そのリストからdelete_files_with_chars(characters)
みたいに、目的のファイルやディレクトリのパスだけをflattenにして
その確定したリストに対して操作する方が良いような気がしてきた
これが何万ファイルとかになってくると違いがあるのかはわからないけど。
明らかにpathlibオブジェクト数の分だけメモリ溜まっていきそうなので
ただこれなら.find_dir(pattern).find(pattern).ignor(pattern)みたいにいくらpatternを追加しても
pattern毎に再帰は増えるけどシンプルに操作できる
今のところこれで困ってないしエラー処理が簡単なのでいいけど、無駄は多そう
166デフォルトの名無しさん (ワッチョイ a754-sFbk)
2023/04/19(水) 14:26:56.97ID:r24Gen790 整数がいくつか入力されて、最終的に0からmaxまで揃ってるかどうか調べたい
exists[num] = True
みたいなことをすると、エラーになるので、どうやって回避したもんか
exists[num] = True
みたいなことをすると、エラーになるので、どうやって回避したもんか
167デフォルトの名無しさん (ワッチョイ 07c0-OS67)
2023/04/19(水) 14:59:59.68ID:NBiOUl/V0168デフォルトの名無しさん
2023/04/19(水) 15:12:22.49 >>166
max = 3
d = {}
while True:
print(d)
i = int(input(f"{max}までの正の整数を入力してください。"))
if i > 0 and i <= max:
d[i] = i
if len(set(list(d))) == max:
break
print("終了")
print(d)
{}
3までの正の整数を入力してください。0
{}
3までの正の整数を入力してください。2
{2: 2}
3までの正の整数を入力してください。4
{2: 2}
3までの正の整数を入力してください。1
{2: 2, 1: 1}
3までの正の整数を入力してください。3
終了
{2: 2, 1: 1, 3: 3}
max = 3
d = {}
while True:
print(d)
i = int(input(f"{max}までの正の整数を入力してください。"))
if i > 0 and i <= max:
d[i] = i
if len(set(list(d))) == max:
break
print("終了")
print(d)
{}
3までの正の整数を入力してください。0
{}
3までの正の整数を入力してください。2
{2: 2}
3までの正の整数を入力してください。4
{2: 2}
3までの正の整数を入力してください。1
{2: 2, 1: 1}
3までの正の整数を入力してください。3
終了
{2: 2, 1: 1, 3: 3}
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- テレビ朝日本社から20~30代の関連会社社員とみられる男性が転落し死亡 六本木けやき坂通りの通行人にはけが人なし [少考さん★]
- 【コメ】卸売業者「簡単に安売りできない」「大暴落起きれば大赤字に」 JA「新米の販売進度が近年になく遅い。コメの回転が悪い」 ★5 [Hitzeschleier★]
- 高市首相、トランプ米大統領に「早期に会いたい」 日中関係悪化受け… ★4 [BFU★]
- 「これいいじゃん!!!」 セブン-イレブンの1620円で買える“1人用クリスマスケーキ”🎂に注目殺到「天才すぎる」 [パンナ・コッタ★]
- 高市早苗首相が天理教系企業に“巨額発注” 総額5000万円 本人は「政治団体の活動に必要な支出」と回答 ★2 [Hitzeschleier★]
- 小島瑠璃子さん、代表取締役を務める会社を破産申請 [牛丼★]
- 高市早苗さんとデートで行きたいスポット [377482965]
- 【速報】テレビ朝日本社から20代〜30代の男性が飛び降り自殺して死亡 東京・六本木 [597533159]
- 現役JKのお茶会スレ( ¨̮ )︎︎𖠚ᐝ182
- お前らダウナー系だよな
- 報ステさん、今日のトップニュースが美川憲一の会見www 高市&進次郎vs中国の話は?? [597533159]
- 【すこん部🏡】白上フブキ🦊配信中❗【ホロライブ▶】
