↑スレ立てる毎に減るので、減ってたら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:dUl31UkL0165デフォルトの名無しさん
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}
169デフォルトの名無しさん (ワッチョイ a754-sFbk)
2023/04/19(水) 15:22:18.37ID:r24Gen790 何を入れてもいい箱は辞書か集合だよな
なんかキーが数というのに抵抗がある
dic{1.1} = True
とかちゃんと動くの?
なんかキーが数というのに抵抗がある
dic{1.1} = True
とかちゃんと動くの?
170デフォルトの名無しさん (ワッチョイ a754-sFbk)
2023/04/19(水) 15:22:52.39ID:r24Gen790 [1.1]
171デフォルトの名無しさん
2023/04/19(水) 15:33:37.73 google colaboratoryのpython3.9はいけた
d = {}
d[0.05]=True
d[1.1]=True
d[1.2]=True
d[2.0]=True
print(d)
print(len(d))
#{0.05: True, 1.1: True, 1.2: True, 2.0: True}
#4
len(d)だけでいけた >168
d = {}
d[0.05]=True
d[1.1]=True
d[1.2]=True
d[2.0]=True
print(d)
print(len(d))
#{0.05: True, 1.1: True, 1.2: True, 2.0: True}
#4
len(d)だけでいけた >168
172デフォルトの名無しさん (ワッチョイ a754-sFbk)
2023/04/19(水) 15:54:16.31ID:r24Gen790 d = {}
d[1] = True
print(d[0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1]) # KeyError: 0.9999999999999999
こんなのはやっぱり動かない
d[1] = True
print(d[0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1]) # KeyError: 0.9999999999999999
こんなのはやっぱり動かない
173デフォルトの名無しさん
2023/04/19(水) 16:00:04.24 何がしたいのかはわからんけど
普通にエラー吐けばいいだけの話では
普通にエラー吐けばいいだけの話では
174デフォルトの名無しさん (スプッッ Sdbb-GSlL)
2023/04/19(水) 16:00:53.93ID:VKTpm4xNd 要素数max+1個のlistを使えよ
175デフォルトの名無しさん
2023/04/19(水) 16:04:43.65 >exists[num] = True
この辺の謎縛りがなけりゃ普通にリストとappend使ってif inで重複調べるだけでいけそう
この辺の謎縛りがなけりゃ普通にリストとappend使ってif inで重複調べるだけでいけそう
176デフォルトの名無しさん (ワッチョイ 5f01-9fcd)
2023/04/19(水) 16:34:20.46ID:V36h4z9V0 >>164
不等号の代わりにDataFrameのgtとかltを使う
不等号の代わりにDataFrameのgtとかltを使う
177デフォルトの名無しさん (ワッチョイ 5f01-9fcd)
2023/04/19(水) 16:40:40.19ID:V36h4z9V0 >>165
イテラブルとイテレーティブという言葉はあるけどイテレーティブルという言葉はないぞ
んでもって変なライブラリ作らなくてもPath.globでイテレーティブに操作できる
メソッドチェーン化したいという理由があるのかもしれないけど
それはPythonのやり方ではないので自分しか読まないようなコード以外では避けたほうがいい
汎用化したい場合はdata_dir_path, pattern, charactersを受け取るような関数を作る
中身はforループ
イテラブルとイテレーティブという言葉はあるけどイテレーティブルという言葉はないぞ
んでもって変なライブラリ作らなくてもPath.globでイテレーティブに操作できる
メソッドチェーン化したいという理由があるのかもしれないけど
それはPythonのやり方ではないので自分しか読まないようなコード以外では避けたほうがいい
汎用化したい場合はdata_dir_path, pattern, charactersを受け取るような関数を作る
中身はforループ
178デフォルトの名無しさん (ワッチョイ 7f12-bLn0)
2023/04/19(水) 17:10:02.05ID:1S6lpC/v0 pythonでmxnetをインポートしようとすると出てくるエラーに関する質問です。
(私の使用している環境は以下の通りです。
python: 3.10.8, mxnet: 1.8.0, windows: 10.0.19044.2728
CPU: intel core i7, GPUはありません。)
import mxnet を実行すると、
Could not find module
'C:\Users\ \AppData\Local\Programs\Python\Python310\lib\site-packages\mxnet\libmxnet.dll' (or one of its dependencies).
Try using the full path with constructor syntax.
というエラーが出現します。
調べると、どうもlibmxnetのpathに関する問題らしいのですが、
具体的な解決方法がわかりません。
具体的にどんなコードを実行したらエラーが直るか、教えていただけないでしょうか?
あるいはGPUが必要なのでしょうか?
(私の使用している環境は以下の通りです。
python: 3.10.8, mxnet: 1.8.0, windows: 10.0.19044.2728
CPU: intel core i7, GPUはありません。)
import mxnet を実行すると、
Could not find module
'C:\Users\ \AppData\Local\Programs\Python\Python310\lib\site-packages\mxnet\libmxnet.dll' (or one of its dependencies).
Try using the full path with constructor syntax.
というエラーが出現します。
調べると、どうもlibmxnetのpathに関する問題らしいのですが、
具体的な解決方法がわかりません。
具体的にどんなコードを実行したらエラーが直るか、教えていただけないでしょうか?
あるいはGPUが必要なのでしょうか?
179デフォルトの名無しさん (ワッチョイ 5f01-9fcd)
2023/04/19(水) 17:23:53.73ID:V36h4z9V0 >>166
入力値がリストで0からmaxまでの整数値なのであればsetにして長さを比較
マイナス値やmaxを超えた整数値が存在する可能性があるのであればmax+1の長さの配列を用意して比較
def check(input_list):
__xs = [False] * (_max + 1)
__for i in input_list:
____try:
______xs[i] = True
____except IndexError:
______return False
__return all(xs)
入力値がリストで0からmaxまでの整数値なのであればsetにして長さを比較
マイナス値やmaxを超えた整数値が存在する可能性があるのであればmax+1の長さの配列を用意して比較
def check(input_list):
__xs = [False] * (_max + 1)
__for i in input_list:
____try:
______xs[i] = True
____except IndexError:
______return False
__return all(xs)
180デフォルトの名無しさん (ワッチョイ a754-sFbk)
2023/04/19(水) 17:35:15.56ID:r24Gen790 maxはgivenではなくて入力された中の最大値
181デフォルトの名無しさん (ワッチョイ e79b-pEVB)
2023/04/19(水) 17:51:09.87ID:+idC8n5I0182デフォルトの名無しさん
2023/04/19(水) 17:57:15.31ID:HyPlOTI2 >>177
>Path.globで
やってみるとわかるがこれだと結局、目的のパスが静的に決定している場合のみの逐次処理にしないといけないので
PathEXを作る意味はない
もちろんそういう場合にはpathlibだけで事足りるのでPath.globを使えばいい
>Path.globで
やってみるとわかるがこれだと結局、目的のパスが静的に決定している場合のみの逐次処理にしないといけないので
PathEXを作る意味はない
もちろんそういう場合にはpathlibだけで事足りるのでPath.globを使えばいい
183デフォルトの名無しさん (ワッチョイ 0701-DGPv)
2023/04/19(水) 18:12:08.30ID:PFleyHUL0 >>166
リストの内容が0から最大値まで連番になっていることを確認というならrangeで連番作ってそれと比較とかどうでしょう
重複や順番不問にするためにset使って
set(input_list) == set(range(0,len(set(input_list))))
みたいな
リストの内容が0から最大値まで連番になっていることを確認というならrangeで連番作ってそれと比較とかどうでしょう
重複や順番不問にするためにset使って
set(input_list) == set(range(0,len(set(input_list))))
みたいな
184デフォルトの名無しさん (ワッチョイ 5f01-9fcd)
2023/04/19(水) 18:12:36.99ID:V36h4z9V0185デフォルトの名無しさん (ワッチョイ 5f01-9fcd)
2023/04/19(水) 18:17:25.11ID:V36h4z9V0186デフォルトの名無しさん (ワッチョイ 5f01-9fcd)
2023/04/19(水) 18:24:51.45ID:V36h4z9V0187デフォルトの名無しさん
2023/04/19(水) 18:31:44.30ID:HyPlOTI2 ファイル操作をやってみるとわかるけど
ファイルを動かしたり名前を変えたりすれば
イテレータの状態と合わないことがある
やってみないとわからないけど
ファイルを動かしたり名前を変えたりすれば
イテレータの状態と合わないことがある
やってみないとわからないけど
188デフォルトの名無しさん (ワッチョイ 7f33-S3w6)
2023/04/19(水) 19:28:54.64ID:c0AxLdlu0 >>172
これはID:r24Gen790が何を言いたいのか理解できてるのか?
これはID:r24Gen790が何を言いたいのか理解できてるのか?
189デフォルトの名無しさん (ワッチョイ 7f33-S3w6)
2023/04/19(水) 19:36:30.83ID:c0AxLdlu0 ていうか全体的に意味がわからん
l = ['1','2','3']
while l: l.remove(input())
l = ['1','2','3']
while l: l.remove(input())
190デフォルトの名無しさん (ワッチョイ 5f01-9fcd)
2023/04/19(水) 21:38:08.88ID:V36h4z9V0 >>187
それはglob関係なく設計の問題
それはglob関係なく設計の問題
191デフォルトの名無しさん (ワッチョイ a75f-ABex)
2023/04/19(水) 22:12:04.01ID:iYk70KDD0 os.walk
192デフォルトの名無しさん
2023/04/19(水) 22:17:34.54ID:HyPlOTI2 いや設計も何もイテレータでやるならやったらいいし
再帰の部分でどのみちコードの量が二度手間以上になるから
メリット無さそうだし最初からflattenにする、という話なんだが・・
どっちもやった上で、イテレータ維持しようとすると面倒だからやめたって言ってるんだが
globやって、globやって、みたいなのならそりゃ書けるし
その程度の用途しかないなら無理してやらなくていいと思うよ
再帰の部分でどのみちコードの量が二度手間以上になるから
メリット無さそうだし最初からflattenにする、という話なんだが・・
どっちもやった上で、イテレータ維持しようとすると面倒だからやめたって言ってるんだが
globやって、globやって、みたいなのならそりゃ書けるし
その程度の用途しかないなら無理してやらなくていいと思うよ
193デフォルトの名無しさん
2023/04/19(水) 22:28:57.93ID:HyPlOTI2 あとこの人いつもいる?オブジェクト指向やら継承からの脱却、の人だと思うけど
違ったらすまんけど
この前、何がなんでも継承しない方がいいの?みたいなこと聞いたらどっか行っちゃったよね
自分はそれが正解か間違いかはわからないので純粋に聞きたかったんだが
設計って確実にその思想の部分に大きく影響されるよね
違ったらすまんけど
この前、何がなんでも継承しない方がいいの?みたいなこと聞いたらどっか行っちゃったよね
自分はそれが正解か間違いかはわからないので純粋に聞きたかったんだが
設計って確実にその思想の部分に大きく影響されるよね
194デフォルトの名無しさん
2023/04/19(水) 22:31:27.43ID:HyPlOTI2 関数型が正義と思っていてそう書かなきゃいけないなら
そりゃそうなるわ、としか言えんもの
そりゃそうなるわ、としか言えんもの
195デフォルトの名無しさん (ワッチョイ a75f-ABex)
2023/04/19(水) 22:38:25.10ID:iYk70KDD0 できあがりが見通しや効率で優れているかで判断すればいいのであって
手法は目的じゃないからあってるよ
ところでなしてos.walkつかわんの?
手法は目的じゃないからあってるよ
ところでなしてos.walkつかわんの?
196デフォルトの名無しさん (ワッチョイ 5f01-9fcd)
2023/04/19(水) 23:23:13.93ID:V36h4z9V0 >>195
os.walkでやってた多くのケースがPath.globやglob.globでまかなえるようになったからね
os.walkでやってた多くのケースがPath.globやglob.globでまかなえるようになったからね
197デフォルトの名無しさん (ワッチョイ 7ffb-Qmbz)
2023/04/19(水) 23:23:38.32ID:GSMGMYxg0 関数型プログラミングは高速化に寄与することもあるよねと思うところもあるし
オブジェクト指向やるならオブジェクト指向でやる必要がある場合に限ってやればいいし
だからといってオブジェクト指向やりたいなら、Pythonみたいな超高級言語じゃなくてC++でゴリゴリ書いたほうがメモリに優しいし高速だしって話になるよ?
オブジェクト指向やるならオブジェクト指向でやる必要がある場合に限ってやればいいし
だからといってオブジェクト指向やりたいなら、Pythonみたいな超高級言語じゃなくてC++でゴリゴリ書いたほうがメモリに優しいし高速だしって話になるよ?
198デフォルトの名無しさん (ワッチョイ 7ffb-Qmbz)
2023/04/19(水) 23:26:57.39ID:GSMGMYxg0 何がやりたいかによって手段とツールが変わるだろうけど
Pythonでやるなら実装はC++も使ったほうが独自APIを実装するときの自由度が高い
Pythonでやるなら実装はC++も使ったほうが独自APIを実装するときの自由度が高い
199デフォルトの名無しさん (ワッチョイ 5f01-9fcd)
2023/04/19(水) 23:40:18.23ID:V36h4z9V0 >>192
Path.globを知ってたら↓こんなコード書かないから
まずリファレンスを読もう
>PathEX(data_dir_path).find_dir(pattern).delete_files_with_chars(characters)
>再帰の部分でどのみちコードの量が二度手間以上になるから
それは書き方が悪いだけ
思い込みを捨てたほうがいい
>関数型が正義と思っていてそう書かなきゃいけないなら
関数型とは全く関係ないぞ
単純なforループを推奨してるんだからむしろ関数型とは真逆
>>190の設計の問題というのは>>187のような状況に陥るのは設計が悪いという意味
古典的な設計の問題だからわからなければググって勉強して
Path.globを知ってたら↓こんなコード書かないから
まずリファレンスを読もう
>PathEX(data_dir_path).find_dir(pattern).delete_files_with_chars(characters)
>再帰の部分でどのみちコードの量が二度手間以上になるから
それは書き方が悪いだけ
思い込みを捨てたほうがいい
>関数型が正義と思っていてそう書かなきゃいけないなら
関数型とは全く関係ないぞ
単純なforループを推奨してるんだからむしろ関数型とは真逆
>>190の設計の問題というのは>>187のような状況に陥るのは設計が悪いという意味
古典的な設計の問題だからわからなければググって勉強して
200デフォルトの名無しさん
2023/04/20(木) 00:14:41.43ID:dFvm1wua >>199
それは自作だからあえて変えてるだけで実際内部では実質
Path("ディレクトリやファイルのパス").glob(pattern).filter(処理for_each)
したり、再帰したり、しなかったりだよ
わざわざ存在しないクラス名、メソッド名使ってるのになぜそんな解釈したのかちょっと謎すぎる
globを使っていないわけではなくglobのイテレータ維持したまま最後の処理までするのは面倒なので断念しただけ
処理の部分が例えば”直接ファイル操作(removeなど)”みたいな投げっぱな単純な処理ならglob完結でいいけど
処理結果を返したり保持したい場合や、処理途中でファイル更新、単にパス名を文字列だけの用途として利用したい場合など個人的にあったので
あえてイテレータの恩恵少ないしforループ隠蔽するために、自分の場合はクラス化ほぼほぼ一択と判断しただけ
どの道、forループ処理は一度でも行う、はあなたがやってもだれがやっても行き着く事実であって設計云々ではないですね
あなたの想像し得る基本的な用途なら別にforループforループforループで良いしクラス化とか必要ないと思いますよ
見づらいだろうなぁとは思うものの、そこに関しては全然悪いとは思っていません
お好きなように
それは自作だからあえて変えてるだけで実際内部では実質
Path("ディレクトリやファイルのパス").glob(pattern).filter(処理for_each)
したり、再帰したり、しなかったりだよ
わざわざ存在しないクラス名、メソッド名使ってるのになぜそんな解釈したのかちょっと謎すぎる
globを使っていないわけではなくglobのイテレータ維持したまま最後の処理までするのは面倒なので断念しただけ
処理の部分が例えば”直接ファイル操作(removeなど)”みたいな投げっぱな単純な処理ならglob完結でいいけど
処理結果を返したり保持したい場合や、処理途中でファイル更新、単にパス名を文字列だけの用途として利用したい場合など個人的にあったので
あえてイテレータの恩恵少ないしforループ隠蔽するために、自分の場合はクラス化ほぼほぼ一択と判断しただけ
どの道、forループ処理は一度でも行う、はあなたがやってもだれがやっても行き着く事実であって設計云々ではないですね
あなたの想像し得る基本的な用途なら別にforループforループforループで良いしクラス化とか必要ないと思いますよ
見づらいだろうなぁとは思うものの、そこに関しては全然悪いとは思っていません
お好きなように
201デフォルトの名無しさん (ワッチョイ a75f-ABex)
2023/04/20(木) 00:24:53.99ID:QMVhjkAJ0 os.walkオジサンになっていい?
202デフォルトの名無しさん
2023/04/20(木) 00:25:34.76ID:dFvm1wua 実際forループで書いて管理しきれなくなってからのos.pathやらpathlibの拡張なんで
何がなんでもosのみpathlibのみで書く縛りがあるなら別に書けばいいと思うけど。
自分はあとあとのこと考えると管理面倒だからforループforループで管理は無理だな
「あのディレクトリの○○なファイルだけ発見したい」みたいな超シンプルな使い方のみの想定ならそれでいいと思うけど
何がなんでもosのみpathlibのみで書く縛りがあるなら別に書けばいいと思うけど。
自分はあとあとのこと考えると管理面倒だからforループforループで管理は無理だな
「あのディレクトリの○○なファイルだけ発見したい」みたいな超シンプルな使い方のみの想定ならそれでいいと思うけど
203デフォルトの名無しさん (ワッチョイ 5f01-9fcd)
2023/04/20(木) 01:25:19.09ID:R0tK1jDo0 >>200
うーん”設計”が伝わらないとは・・・
じゃPathEX(data_dir_path).find_dir(pattern).delete_files_with_chars(characters)で頑張ってくれ
俺は諦めた
うーん”設計”が伝わらないとは・・・
じゃPathEX(data_dir_path).find_dir(pattern).delete_files_with_chars(characters)で頑張ってくれ
俺は諦めた
204デフォルトの名無しさん (ワッチョイ 7f10-iKPJ)
2023/04/20(木) 08:09:16.58ID:uCwEPaTc0 ワッチョイ消してるやつの相手すんなよ...
205デフォルトの名無しさん (ワッチョイ a754-sFbk)
2023/04/20(木) 09:18:43.87ID:Gkc0C+yM0 IPは消してたけどワッチョイ消したことはないな
なんだろう
うまい喩えが見つからないけど、死ぬほど恥ずかしい
なんだろう
うまい喩えが見つからないけど、死ぬほど恥ずかしい
206デフォルトの名無しさん
2023/04/20(木) 09:26:39.56ID:dFvm1wua
Pythonはシンプルな言語だがオモチャでない。
208デフォルトの名無しさん (ワッチョイ a75f-ABex)
2023/04/21(金) 01:14:13.92ID:KCdL0+Bq0 いろいろ目をつむらないとシンプルに扱えないから
玩具の品質には到達していないのはわかる
玩具の品質には到達していないのはわかる
209デフォルトの名無しさん (ワッチョイ a754-sFbk)
2023/04/21(金) 01:27:36.69ID:fM6D7Jjb0 おもちゃとは考えが逆だろう
最小のコードで複雑なことができたら楽しい
pythonは暗黙でいろんなことが決まるのを避けるので、何かするならきっちり指定する
きっちり指定してきっちり動いても何も面白くはない
最小のコードで複雑なことができたら楽しい
pythonは暗黙でいろんなことが決まるのを避けるので、何かするならきっちり指定する
きっちり指定してきっちり動いても何も面白くはない
Python以外で何かいい言語はありますか?
211デフォルトの名無しさん (ワッチョイ 4954-RykB)
2023/04/23(日) 00:04:54.40ID:DlHbN44X0 GoやってGoの仕事に就くとしばらく食える
212デフォルトの名無しさん (ワッチョイ 66fb-k8Rs)
2023/04/23(日) 00:11:46.19ID:Y0v5ztu40 pep8とzenくらいやっとけばMonkになれる
213デフォルトの名無しさん (ワッチョイ 66fb-k8Rs)
2023/04/23(日) 00:12:41.43ID:Y0v5ztu40 所謂monkに文句無し的な
214デフォルトの名無しさん (ワッチョイ 66fb-k8Rs)
2023/04/23(日) 00:13:34.99ID:Y0v5ztu40 ふふってなった ちんこ痒い
215デフォルトの名無しさん (ワッチョイ a95f-Be6V)
2023/04/23(日) 01:40:11.94ID:RcbzEQSV0 香ばしいレスが多いな
Go言語はCから学ばなくても修得できますか?
217デフォルトの名無しさん (ワッチョイ a95f-kYp6)
2023/04/23(日) 02:32:01.30ID:X2+aRqhz0 Rustとまちがってない?
まーどの高級言語も先にCやってた方がだんぜん理解深まるけどね
まーどの高級言語も先にCやってた方がだんぜん理解深まるけどね
218デフォルトの名無しさん (ワッチョイ a633-F6q8)
2023/04/23(日) 14:44:10.81ID:U/RsZCHU0 >>217
今は順番が逆
今は順番が逆
219デフォルトの名無しさん (アウアウウー Sa21-PXVT)
2023/04/23(日) 15:34:25.39ID:fUzoPDLKa 文系でウェブ系なら、Ruby on Rails 1強。
米国年収でも、Rails, AWS Solution Architect が13万ドル
Ruby, Elixir : 9.3 万ドル
Go : 8.9
Rust : 8.7
多くの言語 : 6.5〜7
PHP : 5
Dart : 4.4
日本では、バックエンドの求人倍率が数倍で、
フロントが0.5倍と、10倍の開きがある。
フロントは供給過剰で、低価格競争になっている
つまり欲しい人材は、Rails, Linux, Docker, AWS が出来る香具師
YouTube で有名な雑食系エンジニア・KENTA は、
キャリアパスを、Rails → Go のみと言ってる
理系ならPython で、大学院数学科とか、AWS 機械学習の資格など
米国年収でも、Rails, AWS Solution Architect が13万ドル
Ruby, Elixir : 9.3 万ドル
Go : 8.9
Rust : 8.7
多くの言語 : 6.5〜7
PHP : 5
Dart : 4.4
日本では、バックエンドの求人倍率が数倍で、
フロントが0.5倍と、10倍の開きがある。
フロントは供給過剰で、低価格競争になっている
つまり欲しい人材は、Rails, Linux, Docker, AWS が出来る香具師
YouTube で有名な雑食系エンジニア・KENTA は、
キャリアパスを、Rails → Go のみと言ってる
理系ならPython で、大学院数学科とか、AWS 機械学習の資格など
PythonとGoを両方やることにします。Goも教材がたくさんありますね。現在、人気の
言語ですね。
221デフォルトの名無しさん (ワッチョイ 4954-RykB)
2023/04/24(月) 00:07:55.90ID:HkcOJ3w60 結局ベースにCがあるんだよな
Cでも書けることを、より簡単に、より堅牢に、より保守性高く、書き直しているに過ぎない
そもそもCで書けんわというアーキテクチャーが登場するまで、Cは残り続ける
Cでも書けることを、より簡単に、より堅牢に、より保守性高く、書き直しているに過ぎない
そもそもCで書けんわというアーキテクチャーが登場するまで、Cは残り続ける
C言語。デニス・リッチーですか。長寿の言語ですね。WindowsOSもC言語で書かれて
いるんですね。
223デフォルトの名無しさん (ワッチョイ 66fb-nb5X)
2023/04/25(火) 13:51:41.19ID:FPTpqTcN0 goやpythonよりもPHPやったほうが良い
224デフォルトの名無しさん (ワッチョイ a95f-kYp6)
2023/04/25(火) 22:11:51.74ID:+HdKZSwh0 Webアプリ以外でもPHPで書くの?酔狂やね
225デフォルトの名無しさん (アウアウウー Sa21-k8Rs)
2023/04/26(水) 12:04:22.99ID:cIPQx0Y6a MLでPHPとPython使うだろうjk
226デフォルトの名無しさん (ワッチョイ 4954-RykB)
2023/04/26(水) 18:39:27.90ID:JavlcTjg0 perlで作ったツールを移植してるけど
if key3 not in d[key1][key2]:
d[key1][key2][key3] = {}
みたいなのがたくさん追加で要る
しかもループの中で毎回評価してて気持ち悪い
autovivificationを使わずに多次元辞書をすっきり書けないものか
if key3 not in d[key1][key2]:
d[key1][key2][key3] = {}
みたいなのがたくさん追加で要る
しかもループの中で毎回評価してて気持ち悪い
autovivificationを使わずに多次元辞書をすっきり書けないものか
227デフォルトの名無しさん (ワッチョイ 6646-0EuI)
2023/04/26(水) 21:19:22.89ID:vPfd2wHV0 暗黙の初期化のような、うちうちのノリが多くて、Perlは嫌われたんだろ。
228デフォルトの名無しさん (ワッチョイ 4954-RykB)
2023/04/26(水) 21:33:02.57ID:JavlcTjg0 keyが存在するかどうかのチェックはどうせ毎回やってるんだから同じことか
229デフォルトの名無しさん (ワッチョイ a95f-kYp6)
2023/04/26(水) 22:20:00.88ID:VuAuol7y0 defaultdict
230デフォルトの名無しさん (ワッチョイ 4954-RykB)
2023/04/26(水) 22:29:32.74ID:JavlcTjg0 from collections import defaultdict
d = defaultdict(dict)
d['a']['b']['c'] = 1 # KeyError: 'b'
2次元までなら
d = defaultdict(dict)
d['a']['b']['c'] = 1 # KeyError: 'b'
2次元までなら
231デフォルトの名無しさん (ワッチョイ 6da7-sx73)
2023/04/26(水) 22:43:05.12ID:k7DLXEM30 辞書をそんなネストしないといけない時点で根本的に設計がおかしいのでは?
232デフォルトの名無しさん (ワッチョイ a95f-kYp6)
2023/04/26(水) 22:47:14.72ID:VuAuol7y0 def deepdict(): return defaultdict(deepdict)
d = deepdict()
d['a']['b']['c'] = 1
もっとうまく書けるかもしれんけど
d = deepdict()
d['a']['b']['c'] = 1
もっとうまく書けるかもしれんけど
233デフォルトの名無しさん (ワッチョイ 4954-RykB)
2023/04/26(水) 22:52:56.90ID:JavlcTjg0 dictだけ続くならいいけど、listが混ざったりするんだよな
234デフォルトの名無しさん (ワッチョイ a95f-kYp6)
2023/04/26(水) 22:56:15.01ID:VuAuol7y0 後出しは書く必要ない
任意の関数渡せるんだからスキにしたらええ
任意の関数渡せるんだからスキにしたらええ
235デフォルトの名無しさん (ワッチョイ 4954-RykB)
2023/04/26(水) 23:03:54.93ID:JavlcTjg0 a[1] がlistなのかdictなのか判らんという時点で、pythonでは自動は無理なんだよな
l = []
l[1] = 1 # IndexError
perlはこれが出来るというのも、かなりの飛躍がある
l = []
l[1] = 1 # IndexError
perlはこれが出来るというのも、かなりの飛躍がある
236デフォルトの名無しさん (ワッチョイ a633-ASru)
2023/04/26(水) 23:05:17.48ID:sUnbpfBB0 jsonで受け取ったデータをデコードしてそのまま使ってるとかじゃないの
237デフォルトの名無しさん (ワッチョイ 4954-RykB)
2023/04/27(木) 16:04:02.47ID:BTOHfqgT0 if m := re.search(パターン1):
処理1
elif m := re.search(パターン2):
処理2
else
処理3
みたいに書いていたものを、:= を使わないように変更
m := re.search(パターン1)
if m:
処理1
else:
m := re.search(パターン2)
if m:
処理2
else
処理3
気持ち悪い
elifは展開するともともとこういうものだから仕方ないのか
処理1
elif m := re.search(パターン2):
処理2
else
処理3
みたいに書いていたものを、:= を使わないように変更
m := re.search(パターン1)
if m:
処理1
else:
m := re.search(パターン2)
if m:
処理2
else
処理3
気持ち悪い
elifは展開するともともとこういうものだから仕方ないのか
238デフォルトの名無しさん (スッップ Sd0a-LN7w)
2023/04/27(木) 16:11:37.78ID:Noc5t00Md assignment expressionが必要になった理由がそれだから仕方ないね(pep572)
239デフォルトの名無しさん (ワッチョイ a95f-kYp6)
2023/04/27(木) 16:43:35.35ID:SfEpe4Pu0 m = None
def search(pat):
____global m
____m = re.search(pat, str)
こういうのを直前に書くとか
def search(pat):
____global m
____m = re.search(pat, str)
こういうのを直前に書くとか
240デフォルトの名無しさん (ワッチョイ 4954-RykB)
2023/04/27(木) 16:50:03.39ID:BTOHfqgT0 re.searchは別関数にしたいとは常々感じてる
m.groups() を返してくれると有り難い
マッチしなかったら[]を返すようにすれば、ifにそのまま入れられる筈
なんで正規表現回りこんなに不便なんだろう
m.groups() を返してくれると有り難い
マッチしなかったら[]を返すようにすれば、ifにそのまま入れられる筈
なんで正規表現回りこんなに不便なんだろう
241デフォルトの名無しさん (ワッチョイ a633-ASru)
2023/04/27(木) 18:30:59.89ID:5qwnrWFd0 競プロで複数行の標準入力を受け取るとき、stdinを使った方がだいぶ早いみたいな記憶があったんだけど、今はだれも使ってない
これは自分が何か記憶違いをしてる?
これは自分が何か記憶違いをしてる?
Pythonはオブジェクト指向とデータ隠蔽の所が面白い。
243デフォルトの名無しさん (ワッチョイ 66fb-nb5X)
2023/04/28(金) 00:38:35.47ID:fNFGtOF30 ハードウェアやdbの設計やらセキュリティやら色々大変だよ
まじで全部はやれそうに無い
まじで全部はやれそうに無い
244デフォルトの名無しさん (ワッチョイ a95f-kYp6)
2023/04/28(金) 01:17:05.61ID:0Z+HC9sf0245241 (ワッチョイ a633-F6q8)
2023/04/28(金) 07:46:56.36ID:X3vhIzka0 2系の時の話だったかもしれん
246241 (アウアウウー Sa21-F6q8)
2023/04/28(金) 09:49:13.94ID:gpbxWykPa >>244
どういうこと?
どういうこと?
247デフォルトの名無しさん (アウウィフ FF21-YWDm)
2023/04/28(金) 10:58:04.57ID:pksuSfeeF248デフォルトの名無しさん (ワッチョイ 5701-p0t6)
2023/05/03(水) 19:16:59.83ID:LjnRJYKu0 個人でプログラムしている程度の素人からの質問です
dataclassでクラスの作り方を覚えたら従来のクラスの作り方を覚える必要ってありますか?
dataclassでできないことがイマイチ分からなくて・・・
dataclassでクラスの作り方を覚えたら従来のクラスの作り方を覚える必要ってありますか?
dataclassでできないことがイマイチ分からなくて・・・
249デフォルトの名無しさん (ワッチョイ 3754-fitb)
2023/05/03(水) 20:31:00.66ID:dRzFRHH60 setdefaultが便利なことに気付いた
250デフォルトの名無しさん (ワッチョイ 375f-qg3Z)
2023/05/03(水) 20:42:31.43ID:jsxN4Jfn0 >>248
ひとのコード読まないならいいんじゃない?
@dataclass使わずに自前で実装している事のが多いから
内包表記にもいえるけど同等のベタなコードも知ってたほうが
他人のコードの理解が進むし自分のコードの幅も広がるとは思う
ひとのコード読まないならいいんじゃない?
@dataclass使わずに自前で実装している事のが多いから
内包表記にもいえるけど同等のベタなコードも知ってたほうが
他人のコードの理解が進むし自分のコードの幅も広がるとは思う
251デフォルトの名無しさん (ワッチョイ 5701-p0t6)
2023/05/04(木) 03:58:07.49ID:1n3OCeKB0252デフォルトの名無しさん (ワッチョイ 3754-fitb)
2023/05/04(木) 10:26:11.29ID:Oq6zT20d0 書く量はあんまり変わらないからなあ
reprとか書くならその分減る
reprとか書くならその分減る
253デフォルトの名無しさん (ブーイモ MMff-1K07)
2023/05/08(月) 15:08:20.54ID:PDbtS8P/M すまん。パイソン歴3年とリクルートエージェントで言ってしまった(笑)
本当はvscodeと言いたいが、実はGoogleコラボしか経験がないです。(笑)
今からvscodeでパイソン歴3年は何を言えばいいですか?
本当はvscodeと言いたいが、実はGoogleコラボしか経験がないです。(笑)
今からvscodeでパイソン歴3年は何を言えばいいですか?
254デフォルトの名無しさん (ワッチョイ 9354-KeI6)
2023/05/08(月) 15:26:52.63ID:OygwxwuO0 結果をリストに入れて副作用で返したい
def func(list):
# 処理
list.clear()
list.extend(result)
こんな感じでできるけどどう見ても汚い
副作用がそもそも汚いけど、もう少し何とかならないか
def func(list):
# 処理
list.clear()
list.extend(result)
こんな感じでできるけどどう見ても汚い
副作用がそもそも汚いけど、もう少し何とかならないか
255デフォルトの名無しさん (ワッチョイ efa7-IT0J)
2023/05/08(月) 15:54:19.13ID:N55ghYlR0256デフォルトの名無しさん (ワッチョイ 9354-KeI6)
2023/05/08(月) 15:57:26.54ID:OygwxwuO0 戻り値には成功かどうかを返したい
257デフォルトの名無しさん (ワッチョイ 1610-vOwS)
2023/05/08(月) 16:12:14.22ID:NZN2JSTa0 何がしたいかよく分からないけど成否とリストのタプルを返せばええやん
258デフォルトの名無しさん (ワッチョイ 9354-KeI6)
2023/05/08(月) 16:13:54.12ID:OygwxwuO0 := を使わずにif func()に使いたい
259デフォルトの名無しさん (ワッチョイ efa7-IT0J)
2023/05/08(月) 16:23:33.58ID:N55ghYlR0 成功なら普通に値を、失敗ならFalseを返すとかじゃ駄目なの?
260デフォルトの名無しさん (ワッチョイ 9354-KeI6)
2023/05/08(月) 16:26:44.75ID:OygwxwuO0 それは := を使う前提の話では
261デフォルトの名無しさん (ブーイモ MMdb-vs1K)
2023/05/08(月) 17:15:30.96ID:Kz8WKKNDM 成否と成功時の結果を返したい場合は例外を使うのが一般的なんじゃないかと思う
でなければHttpResponseのように結果ステータスとデータをまとめたクラスのインスタンスで返す
タプルはその簡易版
結果ステータスを持たずにクラス化する方法もなくはない
if foo.func(): do_something(foo.data)
でなければHttpResponseのように結果ステータスとデータをまとめたクラスのインスタンスで返す
タプルはその簡易版
結果ステータスを持たずにクラス化する方法もなくはない
if foo.func(): do_something(foo.data)
262デフォルトの名無しさん (ワッチョイ 335f-UXjQ)
2023/05/08(月) 17:17:05.80ID:htP7Y4l40 if func(list)で副作用で返すとかまぁ現代では誰もやらないから素直に
result = func()
if resultの正常条件:
にしときなよ。
result = func()
if resultの正常条件:
にしときなよ。
263デフォルトの名無しさん
2023/05/08(月) 17:35:23.12 l = []
result = None
def func():
____try:
________l.clear()
________l.extend(result)
________return l
____except:
________return False
#
result = None
print("成功" if func() else "失敗", l)
#
result = ["r1","r2"]
print("成功" if func() else "失敗", l)
#失敗 []
#成功 ['r1', 'r2']
result = None
def func():
____try:
________l.clear()
________l.extend(result)
________return l
____except:
________return False
#
result = None
print("成功" if func() else "失敗", l)
#
result = ["r1","r2"]
print("成功" if func() else "失敗", l)
#失敗 []
#成功 ['r1', 'r2']
264デフォルトの名無しさん (ワッチョイ 9354-KeI6)
2023/05/08(月) 17:48:09.47ID:OygwxwuO0 elifで繋いでいくとどんどん深くなるんだよな
多分、:= を使うのがベスト
でも環境的に使えない
副作用で返すのが次善の策で、実際うまく行っている
ただどう見てもバグの元
多分、:= を使うのがベスト
でも環境的に使えない
副作用で返すのが次善の策で、実際うまく行っている
ただどう見てもバグの元
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- テレビ朝日 本社から男性が転落し死亡。関連会社社員か 当たった通行人が左肩軽傷 [阿弥陀ヶ峰★]
- テレビ朝日本社から20~30代の関連会社社員とみられる男性が転落し死亡 六本木けやき坂通りの通行人にはけが人なし [少考さん★]
- 小島瑠璃子さん、代表取締役を務める会社を破産申請 [牛丼★]
- 「残クレ」でマイホーム、国が銀行向け保険 新型住宅ローン普及促す -日経 ★3 [少考さん★]
- 【サッカー】日本代表、FIFAランキング“4位”の強豪イングランドとの対戦が正式決定! 来年3月に聖地ウェンブリーで激突へ [久太郎★]
- タイがカンボジアを空爆、トランプ氏仲介の和平合意は“事実上崩壊”軍事衝突へ タイ首相「もはや対話の余地ない」 [お断り★]
- ネット民「『女の品評会』を批判してきた日本有数の一大左派コミュニティ、嫌儲。左派の活動家やTwitterの言論人も知るリベラルの砦」 [932029429]
- 【動画】フィギュアスケート、米中ハーフのアリッサ・リュウさん、可愛い [963243619]
- 粗品「南原が3億も貰えんの?」 [279254606]
- 【悲報】ゆうパック配達員、配達中に人妻に抱きつき無理矢理キス「好意があると思ってた」 [566475398]
- 【画像】ドドド童貞は絶ッッッ対"1"を選ぶ出店で緊張してる大分のJ Kの集合写真見つけちゃいましたwwwwwwwwwwww [904880432]
- 朝雑談
