Pythonのお勉強 Part67

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ aa97-ncNf)
垢版 |
2022/05/26(木) 13:45:15.95ID:veL/wiLO0
!extend:default:vvvvv:1000:1024
!extend:default:vvvvv:1000:1024
↑スレ立てる毎に減るので、減ってたら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/

●関連スレ● 自称初心者は↓へ
【まず1嫁】くだすれPython(超初心者用) その57
http://mevius.5ch.net/test/read.cgi/tech/1653225908/

〇前スレ〇 Pythonのお勉強 Part66
http://mevius.5ch.net/test/read.cgi/tech/1636970383/

次スレの建立は>>985が挑戦する。(980通過して24h後も落ちなくなった)
### END of TEMPLATE ### ​
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
2022/06/03(金) 19:40:59.19ID:md39NJ8LM
あるシーケンシャルデータが
0
1000
1000
1000
10
1000
1000
5
4
1000
1000
1000
って配列があったときに10以下を切れ目にグルーピングして二次元配列作りたいんだけど、ワンライナーで書く方法ある?
2022/06/03(金) 20:27:17.91ID:mmKum4Qj0
>>129
https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.split_before
2022/06/03(金) 20:31:37.82ID:SNgr59AR0
何故かMemoryErrorになる
もう一度やるとならなかったりする
メモリなんか有り余ってるのに
2022/06/03(金) 21:26:21.75ID:A/r7iGb40
#背景:南北戦争の時代に使われていた暗号円盤(Cypher Disk)を再現したい。
# 下の画像のように外部の車輪を回して中身のアルファベットを指定する可変的な暗号機械にしたい。
# https://ja.wikipedia.org/wiki/%E5%8D%97%E5%8C%97%E6%88%A6%E4%BA%89%E3%81%AE%E4%BF%A1%E5%8F%B7%E5%8F%B8%E4%BB%A4%E9%83%A8#/media/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:UnionCipherDisk.nsa.jpg
import string, random
#内側の車輪を大文字のアルファベットで生成
inner_alph = list(string.ascii_uppercase)
#画像の通り、文字列tionとingの入力の手間を省くキー(他のキーと長さが異なるので注意したい)。スペース追加。
inner_alph += ["TION","ING"," "]
#外部の数値車輪の定義
outer_num = []
while len(outer_num) <= len(inner_alph):
#外部の車輪は紙に書きやすい、1と8のランダムな羅列。桁数は1から四桁で生成。
number = "".join((random.sample(["1","8"]*5, random.choice(range(1,5)))))
if number not in outer_num:
outer_num.append(number)
# 次に車輪を回転させて、可変性を持たせたい。外部の車輪の数字をランダムに選ぶ(昔の黒電話のダイヤルのイメージ)。
index_letter = random.choice(outer_num)
#外部の車輪を回転。時計の針がずれるように、インデックス文字以降が後半にappendされる形にしたい。
#イメージ:http://inventwithpython.com/cipherwheel/
shiftnum = outer_num.index(index_letter)
outer_num = outer_num[shiftnum:] + outer_num[0:shiftnum]
#極秘暗号表と早見表を保存
crypt_dict = (dict(zip(inner_alph,outer_num)))
crypt_cheatsheet = (dict(zip(outer_num,inner_alph)))
#print(crypt_dict)

##メッセージは以下の通り
message = "ENEMY INCOMING FROM NORTH"
cryptedmessage = []
place = 0
2022/06/03(金) 21:26:36.82ID:A/r7iGb40
#暗号生成開始
while place <= len(message)-1:
#tionとingに対応するため、文字列を4文字先読み
future_string = message[place:place+5]
#あまりスマートではない暗号化処理と先送り処理
if future_string.startswith(("TION")):
cryptedmessage.append(crypt_dict["TION"])
place += len("TION")
elif future_string.startswith(("ING")):
cryptedmessage.append(crypt_dict["ING"])
place += len("ING")
#一文字づつ暗号化
else:
cryptedmessage.append(crypt_dict[message[place]])
place += 1
#暗号と早見表を送付
print(cryptedmessage)

for crypted_num in cryptedmessage:
print(crypted_num + ":"+ crypt_cheatsheet[crypted_num])
2022/06/04(土) 08:21:30.69ID:XaXAMuD50
>>128
エクセルファイル壊したなw
135デフォルトの名無しさん (ワッチョイ a9f6-fRoS)
垢版 |
2022/06/04(土) 10:39:04.46ID:vvbHqYcO0
>>132
https://upload.wikimedia.org/wikipedia/commons/a/a1/UnionCipherDisk.nsa.jpg
内側の円盤に 7 とか & とかあるけど何なん?
2022/06/04(土) 12:23:28.16ID:lbS14JzhH
>>134
壊れてるんですか?
壊したつもりないのにorz
2022/06/04(土) 13:57:47.67ID:fS6UzCwCH
tensorflowでload_modelのあとの.compileって要りますか?
最初にモデル構築したときにコンパイルしてたら要りませんか?
2022/06/04(土) 14:11:05.42ID:wbzuouUH0
sys.argv[1] があればそれを返してなければ別に決めたdefaultの値を返す
というのをtryを使わずにシンプルに書くには?
2022/06/04(土) 14:18:13.51ID:DNUj2Sn5M
sys.argv[1] if len(sys.argv) > 1 else あ
2022/06/04(土) 14:29:26.90ID:wbzuouUH0
if条件を後付けできたっけ? と一瞬見えたけどpythonの三項演算子か
文章として読めるくらい自然
誰だ最初に cond ? true val : false val の書き順を考えた奴は
141デフォルトの名無しさん (ワッチョイ a9f6-fRoS)
垢版 |
2022/06/04(土) 17:13:13.78ID:vvbHqYcO0
>>138
(sys.argv.__getitem__(slice(1, 2, None))+['default value'])[0]
2022/06/04(土) 18:00:53.05ID:okTxRfSRH
OpenAI GymのAcrobotの最短ゴールステップ数はいくつですか?
2022/06/04(土) 19:42:17.06ID:XaXAMuD50
>>136
マジレスすると今の内にデーター救出してファイル作り直した方が良いぞ。
zip+xmlだから手で直せない事も無いが、仕様書は
英語で6000ページ程あって死ねる。
144デフォルトの名無しさん (ワッチョイ 152c-oPJe)
垢版 |
2022/06/04(土) 19:45:28.28ID:nP9ATT2W0
vscodeで書いてる人いる?
関数名単位で折り畳んでるコードの途中を書き直してると
なにかのタイミングでそこ以下の全折り畳みが勝手に開いちゃうんだけど
これ設定でどうにかならないのかな
たぶん書き直し中の意味なさない文字列にpylanceとかが反応してるんじゃないかと思うんだけど…
2022/06/04(土) 19:56:47.68ID:wbzuouUH0
excelのバグでオブジェクト移動すると壊れることがあった
zipにして解凍して手動で修復しないと戻せない
146デフォルトの名無しさん (ワッチョイ 86a5-fRoS)
垢版 |
2022/06/04(土) 22:46:33.32ID:F4p6GD1l0
seleniumでログイン維持した状態で色々試してたら複数の同じidでのログインが確認されましたって
サイト側で出て、終了はquitで終了させてるんですけど、quitだとちゃんと終了出来ないんですか?
またちゃんと終了させるにはどうすればいいのでしょうか?
2022/06/04(土) 23:00:29.30ID:c6VkDSm3M
ログアウトボタンを押せばいいんじゃね?
2022/06/04(土) 23:16:53.41ID:wbzuouUH0
closeしてないとか
149デフォルトの名無しさん (アウアウウー Sa11-fRoS)
垢版 |
2022/06/05(日) 13:09:56.43ID:u0j22vIZa
>>136
>>143
HDD(SSD)が壊れ始めてるかもなω
2022/06/05(日) 13:40:12.13ID:cfenzNII0
win10のcmdでエスケープシーケンスで色を付けたら、
黄色がどう見ても黄土色なので、代わりにESC[38;5;226mを使おうとすると、
うまく行くソフトと無視されるソフトがある
条件は何も変わらない筈なのに何が邪魔してるんだろう
151デフォルトの名無しさん (アウアウウー Sa11-fRoS)
垢版 |
2022/06/05(日) 13:45:41.54ID:u0j22vIZa
cmdの色付けはもうescの時代じゃないぞ
api使え
2022/06/05(日) 14:10:42.03ID:cfenzNII0
termcolorだと拡張に対応してないのでやっぱりyellowは黄土色なんだよな
やってることは同じ
153デフォルトの名無しさん (アウアウウー Sa11-fRoS)
垢版 |
2022/06/05(日) 15:45:10.23ID:udiiYXiVa
REG ADD HKCU\CONSOLE /f /v VirtualTerminalLevel /t REG_DWORD /d 1
または
https://boukenki.info/commandprompt_ichibu_tokutei_mojiretu_iro_henkou_houhou/
2022/06/05(日) 16:06:28.25ID:PQtNePYx0
>>131
32bit版使ってないか確認
2022/06/06(月) 06:00:56.68ID:uEmonKGk0
lambda式とか自分で書いてて頭の中から出てくる気がしない
例えば↓とか

リスト ln と数 n を受け取って
lnからn より大きい個数を返す関数number_of_big_numbers()
for文やwhile文を用いずに、filter を用いて定義してください

def number_of_big_numbers(ln, n):
return sum(map(lambda x: 1, filter(lambda x: x>n, ln)))

やってることはわかるけどfor文、while文書かないって制約ないとこんなの作らないよね?
156デフォルトの名無しさん (ワッチョイ 9d97-GLPP)
垢版 |
2022/06/06(月) 07:56:51.35ID:oHO1A3NO0
Pythonの場合ほとんど内包表記で書いた方が短くなるからmap,filterを使うことは少ないな。
でも、慣れたらわかるよ。
len([v for v in ln if v > n])かなあその例だったら。
2022/06/06(月) 08:12:53.83ID:vU8u/TBb0
個数なんだからlenだな
ネストしないなら内包表記でもフィルターでも大差ない
むしろフィルターの方が直感的
158デフォルトの名無しさん (スフッ Sdea-JaQN)
垢版 |
2022/06/06(月) 09:46:59.38ID:MeEZ09lYd
>>> import numpy as np
>>> i = np.array([3,5,1,2,6,9,8,7,0,4])
>>> i[i>3]
array([5, 6, 9, 8, 7, 4])
>>> len(i[i>3])
6
2022/06/06(月) 09:50:54.37ID:Ug3DHjCKa
sum(i>3) でいけるな
160デフォルトの名無しさん (ブーイモ MM39-GLPP)
垢版 |
2022/06/06(月) 10:02:06.45ID:WnvkflPwM
>>157
そうかなあ?慣れだと思うけど
メソッドチェーンでfilter,map書ければわかりやすいけど Pythonの記法だとどっちもどっちな気がする。
自分は複雑なmap/filterはむしろ内包表記に変形して理解するわw
2022/06/06(月) 10:39:40.85ID:vU8u/TBb0
filter(lambda x: x>n, ln)
[x for x in ln if x>n]

内包表記だとlnが埋没してしまう
式1 for 式2 in 式3 if 式4
という構文が複雑
式1 if 式2 else 式3 for 式4 in 式5
だともっと複雑
2022/06/06(月) 11:18:23.25ID:vU8u/TBb0
処理対象のリストが中間に来ると、ネストした時に
[ ... in list ...]
[ ... in [ ... in list ...] ...]
[ ... in [ ... in [ ... in list ...] ...] ...]
こんな増え方をするので一気に読めなくなる
2022/06/06(月) 11:27:14.55ID:UZF8Zcz90
本来はそのためのインデントだったんだが・・・
2022/06/06(月) 11:30:23.10ID:vU8u/TBb0
[x for x if x>n in ln]
という語順でif節は省略可能、みたいな文法だったら、
ネストしても文章になってた筈
165デフォルトの名無しさん (アウアウウー Sa11-fRoS)
垢版 |
2022/06/06(月) 11:50:14.01ID:Ug3DHjCKa
通常 for のネストは内側優先だが
内包 for のネストは外側優先なのか
166デフォルトの名無しさん (ガックシ 0671-GLPP)
垢版 |
2022/06/06(月) 12:10:49.41ID:GZdIbtar6
map/filterでも、あんまりややこしいのは1つの式でなく適度に分割した方がいいと思うけどね。
ifが無くても内包表記のネストが3段とかになるとそもそも相当読みづらい
内包表記でもジェネレーターの内包表記にしておけば余計なリストを作らずに済むし
JSとかRubyのln.filter(関数).map(関数).reduce(関数)のスタイルは圧倒的に読みやすいと思うけどね。
2022/06/06(月) 12:10:57.50ID:vU8u/TBb0
内包表記は[x for x in ...]の先頭のxがxじゃない時が本来の使い方で、
x for xでifを付けるなら、それはやっぱりフィルターだと思う
フィルターならフィルターだと書いた方がlambdaがあったとしても読みやすい

癌はmapで、これはどう書いても内包表記の方が優れてる
単純なmapでもそうだし条件が付くならなおさら
2022/06/06(月) 12:26:45.75ID:9Upi+T9Ya
内包表記って必要なの?
処理が少しでも早くなるならいいけど、
見辛い、理解しづらいってなんの得になるの?
2022/06/06(月) 12:29:04.88ID:v7exk6pA0
複雑な内包表記を書くときは分割するかforループにしろ
170デフォルトの名無しさん (ワッチョイ 159b-OMHl)
垢版 |
2022/06/06(月) 12:32:23.41ID:GbLd0KfZ0
内包表記でもインデントできるので、可読性をあげたい時は使ってみてください
2022/06/06(月) 12:36:05.67ID:vU8u/TBb0
インデントまで必要な時点でどうやっても読みにくい
2022/06/06(月) 12:41:55.19ID:+tLOHMcU0
mapがうんちなのは本当になんとかしてほしい
デフォルトエンコーディングをutf8にするとかどうでもいいから
173デフォルトの名無しさん (JP 0H71-4pLq)
垢版 |
2022/06/06(月) 12:50:56.61ID:m98Jb+yzH
map(int, float_no_list)みたいなときしか使わないな
この場合は、
[*map(int, float_no_list)]のほうが、
[int(v) for v in float_no_list]のより短いから使うだけ
打つ量を減らしたいだけで読みやすさで選んでないな
Jupyter上で試行錯誤が多いから。あとでちゃんとしたコードにするときに読みやすさは考える
174デフォルトの名無しさん (JP 0H71-4pLq)
垢版 |
2022/06/06(月) 13:00:44.68ID:m98Jb+yzH
>>155
ちなみに元の例に戻ると、filterを使えと書いてあるのだから、
len(filter(lambda x: x>n, ln))
かね。filter後にわざわざmapして1にしてsumする意味が感じられない。
mapで1にするなら、sum(map(lambda x: 1 if x > n else 0, ln))かな。
こっちは応用が効く場合がある(else -1にすればnより大きい個数とn以下の個数の差が求められるとか)
他にはsum(map(lambda x: int(x > n), ln))とかもあるけど技巧的だね
175567 (スップ Sdca-PXuc)
垢版 |
2022/06/06(月) 13:06:38.95ID:oBW+89oQd
>>174
>>174
len(filter(lambda x: x>n, ln))
だと
TypeError: object of type 'filter' has no len()
になっちゃう
2022/06/06(月) 13:19:09.72ID:vU8u/TBb0
ジェネレータにlenが無いのは手抜きではなくて本質的な話だよな
2022/06/06(月) 14:07:03.38ID:vZsNJksDM
len(list(filter(lambda x: x>n, ln)))

これでいけると思う
何かフィルターした後のリストの長さってのがぱっと見でわかるから個人的には内包表記よりこっちのがいいな
自分が内包表記が苦手なのもあるけど
178デフォルトの名無しさん (スップ Sdca-PXuc)
垢版 |
2022/06/06(月) 14:19:50.83ID:oLiAgBI4d
def number_of_big_number(ln, n):
f = filter(lambda x: x>n, ln)
m = map(lambda x: 1, f)
return sum(m)

よく考えたらこれでよくね?
2022/06/06(月) 14:46:26.36ID:sRSbc3ijM
リストはミュータブルなのにa, b = [1, 2, 3]; b = []; len(a);len(b)で3, 0となるのは何故なのさ?
2022/06/06(月) 14:58:54.17ID:v7exk6pA0
a = b = [1, 2, 3]; b = []; print(a, b)
a = b = [1, 2, 3]; b[:] = []; print(a, b)
2022/06/06(月) 15:00:14.40ID:wz8sfihq0
map(lambda x: 1,...はメモリ上へのlist化をさける苦肉の策だろうけど
前提条件なんか無視してsum(1 for x in ln if x > n)したほうが良さそう

>>179
なぜ両方空にならないのかという意味であれば、同じ参照でも変数は個別に存在し
単純代入は新しい参照先の割り当てに過ぎず、元の参照先を編集してる訳ではない
2022/06/06(月) 15:03:53.80ID:8NtqgJJW
a=[1,2,3]
b=a
print(a,b)
b=[]
print(a,b)
b=a
b.append(4)
print(a,b)
b.pop()
print(a,b)

>>[1, 2, 3] [1, 2, 3]
>>[1, 2, 3] []
>>[1, 2, 3, 4] [1, 2, 3, 4]
>>[1, 2, 3] [1, 2, 3]
183デフォルトの名無しさん (アウアウウー Sa11-fRoS)
垢版 |
2022/06/06(月) 15:04:51.12ID:Ug3DHjCKa
sum(map(lambda x: x > n, In))
2022/06/06(月) 15:22:37.41ID:wz8sfihq0
なるほどPythonic、ブールは整数の派生型だったな。sum(map(n.__lt__, ln))で済む事もあるか
2022/06/06(月) 15:33:43.92ID:sRSbc3ijM
ああ分かったよ参照地の値渡しってこんなんだったな
参照渡しとごっちゃになってた
ややこしいなーおい
186デフォルトの名無しさん (JP 0H71-4pLq)
垢版 |
2022/06/06(月) 16:39:39.60ID:m98Jb+yzH
sumレベルだと、reduceする意味ないよな、長くなるだけで
functools.reduce(lambda a, x: a + int(x > n), ln) とは書けるが
もっと特殊な集計をしたいのならreduceは有り得そうな気がするが
187デフォルトの名無しさん (JP 0H71-4pLq)
垢版 |
2022/06/06(月) 16:43:09.43ID:m98Jb+yzH
sum(map(lambda x: x > n, In))
は、
sum(x > n for x in ln)
にもできるね。このforはfor「文」ではないしね
2022/06/06(月) 21:04:54.69ID:OVrZnyn60
敢えてリスト内包で書いてみる

#ABCDEFGHIJKLMNOPQRSTUVWXYZ
#HOGEFIJKLMNPQRSTUVWXYZABCD

#上みたいにキーワードHOGEをもとにアルファベットを置換する暗号を作りたい
#まず暗号表の一番最初にHOGEと記載し、残りはHOGEの最後のEから続く形で
#FGHIとアルファベット通りに暗号表を埋め、Zに到達したらアルファベットの
#最初から埋める(ABCD...)。重複に注意したい。

import string
alphabets = list(string.ascii_uppercase)
key_string = list("HOGE")
cypher = []

cypher = key_string + [i for i
in alphabets
#リスト内包でキーワードの最後の文字Eの後にあり、
if alphabets.index(i) > alphabets.index(key_string[-1])
#かつキーワードに含まれていない文字のリストを作成
and i not in key_string]
#残りのアルファベットで後半を埋める
cypher += [i for i in alphabets if i not in cypher]

改行しても読みにくいですね。。。
189デフォルトの名無しさん (ワッチョイ 9d97-GLPP)
垢版 |
2022/06/06(月) 21:41:41.07ID:oHO1A3NO0
itertools.repeatとか使ったら1行の内包表記で書ける気がするけどな。
190デフォルトの名無しさん (ワッチョイ 9d97-4pLq)
垢版 |
2022/06/06(月) 21:56:47.75ID:oHO1A3NO0
key_stringの重複排除も無理やりOrderedDictで実現しといた

import string
import itertools
from collections import OrderedDict
key_string = [*OrderedDict([(c, None) for c in 'HOGE']).keys()]
([*key_string] + [c2 for c2 in itertools.dropwhile(lambda c: c <= key_string[-1], string.ascii_uppercase * 2) if c2 not in key_string])[:26]
191デフォルトの名無しさん (ワッチョイ 9d97-4pLq)
垢版 |
2022/06/06(月) 21:57:12.33ID:oHO1A3NO0
すまん最後の行はcypher = にしといてくれ
2022/06/06(月) 21:57:34.54ID:v7exk6pA0
i = alphabets.index(key_string[-1])
alphabets = alphabets[i:] + alphabets[:i]
cypher = key_string + [c for c in alphabets if c not in key_string]
2022/06/06(月) 22:33:35.11ID:OVrZnyn60
>>192
すごいスマートです
どれも勉強になりますm(_ _)m
2022/06/06(月) 22:35:12.91ID:AnrgIbHNM
key_string = ‘HOGE’
alphabets = ‘’.join(reversed(ascii_uppercase.split(key_string[-1])))
cypher = key_string + ‘’.join(x for x in alphabets if x not in key_string)

ネストした内包表記ほどじゃないけど
メソッドチェーンで書けないからかなり読みにくい
実際作るなら各行を関数化して関数名で意図が伝わるようにする
2022/06/06(月) 22:40:48.17ID:AnrgIbHNM
>>192のindexとsliceで入れ替えるほうがPythonっぽいかも
splitしてからreverseしてみたいに考えるのは他の言語の影響を強く受けてる
196デフォルトの名無しさん (スップ Sdca-PXuc)
垢版 |
2022/06/07(火) 17:29:22.71ID:TSpMo2rsd
pandasってなぜパンダなの?
2022/06/07(火) 17:38:59.82ID:MOJeClMf0
Pediatric Autoimmune Neuropsychiatric Disorders Associated with Streptococcal Infections
2022/06/07(火) 17:53:38.32ID:MOJeClMf0
UnRAR.exe でrarの中身のリストを取ってくる時、sjisに無い文字が?になってしまう
7za.exe はutf-8で出力するモードがあって問題は起きないけど、UnRARはsjis固定ぽい
詰んでる?
2022/06/07(火) 20:44:13.38ID:MOJeClMf0
よく判らんのが、コンソールに表示させるだけなら正しく表示される
ファイルにリダイレクトさせると化けてるというか?に置き換えられてる
恐らくそれと同じ理由で、subprocess.PIPEもおかしくなる
2022/06/07(火) 21:02:33.25ID:MOJeClMf0
7zaではなく7zにすればrarも扱えるので解決
2022/06/08(水) 12:21:03.28ID:7ub2o1NQ0
for
 try:
  処理
 except:
  continue
 finally:
  後処理

みたいに書くと、finallyを無視してcontinueしてしまうのでは?と思ったけど
そんなことは無かった
2022/06/08(水) 12:46:08.13ID:vcMlxkVMd
普通そんな書き方そもそもしない
2022/06/08(水) 12:51:55.05ID:cdI+dEzz6
変なとこに飛ばないためのfinally なので
2022/06/08(水) 17:17:05.18ID:7ub2o1NQ0
文字列のリストがあって、先頭が#で始まっていない最初のものを取り出す
ループを使わずに書くには?
2022/06/08(水) 17:20:35.02ID:E4mWgpqm0
そんなのループでいいけど
next(s for s in L if not s.startswith('#'))
2022/06/08(水) 17:21:15.32ID:AiIZO1YE0
>>204
[w for w in list if not w.startswith(“#”)]
2022/06/08(水) 17:22:19.41ID:AiIZO1YE0
あ、その[1]か、最初だから
2022/06/08(水) 17:22:54.21ID:AiIZO1YE0
ごめん0だった
2022/06/08(水) 17:30:28.69ID:7ub2o1NQ0
next()はStopIterationが怖い
2022/06/08(水) 17:31:33.09ID:E4mWgpqm0
第2引数
2022/06/08(水) 17:39:20.66ID:7ub2o1NQ0
該当するものが無かった場合、デフォルトを設定しておいて、もしデフォルトだったら、とするか、
普通にエラーにしてtryで捕まえるのとどっちがいいだろう

エラーが出ないようにいろいろ配慮して書くより、何も考えずにエラーにする方が
python的な気がしてきた
212デフォルトの名無しさん (ワッチョイ ea2c-oPJe)
垢版 |
2022/06/08(水) 17:48:28.41ID:xigHBt180
そんなもんpythonでなくとも一緒
2022/06/08(水) 18:45:29.37ID:AiIZO1YE0
scrapyとかboto3の話もしたいなぁ
214デフォルトの名無しさん (ワッチョイ a933-Rebr)
垢版 |
2022/06/08(水) 22:58:19.98ID:9QcK/PFh0
例外処理は言語関係なく大事なので勉強してください
2022/06/08(水) 23:11:29.92ID:7ub2o1NQ0
例外処理と言っちゃうと違うんだよな
予期せぬエラーではなく、正常系の処理でも積極的に例外を使う
関数の戻り値を見て判断、みたいなことを避ける
2022/06/09(木) 00:31:03.46ID:wTBvvN970
>>198
7-zipのGUI 版の7z.exe については、以下に書いた。
773 が漏れ

【.cmd】 バッチファイルスクリプト %14 【.bat】
https://mevius.5ch.net/test/read.cgi/tech/1597442426/771-775
https://mevius.5ch.net/test/read.cgi/tech/1597442426/836

ただ本来、7z.exeはコマンド用じゃなく、画面操作用だから、
必ず、解凍先フォルダは空の状態で始めて下さい!

そこにファイルがあると、同じファイル名の場合に、
上書きしますかとか聞かれて、コマンドが止まる

だから本当は、7-zipのコマンド用実行ファイルを使った方がよいかも
2022/06/09(木) 01:13:02.50ID:vb6k1Pem0
7zaに関しては困ってなくて、7zaと同様のことがunrarでできなくて困ってた
7zaではなく7zを使えばそっちはrarにも対応してるのでunrarは不要になる

7-Zip Extraコンソール板の最新のものでもrarに対応してないのが問題
理由がよく判らない
2022/06/09(木) 08:46:42.58ID:vb6k1Pem0
class TestClass:
 pass

a = TestClass()
a.member = 1
print(a.member)

これは特にエラーもなく動く
memberはどこに記憶されとるの?
2022/06/09(木) 09:58:40.07ID:wTBvvN970
Ruby, JavaScript で言う、特異オブジェクト

そのインスタンスにだけ、外からmember が作られるが、
別のインスタンスには、memberは存在しない。
クラス内で作られたものではないから

a = TestClass( )
b = TestClass( )

a.member = 1
print( a.member ) #=> 1
print( b.member ) # エラー。memberは存在しない
2022/06/09(木) 10:15:30.67ID:vb6k1Pem0
class定義というのは、形をきっちり決めるものではなくて、
その中で変数を作ればそれはあるし作らなければ無いというだけの話か
__init__() で作ってもいいし、生成後に作ってもいい

このクラスのメンバは以下の通りです、みたいな定義がどこにも無いから変だと思った
2022/06/09(木) 11:05:11.17ID:1tSt6fQl0
>>215
パターンマッチできたし値とエラー情報をタプルで戻すのもあり
ケースによるけど
222デフォルトの名無しさん (ワッチョイ 9d97-ZxTw)
垢版 |
2022/06/09(木) 14:48:29.51ID:KIKA+I2C0
50レスぐらい前で話題になってた、メソッドチェーン風のmap/filterは、toolzのpipeを使えばできそう。
>>> from toolz.functoolz import pipe
>>> import math
>>> pipe(range(100), lambda it: filter(lambda v: int(math.sqrt(v)) ** 2 == v, it), lambda it: map(lambda v: v * 100, it), list)
[0, 100, 400, 900, 1600, 2500, 3600, 4900, 6400, 8100]

これだとちょっとややこしいから、filterやmapをラップして、高階関数化しておく。
>>> def filter2(func):
>>>  return lambda it: filter(func, it)
>>> def map2(func):
>>>  return lambda it: map(func, it)
>>> pipe(range(100), filter2(lambda v: int(math.sqrt(v)) ** 2 == v), map2(lambda v: v * 100), list)
[0, 100, 400, 900, 1600, 2500, 3600, 4900, 6400, 8100]

んで、このfilter2, map2と同じものはtoolz.curriedの中にあるfilterやmapで用意されているっぽい。
2022/06/09(木) 16:59:32.72ID:oBeyd70Z0
リンク貼れないんですが、
AlphaGoを模したオセロAIを作る(2): RLポリシーネットワーク
というのを検索して出てくる記事で、
学習できないという結果があります
なぜできないか、どう改善すればいいかわかりますか?
2022/06/09(木) 17:05:02.75ID:1tSt6fQl0
スレが適当でないし記事への質問なら投稿者に聞けば良いのでは?
2022/06/09(木) 17:24:01.80ID:vb6k1Pem0
オセロなんてある程度打ったら残りは完全読みだから、
計算力的に完全読みできるようになるまでの形勢判断になるんだろうな
2022/06/09(木) 17:36:53.88ID:LsKlj9I4M
>>222
toolzのpipeじゃなくてsspipeかpip install pipeで使えるpipeパッケージ使ってみて
特に後者がオススメ
2022/06/09(木) 17:39:01.04ID:2fubDR6qH
>>224
検索してみたけど、投稿者がお手上げしてるぞw
2022/06/09(木) 18:41:58.73ID:+yYG9Gwqr
alphaGOはもう古い手法だし作り方はそのへんに溢れてるんじゃないの?
昔論文読んでオセロで実装したことあるけど普通に動いたぞ
RLポリシーがおかしいのか?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況