!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のお勉強 Part72
https://mevius.5ch.net/test/read.cgi/tech/1703659345/
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
探検
Pythonのお勉強 Part73
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ f610-G7il)
2024/06/06(木) 08:48:10.07ID:DsazphEm0716デフォルトの名無しさん (ワッチョイ 0202-wgTk)
2024/08/25(日) 00:46:01.00ID:RYi2McLx0717デフォルトの名無しさん (ワッチョイ 869f-ZXKO)
2024/08/25(日) 04:20:36.13ID:m6R0xWtd0 アプリならDropboxとか
Unix系OSの管理スクリプトもPython多い
クラウド開発基盤のSDKはまずJS/Python用が提供されるイメージ
Unix系OSの管理スクリプトもPython多い
クラウド開発基盤のSDKはまずJS/Python用が提供されるイメージ
718デフォルトの名無しさん (ワッチョイ feb4-X034)
2024/08/25(日) 07:08:32.01ID:v8rADpZv0719デフォルトの名無しさん (ワッチョイ 5d54-mV0m)
2024/08/25(日) 08:18:55.02ID:hNWqtkNw0 TOYPROみたいな難易度だと馬鹿にされてる気にならないか
AtCoderの過去問のギリギリ解けないくらいの難易度に挑戦するのがいい
AtCoderの過去問のギリギリ解けないくらいの難易度に挑戦するのがいい
720713 (ワッチョイ 0202-wgTk)
2024/08/25(日) 12:06:13.04ID:RYi2McLx0721デフォルトの名無しさん (ワッチョイ 827c-zh+a)
2024/08/25(日) 16:43:39.90ID:4hCnijZ/0 Pythonは少なくとも国内ではバックエンドというかバッチ処理が多い
COBOL→Java→の流れでSIerのゴミが大量に流入してきている
COBOL→Java→の流れでSIerのゴミが大量に流入してきている
722713 (ワッチョイ 0202-wgTk)
2024/08/25(日) 17:01:03.91ID:RYi2McLx0723デフォルトの名無しさん (ワッチョイ 6101-wgTk)
2024/08/25(日) 19:14:35.71ID:iGZXlcQ10 COBOLは十進法をきちんと扱えるという以外にはほとんどメリットがない言語という印象しかない
724デフォルトの名無しさん (ワッチョイ 5d54-mV0m)
2024/08/25(日) 20:04:56.14ID:hNWqtkNw0 大昔の言語なのに自然言語みたいに書こうと思っただけで凄い
725デフォルトの名無しさん (ワッチョイ 5d54-mV0m)
2024/08/25(日) 20:09:37.74ID:hNWqtkNw0 ADD 1 TO A
と書いてあるのをパースして a += 1 の意味だと解釈するのと、
Aに1を加算する
1をAに加算する
と日本語の語順になってるのとでは難易度違うだろうか
と書いてあるのをパースして a += 1 の意味だと解釈するのと、
Aに1を加算する
1をAに加算する
と日本語の語順になってるのとでは難易度違うだろうか
726デフォルトの名無しさん (ワッチョイ 5e01-BjKc)
2024/08/25(日) 21:54:50.38ID:ccGLiIcN0 JavaですらDecimalのバッチ処理はCOBOLよりも数倍遅くて困ることがよくあったくらいなのにPythonで作り直すとかよほどの特殊案件でもない限りないだろ
727デフォルトの名無しさん (ワッチョイ 5d54-mV0m)
2024/08/25(日) 22:05:31.74ID:hNWqtkNw0 1日分のバッチ処理が24時間で終わればokなんじゃないの
728デフォルトの名無しさん (ワッチョイ 22e7-odry)
2024/08/25(日) 22:59:45.21ID:v44CMEUo0 >>726
RDBの存在を無視した構成なんて意地悪な仮定の話だろ
RDBの存在を無視した構成なんて意地悪な仮定の話だろ
729デフォルトの名無しさん (ワッチョイ 25d5-H3pI)
2024/08/25(日) 23:09:54.62ID:RcRPlRXa0 今はそういうのはrustってやつに移ったんだろ
730デフォルトの名無しさん (アウアウエー Sa0a-PBPb)
2024/08/26(月) 10:51:45.30ID:3+7ACU+Ua >>724
ぴゅう太のことですねわかります
ぴゅう太のことですねわかります
731デフォルトの名無しさん (アウアウエー Sa0a-PBPb)
2024/08/26(月) 10:54:05.39ID:3+7ACU+Ua >>725
>ADD 1 TO A
>と書いてあるのをパースして a += 1 の意味だと解釈するのと、
違うと思う
ADD 1 TO A
と書いてあるのをパースして inc a だったり add a, 1
a += 1;
と書いてあるのをパースして inc a だったり add a, 1
それぞれはあっても
>ADD 1 TO A
>と書いてあるのをパースして a += 1 の意味だと解釈するのと、
は(当時の発想として)無い
>ADD 1 TO A
>と書いてあるのをパースして a += 1 の意味だと解釈するのと、
違うと思う
ADD 1 TO A
と書いてあるのをパースして inc a だったり add a, 1
a += 1;
と書いてあるのをパースして inc a だったり add a, 1
それぞれはあっても
>ADD 1 TO A
>と書いてあるのをパースして a += 1 の意味だと解釈するのと、
は(当時の発想として)無い
732デフォルトの名無しさん (アウアウエー Sa0a-PBPb)
2024/08/26(月) 10:56:58.91ID:3+7ACU+Ua >>726
描かれた当時のCOBOLやJavaのDecimalよりも
今の最新機種でPythonのDecimalの方が速ければ良い
ってことしか考えてないのが彼らの発想
(それが良いかどうかは別問題)
描かれた当時のCOBOLやJavaのDecimalよりも
今の最新機種でPythonのDecimalの方が速ければ良い
ってことしか考えてないのが彼らの発想
(それが良いかどうかは別問題)
733デフォルトの名無しさん (ワッチョイ 5d54-mV0m)
2024/08/26(月) 11:00:13.19ID:sJ3BJnnX0 ぴゅう太が好例なんだよな
FORをマワレに置き換えることしかできなくて、日本語としての自然言語にはならなかった
命令文の先頭に動詞が来るという文法体系がパーサにとって都合がいい
プログラム言語に留まらず、数式の記法とか、いろんなもんが西洋的にできている
内包表記は恐らく英語ネイティブにはすんなり読める
FORをマワレに置き換えることしかできなくて、日本語としての自然言語にはならなかった
命令文の先頭に動詞が来るという文法体系がパーサにとって都合がいい
プログラム言語に留まらず、数式の記法とか、いろんなもんが西洋的にできている
内包表記は恐らく英語ネイティブにはすんなり読める
734デフォルトの名無しさん (ワッチョイ 2217-HfY5)
2024/08/26(月) 11:53:04.79ID:IX0YJneq0 >>733
書いてることが適当過ぎるだろw
書いてることが適当過ぎるだろw
735デフォルトの名無しさん (スッップ Sd22-OUoC)
2024/08/26(月) 12:12:33.19ID:Mlnqm5XWd 死諸葛.走(生仲達)
漢語ならよゆーよゆー
漢語ならよゆーよゆー
736デフォルトの名無しさん (アウウィフ FF85-GsaO)
2024/08/26(月) 13:51:43.12ID:+6LxARHTF pythonは高速化されましたが何か?
https://www.youtube.com/watch?v=V979LbYA35c
https://www.youtube.com/watch?v=V979LbYA35c
737デフォルトの名無しさん (ワッチョイ cd58-1qv6)
2024/08/26(月) 17:01:41.75ID:e4+Ag4it0 おCOBOL頂戴せん
738あぼーん
NGNGあぼーん
739デフォルトの名無しさん (ワッチョイ 119f-RCJX)
2024/08/27(火) 10:48:36.43ID:34JJYlBb0 >>738
そろそろ終了かい
そろそろ終了かい
740デフォルトの名無しさん (ワッチョイ 52ee-RCJX)
2024/08/27(火) 11:44:47.44ID:oZygCrgB0 レジェンド級の開発者が追放されたらしいけどPython劣化していくの?
>Python理事会が古参開発者を追い出して開発者コミュニティが騒動に
https://qiita.com/rana_kualu/items/0369ab4e1df50bc37d7e
>Python理事会が古参開発者を追い出して開発者コミュニティが騒動に
https://qiita.com/rana_kualu/items/0369ab4e1df50bc37d7e
741デフォルトの名無しさん (ワッチョイ 5d54-mV0m)
2024/08/27(火) 11:47:18.67ID:Olv0GL3m0 座禅 of pythonを書いた人だな
742デフォルトの名無しさん (ワッチョイ 8277-PBPb)
2024/08/27(火) 12:05:38.30ID:4Xanv84P0 >> うっかりPythonが遅いと口走ったhypernovaが永久BANされたり
www
www
744デフォルトの名無しさん (ワッチョイ fe21-+EcQ)
2024/08/27(火) 12:21:33.85ID:HtqvmbLe0 python財団胡散臭いよな
745デフォルトの名無しさん (ワッチョイ cd3f-kmY6)
2024/08/27(火) 13:41:47.95ID:z6Yz2T7N0 たった3ヶ月のバンやろ
746デフォルトの名無しさん (スッップ Sd22-1k3/)
2024/08/27(火) 14:11:40.82ID:2FiUICNvd Python始めたんだがもしかして数学無勉の人生やとしんどい?
747デフォルトの名無しさん (ワッチョイ 46b9-VAad)
2024/08/27(火) 14:32:50.59ID:e8RCU1u30 たまたまやってこなかっただけならいけるかも
苦手なのが分かってて避けてきたならしんどい
苦手なのが分かってて避けてきたならしんどい
748デフォルトの名無しさん (ワッチョイ 2205-pbyY)
2024/08/27(火) 15:40:58.25ID:jU+wQ64h0 websocket終了させても次起動すると前の命令が残ってて受信しだすのどうにかならないの・・
749デフォルトの名無しさん (ワッチョイ 4d9f-vhpZ)
2024/08/27(火) 16:03:48.90ID:s5Uqc+HW0 外してるかもしれんけどpub/subの話ならサーバ側がそういう実装なんじゃ
サーバ側を見直すか別名でsubscribeしたらどうか
サーバ側を見直すか別名でsubscribeしたらどうか
750デフォルトの名無しさん (ワッチョイ ad68-pbyY)
2024/08/27(火) 16:20:43.45ID:+d875zN80 >>749
なるほどやってみるか
なるほどやってみるか
751デフォルトの名無しさん (ワッチョイ fec5-H3pI)
2024/08/27(火) 19:17:56.22ID:Q1x0BOco0 大事なのはPythonで何やるかだろう
簡単なタスクを自動化するみたいなレベルなら四則演算できるレベルで十分
簡単なタスクを自動化するみたいなレベルなら四則演算できるレベルで十分
752デフォルトの名無しさん (ワッチョイ 5d54-mV0m)
2024/08/27(火) 19:34:11.22ID:Olv0GL3m0 プログラムはロジックで、数学は抽象化だからな
必要な素養が全然違う
必要な素養が全然違う
753デフォルトの名無しさん (ワッチョイ 4d9f-vhpZ)
2024/08/27(火) 20:18:30.22ID:s5Uqc+HW0 ロジックは分野関係なく当たり前の素養
挙げるとしたらモデル化能力
それには抽象化能力ないとね
挙げるとしたらモデル化能力
それには抽象化能力ないとね
754デフォルトの名無しさん (ワッチョイ cd01-FZk0)
2024/08/27(火) 20:27:14.51ID:l+VCbokh0 手計算で3日かかるの数秒で出来るのええやん
755デフォルトの名無しさん (ワッチョイ 5d54-mV0m)
2024/08/27(火) 20:31:30.23ID:Olv0GL3m0 一般社会のロジックとプログラムのロジックは別物
例外を一切認めないようなrigidなロジックはプログラム特有
例外を一切認めないようなrigidなロジックはプログラム特有
756デフォルトの名無しさん (アウアウエー Sa0a-PBPb)
2024/08/29(木) 09:40:06.31ID:1jszJs3na 良きに計らえ(シャチョーさん)
757デフォルトの名無しさん (ワッチョイ 5d54-mV0m)
2024/08/29(木) 15:55:49.43ID:F2p43Zdw0 import re
s = 'abc\\n'
print(re.search('a(.+)\\\\n', s).groups()[0]) # bc
print(re.search('a(.+)\\n', s).groups()[0]) # error
何故こんな挙動に?
s = 'abc\\n'
print(re.search('a(.+)\\\\n', s).groups()[0]) # bc
print(re.search('a(.+)\\n', s).groups()[0]) # error
何故こんな挙動に?
758デフォルトの名無しさん (ワッチョイ 4d9f-vhpZ)
2024/08/29(木) 16:35:29.97ID:01fBpAqb0 >757
>>> len('abc\\n')
5
>>> len('abc\n')
4
>>> len(r"abc\n")
5
https://docs.python.org/ja/3.11/library/re.html#raw-string-notation
正規表現リテラルに関しては3番目のraw stringで書いた方がいい
>>> len('abc\\n')
5
>>> len('abc\n')
4
>>> len(r"abc\n")
5
https://docs.python.org/ja/3.11/library/re.html#raw-string-notation
正規表現リテラルに関しては3番目のraw stringで書いた方がいい
759デフォルトの名無しさん (ワッチョイ 5d54-mV0m)
2024/08/29(木) 16:55:49.87ID:F2p43Zdw0 import re
s = 'abc\\n'
print(re.search(r'a(.+)\\n', s).groups()[0]) # bc
print(re.search(r'a(.+)\n', s).groups()[0]) # error
rで書いてもおかしい気がするんだよな
rなんだから\1個でいい筈なのに
s = 'abc\\n'
print(re.search(r'a(.+)\\n', s).groups()[0]) # bc
print(re.search(r'a(.+)\n', s).groups()[0]) # error
rで書いてもおかしい気がするんだよな
rなんだから\1個でいい筈なのに
760デフォルトの名無しさん (ワッチョイ 5e01-Twnj)
2024/08/29(木) 18:16:38.86ID:vHnGlZfZ0 Pythonのインタープリタが要求するバックスラッシュのエスケープと
正規表現が要求するバックスラッシュのエスケープと
二重にエスケープが必要だから
re.search(r'a(.+)\n', s)は改行コードの`\n`にマッチ
re.search(r’a(.+)\\n’, s)はバックスラッシュ+nという文字列にマッチ
正規表現エンジンに`\n`は改行コードじゃないよと伝えるのに
バックスラッシュをエスケープする必要がある
正規表現が要求するバックスラッシュのエスケープと
二重にエスケープが必要だから
re.search(r'a(.+)\n', s)は改行コードの`\n`にマッチ
re.search(r’a(.+)\\n’, s)はバックスラッシュ+nという文字列にマッチ
正規表現エンジンに`\n`は改行コードじゃないよと伝えるのに
バックスラッシュをエスケープする必要がある
761デフォルトの名無しさん (ワッチョイ 4d9f-vhpZ)
2024/08/29(木) 18:39:37.30ID:01fBpAqb0 s = 'abc\n' # abc+改行の4文字
じゃないの?ってことなんだけど
じゃないの?ってことなんだけど
762デフォルトの名無しさん (ワッチョイ 5d54-mV0m)
2024/08/29(木) 18:42:15.14ID:F2p43Zdw0 rで書いてるなら、文字列中に\nを改行として書くことは諦めろとしか
rとはすべてがエスケープされてるモードなんだからエスケープ要らない約束の筈
rとはすべてがエスケープされてるモードなんだからエスケープ要らない約束の筈
763デフォルトの名無しさん (ワッチョイ 5e01-Twnj)
2024/08/29(木) 21:44:40.32ID:vHnGlZfZ0 >>762
正規表現ではバックスラッシュが特別なエスケープ文字として扱われるというのは理解してる?
それを理解してれば検索対象文字列に存在するバックスラッシュそのものにマッチさせるには
正規表現としてエスケープしたバックスラッシュ(=バックスラッシュ2つ)が必要というのはわかるよね?
s = 'abc\\n’にはバックスラッシュそのものが含まれてて
それにマッチさせたいわけだから正規表現として`\\`が必要になる
この正規表現でのエスケープはPythonが文字列を解釈するときのエスケープとは別のもの
正規表現ではバックスラッシュが特別なエスケープ文字として扱われるというのは理解してる?
それを理解してれば検索対象文字列に存在するバックスラッシュそのものにマッチさせるには
正規表現としてエスケープしたバックスラッシュ(=バックスラッシュ2つ)が必要というのはわかるよね?
s = 'abc\\n’にはバックスラッシュそのものが含まれてて
それにマッチさせたいわけだから正規表現として`\\`が必要になる
この正規表現でのエスケープはPythonが文字列を解釈するときのエスケープとは別のもの
764デフォルトの名無しさん (ワッチョイ 5e01-Twnj)
2024/08/29(木) 21:50:09.32ID:vHnGlZfZ0 一応書いておくけどバックスラッシュの二重エスケープが必要なのはPythonに限らずどの言語でも同じ
raw stringや正規表現リテラルを使った場合は一重エスケープでよくなる
raw stringや正規表現リテラルを使った場合は一重エスケープでよくなる
765デフォルトの名無しさん (ワッチョイ 5d54-mV0m)
2024/08/29(木) 21:57:35.86ID:F2p43Zdw0 うちの店では昔っからこうなんだよと強弁されても
rawってのは生っていう意味で、未加工なんだよ
\nを改行の意味に変換したら加工しとるやろ
rawってのは生っていう意味で、未加工なんだよ
\nを改行の意味に変換したら加工しとるやろ
766デフォルトの名無しさん (ワッチョイ 5d54-mV0m)
2024/08/29(木) 22:55:26.96ID:F2p43Zdw0 文字列の表現としてはrawでも、それを渡した先でどう扱われるかは別問題
という話なんだろうな
正規表現ですらなくて、誰かの作った関数で\nと連続してたらそれは改行文字として扱います
というお約束ならそれに従うしかない
\nを改行に変換するかもしれない仕組みを2回通すので、
変換されない為には2重のエスケープが必要
3回通すならもっと必要
raw表現はエスケープを1回減らす効果しか無い
という話なんだろうな
正規表現ですらなくて、誰かの作った関数で\nと連続してたらそれは改行文字として扱います
というお約束ならそれに従うしかない
\nを改行に変換するかもしれない仕組みを2回通すので、
変換されない為には2重のエスケープが必要
3回通すならもっと必要
raw表現はエスケープを1回減らす効果しか無い
767デフォルトの名無しさん (ワッチョイ 22e7-zZP0)
2024/08/29(木) 23:45:40.59ID:N4XBWKhx0 >>763
その指摘は正規表現の話ではない
その指摘は正規表現の話ではない
768デフォルトの名無しさん (ワッチョイ 5d54-mV0m)
2024/08/29(木) 23:52:54.64ID:F2p43Zdw0 raw文字列というpythonの仕様と、
reというpython標準のライブラリがごっちゃになって、
rawと書いたら受け取った人もrawとして扱う筈、というのはただの思いこみで、
受け取った側は元がどう書かれてたかなんか知る由もなくただのstrとして受け取って、
そこから独自の字句解釈を開始する、というだけの話
reというpython標準のライブラリがごっちゃになって、
rawと書いたら受け取った人もrawとして扱う筈、というのはただの思いこみで、
受け取った側は元がどう書かれてたかなんか知る由もなくただのstrとして受け取って、
そこから独自の字句解釈を開始する、というだけの話
769デフォルトの名無しさん (ワッチョイ 5e01-Twnj)
2024/08/30(金) 00:50:19.40ID:S+WRgUIX0 >>765
>\nを改行の意味に変換したら加工しとるやろ
raw文字列は\nを改行文字としては扱ってないやろ
バックスラッシュとnという2文字を渡された正規表現エンジンがそれを改行文字として扱う
それが正規表現のルール
>\nを改行の意味に変換したら加工しとるやろ
raw文字列は\nを改行文字としては扱ってないやろ
バックスラッシュとnという2文字を渡された正規表現エンジンがそれを改行文字として扱う
それが正規表現のルール
770デフォルトの名無しさん (ワッチョイ 22e7-odry)
2024/08/30(金) 02:17:10.13ID:+R5e+PNr0 そもそもrawデータというのは文字として決めつけて処理するものではなく、バイナリーデータとして扱って処理するものです。
771デフォルトの名無しさん (ワッチョイ 6e2a-EI2W)
2024/08/30(金) 07:42:30.12ID:FeMupkVu0 お前等hexで話せよ。分かりにくい。
6162 635c 6e abc\n
6162 630a abc.
6162 635c 6e abc\n
6162 630a abc.
772デフォルトの名無しさん (アウアウエー Sa0a-PBPb)
2024/08/30(金) 09:24:30.71ID:742oYIECa import re
s = r'abc\\n'
print(re.search('a(.+)\\n', s).groups()[0]) # !
print(re.search('a(.+)\n', s).groups()[0]) # !!!
s = r'abc\\n'
print(re.search('a(.+)\\n', s).groups()[0]) # !
print(re.search('a(.+)\n', s).groups()[0]) # !!!
773デフォルトの名無しさん (アウアウエー Sa0a-PBPb)
2024/08/30(金) 09:26:08.10ID:742oYIECa import re
s = r'abc\n'
print(re.search('a(.+)\\n', s).groups()[0]) # !
print(re.search('a(.+)\n', s).groups()[0]) # !!!
s = r'abc\n'
print(re.search('a(.+)\\n', s).groups()[0]) # !
print(re.search('a(.+)\n', s).groups()[0]) # !!!
774デフォルトの名無しさん (アウアウエー Sa0a-PBPb)
2024/08/30(金) 09:27:35.22ID:742oYIECa import re
s = r'abc\\n'
print(re.search(r'a(.+)\\n', s).groups()[0]) # !
print(re.search(r'a(.+)\n', s).groups()[0]) # !!!
s = r'abc\\n'
print(re.search(r'a(.+)\\n', s).groups()[0]) # !
print(re.search(r'a(.+)\n', s).groups()[0]) # !!!
775デフォルトの名無しさん (アウアウエー Sa0a-PBPb)
2024/08/30(金) 09:27:52.88ID:742oYIECa import re
s = r'abc\n'
print(re.search(r'a(.+)\\n', s).groups()[0]) # !
print(re.search(r'a(.+)\n', s).groups()[0]) # !!!
s = r'abc\n'
print(re.search(r'a(.+)\\n', s).groups()[0]) # !
print(re.search(r'a(.+)\n', s).groups()[0]) # !!!
776デフォルトの名無しさん (ワッチョイ 5d54-mV0m)
2024/08/31(土) 10:12:39.92ID:tZuU9Lep0 webページの取得をconcurrent.futuresで複数同時に回す
取得自体はseleniumで行う
毎回ログインするのを避ける為、ログイン済のdriverをmax_workers分用意する
そこまではいいとして、submitする時あるいはsubmit先で、
今どのdriverが使えるか判断しないといけない
自前でセマフォ作ってもいいけど、そんな管理もしてくれる何かがありそうな気がする
取得自体はseleniumで行う
毎回ログインするのを避ける為、ログイン済のdriverをmax_workers分用意する
そこまではいいとして、submitする時あるいはsubmit先で、
今どのdriverが使えるか判断しないといけない
自前でセマフォ作ってもいいけど、そんな管理もしてくれる何かがありそうな気がする
777デフォルトの名無しさん (ワッチョイ 82ad-aK75)
2024/08/31(土) 13:22:35.58ID:fwQH707u0 関数やクラスにインデックスの指す中身の値でなく“インデックス指定”を渡したいのですがうまく出来ません
こんな場合どういうような考え方があるのでしょう(タプルでインデックス数字を渡す?)
# [[0,0,0,0,0],[[0,0,0,0,0]]
alist = [[0]*5]*2
# 値ではなく箱の位置を意図してるが…
hako = alist[0][3]
def change(b):
b = 3
return
change(hako)
print(alist) # 全部0のまま
change(alist[0][4])
print(alist) # こちらも全部0
実際にはrpgゲームの様々のステートやフラグやそのセーブを管理するクラスに
alist[6][15](王さまと喋ったとか)を1にするといった仕事をさせたいと試行錯誤しています
喋る関数、戦う関数やクラスのとこから発生しだいリストを直で操作すればいいのだけど
State.change(インデックス, 1)みたく一元的にやりたいとクラスを作ってきています
目的で位置の固定されたフラグなのでメニューを開いているかState.menu(1)、State.kingtalked(1)などとしその先のクラスの関数で位置を決め撃ちするのが良いのかななどと困って考えています
こんな場合どういうような考え方があるのでしょう(タプルでインデックス数字を渡す?)
# [[0,0,0,0,0],[[0,0,0,0,0]]
alist = [[0]*5]*2
# 値ではなく箱の位置を意図してるが…
hako = alist[0][3]
def change(b):
b = 3
return
change(hako)
print(alist) # 全部0のまま
change(alist[0][4])
print(alist) # こちらも全部0
実際にはrpgゲームの様々のステートやフラグやそのセーブを管理するクラスに
alist[6][15](王さまと喋ったとか)を1にするといった仕事をさせたいと試行錯誤しています
喋る関数、戦う関数やクラスのとこから発生しだいリストを直で操作すればいいのだけど
State.change(インデックス, 1)みたく一元的にやりたいとクラスを作ってきています
目的で位置の固定されたフラグなのでメニューを開いているかState.menu(1)、State.kingtalked(1)などとしその先のクラスの関数で位置を決め撃ちするのが良いのかななどと困って考えています
778デフォルトの名無しさん (ワッチョイ 82ad-aK75)
2024/08/31(土) 13:25:10.84ID:fwQH707u0 しまった質問スレの存在を忘れてましたごめんなさい移動します>>3
779デフォルトの名無しさん (ワッチョイ 7901-vp4l)
2024/08/31(土) 14:06:22.04ID:o+gAgvj50780デフォルトの名無しさん (ワッチョイ 82ad-aK75)
2024/08/31(土) 14:44:18.13ID:fwQH707u0 >>779
最下段の文は無視してもらって
プログラム部分で
[[0,0,0,3,0][0,0,0,0,0]]
[[0,0,0,3,3][0,0,0,0,0]]なprint結果となる関数への渡し方や手法がしりたい
「書き換えたい多次元リストのインデックス」を関数などに渡しそこで処理する方法
書いてるうちに設計からおかしい気がしてきた
せっかくクラスを勉強してるので無理やりそこでまとめて(意味なく)処理したがってる
なにかあれば聞きたいけど質問は取り下げます
最下段の文は無視してもらって
プログラム部分で
[[0,0,0,3,0][0,0,0,0,0]]
[[0,0,0,3,3][0,0,0,0,0]]なprint結果となる関数への渡し方や手法がしりたい
「書き換えたい多次元リストのインデックス」を関数などに渡しそこで処理する方法
書いてるうちに設計からおかしい気がしてきた
せっかくクラスを勉強してるので無理やりそこでまとめて(意味なく)処理したがってる
なにかあれば聞きたいけど質問は取り下げます
781デフォルトの名無しさん (ワッチョイ 6ed6-VAad)
2024/08/31(土) 15:51:47.51ID:Ogc9sW700 無理なのでインデックスを渡すしかない
782デフォルトの名無しさん (ワッチョイ 5d54-mV0m)
2024/08/31(土) 16:07:04.72ID:tZuU9Lep0 インデックスといえば
l = [1, 2, 3]
l.index(2)
で1を得るけど、これの計算コストってどんなもんなんだろ
リストだけど固定なのが判ってたら、一旦逆引きのテーブルを作った方が有利なのか、
気にするほどでもないのか
l = [1, 2, 3]
l.index(2)
で1を得るけど、これの計算コストってどんなもんなんだろ
リストだけど固定なのが判ってたら、一旦逆引きのテーブルを作った方が有利なのか、
気にするほどでもないのか
783デフォルトの名無しさん (ワッチョイ 6ed6-VAad)
2024/08/31(土) 16:18:16.80ID:Ogc9sW700 https://github.com/python/cpython/blob/5332d989af45378e6ae99aeda72bfa82042b8659/Objects/listobject.c#L3181
ループするからO(n)かかる
それが問題になるならdictに突っ込むとかして高速化すればいい
ループするからO(n)かかる
それが問題になるならdictに突っ込むとかして高速化すればいい
784デフォルトの名無しさん (ワッチョイ 5d54-mV0m)
2024/08/31(土) 16:31:39.30ID:tZuU9Lep0 思ったより何も工夫してなかった
困ったら高速化しよう
まあ、困らないんだけど
困ったら高速化しよう
まあ、困らないんだけど
785デフォルトの名無しさん (ワッチョイ 8601-3oMX)
2024/08/31(土) 17:34:03.31ID:mruaKbs00 >>777
2次元で固定ならタプルで渡す
def modify(alist, indices, new_value):
alist[indices[0]][indices[1]] = new_value
任意の深さに対応したいならループさせる
(エラーになる状況が増えるので用途に合わせて対応が必要)
def modify(alist, indices, new_value):
element = alist
for i in indices[:-1]:
element = element[i]
element[indices[-1]] = new_value
あとalist = [[0]*5]*2 の初期化方法は要注意
alist[0][3] = 3とすると[[0, 0, 0, 3, 0], [0, 0, 0, 3, 0]]になるから
2次元で固定ならタプルで渡す
def modify(alist, indices, new_value):
alist[indices[0]][indices[1]] = new_value
任意の深さに対応したいならループさせる
(エラーになる状況が増えるので用途に合わせて対応が必要)
def modify(alist, indices, new_value):
element = alist
for i in indices[:-1]:
element = element[i]
element[indices[-1]] = new_value
あとalist = [[0]*5]*2 の初期化方法は要注意
alist[0][3] = 3とすると[[0, 0, 0, 3, 0], [0, 0, 0, 3, 0]]になるから
786デフォルトの名無しさん (ワッチョイ 82ad-aK75)
2024/08/31(土) 18:14:58.61ID:fwQH707u0 >>785
ありがとう!固定要素数じゃない場合の例が思案に明け暮れていたとこで、助かります!
丁度さっき、そうだ受け取ったstrに応じる形で"関数側のcase match文"で
決められた格納場所に同じく受け取ったvalueを書き込もう、としていました
コマンドウィンドウを開いているか否か0or1みたいなものを
StatsクラスのStats.write("commandopen", 1)、これの第一引数をcaseでふるいにかけ書き込むべきインデックスに辿り着く感じ…(>_<)
ありがとう!固定要素数じゃない場合の例が思案に明け暮れていたとこで、助かります!
丁度さっき、そうだ受け取ったstrに応じる形で"関数側のcase match文"で
決められた格納場所に同じく受け取ったvalueを書き込もう、としていました
コマンドウィンドウを開いているか否か0or1みたいなものを
StatsクラスのStats.write("commandopen", 1)、これの第一引数をcaseでふるいにかけ書き込むべきインデックスに辿り着く感じ…(>_<)
787デフォルトの名無しさん (ワッチョイ 8601-3oMX)
2024/08/31(土) 18:51:32.93ID:mruaKbs00 {“commandopen”: 1}がkey/valueなら
素直にdictionaryで状態管理したほうがいいんじゃないかな
case文やインデックス変換なくせるよ
素直にdictionaryで状態管理したほうがいいんじゃないかな
case文やインデックス変換なくせるよ
788デフォルトの名無しさん (ワッチョイ 82ad-aK75)
2024/08/31(土) 18:59:52.21ID:fwQH707u0 たしかに…辞書やjsonといった物の扱いに恐怖心があって無意識に避けてたかも
789デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/01(日) 08:53:52.90ID:5+RJ54+E0 前回と今回のid一覧があって、
今回追加分のidに該当するものがなければ終了
みたいな処理をどう書こうか考えてて、
結局setの演算にしたら1行になった
setむっさ使える
今回追加分のidに該当するものがなければ終了
みたいな処理をどう書こうか考えてて、
結局setの演算にしたら1行になった
setむっさ使える
790デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/02(月) 14:46:18.35ID:V2ztMrfU0 テキストをフィルターしていて、
特定の行があったら、その前後の行も削除して出力したい
後ろも削除はiterでnext()すれば飛ばせるけど、
すでに出力しちゃったものを無かったことにするのが難しい
一旦全部バッファに溜めておくしか無いのかな
特定の行があったら、その前後の行も削除して出力したい
後ろも削除はiterでnext()すれば飛ばせるけど、
すでに出力しちゃったものを無かったことにするのが難しい
一旦全部バッファに溜めておくしか無いのかな
791デフォルトの名無しさん (ワッチョイ 479f-7hP0)
2024/09/02(月) 16:47:53.26ID:ciLmvDW/0 全部じゃなく
1行バッファして次が来たら出力する部品でいいんでは?
もちろんバッファ削除とフラッシュの機能もつける
1行バッファして次が来たら出力する部品でいいんでは?
もちろんバッファ削除とフラッシュの機能もつける
792デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/02(月) 17:05:31.51ID:V2ztMrfU0 削除する必要が最大1行ならいいけど、実際には2行のケースもある
793デフォルトの名無しさん (ワッチョイ 479f-7hP0)
2024/09/02(月) 17:13:39.22ID:ciLmvDW/0 理解力というか応用力低すぎて草
794デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/02(月) 17:30:55.08ID:V2ztMrfU0 んー、そんな小手先で回避してたらすぐ行き詰まるよ
795デフォルトの名無しさん (ワッチョイ 5f6e-a21C)
2024/09/02(月) 17:52:44.67ID:DywOJmSg0 1回目は削除インデックスを確保するだけで2回目のフィルタリングでそのインデックスを削除する
何行削除でも可能
何行削除でも可能
796デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/02(月) 18:08:44.35ID:V2ztMrfU0 なるほど2パスにするのか
入力はファイルなのでそれで十分だし高速だしメモリも食わない
ストリームにまで対応可能な方法は多分ない
入力はファイルなのでそれで十分だし高速だしメモリも食わない
ストリームにまで対応可能な方法は多分ない
797デフォルトの名無しさん (ワッチョイ 072a-DKuy)
2024/09/02(月) 18:18:02.18ID:cZu9PahF0 >>790
俺にはこの話題の sed コマンドは全く理解できないが、解るなら python に移植してみてはどうだ。
https://mevius.5ch.net/test/read.cgi/unix/1085730992/593-
俺にはこの話題の sed コマンドは全く理解できないが、解るなら python に移植してみてはどうだ。
https://mevius.5ch.net/test/read.cgi/unix/1085730992/593-
798デフォルトの名無しさん (ワッチョイ 5f86-NFJX)
2024/09/02(月) 18:18:35.06ID:0P3ClJWr0 dpでやるやつじゃね?
799デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/02(月) 18:24:28.25ID:V2ztMrfU0 sed的にやろうとすると、ファイル全体を読み込んで検索して、というやり方と同じなので、
メモリはファイルサイズだけ食うことになる
sedはそれをストリームに対してやるのでメモリ食わない
メモリ節約するなら最低限だけ読みながら、という処理になるけど、
最低限が何行なのかは条件次第なので条件の解析までやらないといけなくて、
ツブシの効かないコードを頑張って書くことになる
メモリはファイルサイズだけ食うことになる
sedはそれをストリームに対してやるのでメモリ食わない
メモリ節約するなら最低限だけ読みながら、という処理になるけど、
最低限が何行なのかは条件次第なので条件の解析までやらないといけなくて、
ツブシの効かないコードを頑張って書くことになる
800デフォルトの名無しさん (ワッチョイ 479f-7hP0)
2024/09/02(月) 18:39:20.59ID:ciLmvDW/0 主に最適化の理由で出力のバッファリングはPython内外で透過的に行われてるし
そこに出力遅延するio.Writer追加するだけの話
バッファはいくらでも動的に確保したらいい
小手先らしいけどそれで必要十分
そこに出力遅延するio.Writer追加するだけの話
バッファはいくらでも動的に確保したらいい
小手先らしいけどそれで必要十分
801デフォルトの名無しさん (ワッチョイ df31-XDF5)
2024/09/02(月) 18:49:11.43ID:R3lh7LPd0 本人がバッファリングが必要な範囲を抽象化して捉えられてないから1行とか2行とかって説明になるんだろ
最近出現頻度の高い末尾54さんはいつもこのパターン
最近出現頻度の高い末尾54さんはいつもこのパターン
802デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/02(月) 18:53:10.49ID:V2ztMrfU0 前後の行としか書いてないけどな
前後n行だよ
バッファリングするのはいいとして、フラッシュのタイミングが不明だとどうしようもない
前後n行に絶対引っかからない行が定義できない
前後n行だよ
バッファリングするのはいいとして、フラッシュのタイミングが不明だとどうしようもない
前後n行に絶対引っかからない行が定義できない
803デフォルトの名無しさん (ワッチョイ 5f6e-a21C)
2024/09/02(月) 18:56:45.68ID:DywOJmSg0 前の全部の行が削除対象になり得ることを考えるとストリームにやるなら全部バッファに溜めるしかなさそうだ
804デフォルトの名無しさん (ワッチョイ ff7c-rxv+)
2024/09/03(火) 15:35:20.10ID:GbfXXZxt0805デフォルトの名無しさん (ワッチョイ 5f4d-XDF5)
2024/09/03(火) 21:07:40.33ID:l2RoLSBv0 N行が全行−1行になることもあるから1パスだとメモリ食ってヤダって話みたいよ
そもそもの問題認識が間違ってるよね
そもそもの問題認識が間違ってるよね
806デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/03(火) 21:28:25.04ID:b8qS9knc0 今やメモリなんて膨大にあるから、1億行でも平気
そんなこと気にしないのが簡単でかつ現実的
一応気にして2パスにするのも、比較的簡単
中途半端に気にして対応すると手間がかかる上に不完全になる
そんなこと気にしないのが簡単でかつ現実的
一応気にして2パスにするのも、比較的簡単
中途半端に気にして対応すると手間がかかる上に不完全になる
807デフォルトの名無しさん (ワッチョイ 5f5c-1cCN)
2024/09/03(火) 22:33:39.88ID:2uJG6i7Z0 じゃあ何を悩んでたの?
よく分かんねーけど能書きの前に常識として謝辞のひとことくらい述べたらどうかね
よく分かんねーけど能書きの前に常識として謝辞のひとことくらい述べたらどうかね
808デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/03(火) 22:36:18.67ID:b8qS9knc0 なんか知らんけど、勉強する気のない奴が紛れ込んでるんだよな
809デフォルトの名無しさん (ワッチョイ e768-3eZc)
2024/09/04(水) 10:07:28.75ID:1egc59UO0 slenium使ってWebページの巡回してますが、CSSセレクターやxpathが日によって変動する場合の対処法をご教授願えれば幸いに存じ上げマッスルマッスル。
810デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/04(水) 13:21:36.89ID:8f/9E+Y70 フルで指定しなくても部分でもいけるので、変わらない部分を使う
811デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/04(水) 16:46:15.23ID:8f/9E+Y70 またストリームっぽい話
デリミタ行があって、それで区切った単位で処理する
デリミタを見つけたら処理、みたいにすると、デリミタ無しで終了した場合に最後が抜ける
元データの方で最後にもデリミタを入れる
ループを抜けた後に同じ処理を追加する
デリミタ or EOF みたいな判定にする
等の対応があって、EOFがスマートそう
でもEOFの検出が大変
ファイルを1行ずつ読んでても次を読んでみないと判らないし、
iterでも例外を起こすとか、リストが対象だったらコピーしといてpopしていって空か見るとか
最後まで行ったら自動で終わる処理はとても書きやすいのに、
最後の処理の最中に最後だと判定するのが困難
デリミタ行があって、それで区切った単位で処理する
デリミタを見つけたら処理、みたいにすると、デリミタ無しで終了した場合に最後が抜ける
元データの方で最後にもデリミタを入れる
ループを抜けた後に同じ処理を追加する
デリミタ or EOF みたいな判定にする
等の対応があって、EOFがスマートそう
でもEOFの検出が大変
ファイルを1行ずつ読んでても次を読んでみないと判らないし、
iterでも例外を起こすとか、リストが対象だったらコピーしといてpopしていって空か見るとか
最後まで行ったら自動で終わる処理はとても書きやすいのに、
最後の処理の最中に最後だと判定するのが困難
812デフォルトの名無しさん (ワッチョイ 5f4d-JZrR)
2024/09/04(水) 16:53:37.40ID:mtP1OC380 日本語を見ればプログラミング適性がないのがよくわかる
813デフォルトの名無しさん (ワッチョイ 479f-7hP0)
2024/09/04(水) 17:15:00.32ID:u5L50CbY0 デリミタ行以外で終端になったら
追加でデリミタ行を返すイテレータを書くだけ
追加でデリミタ行を返すイテレータを書くだけ
814デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/04(水) 17:24:08.15ID:8f/9E+Y70 データ数nでデリミタ数n-1、という気持ち悪い状態が自然によくあるんだよな
joinで結合して、splitで分解するのと同様に、
デリミタで分解する処理を最初に入れるのが多分正解
最後のデリミタがあってもなくてもいいようにしないといけない
joinで結合して、splitで分解するのと同様に、
デリミタで分解する処理を最初に入れるのが多分正解
最後のデリミタがあってもなくてもいいようにしないといけない
815デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/04(水) 17:28:38.80ID:8f/9E+Y70 分解する処理が全く同じ問題にぶつかるんですが
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国・ロシア両軍の爆撃機が東京方面へ向かう「異例のルート」を共同飛行…核も搭載可能、連携して威嚇か ★8 [ぐれ★]
- 【速報】「女芸人No.1決定戦 THE W」9代目女王にニッチェ! 7年ぶり3度目で悲願の優勝 [牛丼★]
- 「おこめ券は米以外の食品も買える。効果的な活用を」 地元で農水相 [山形県] [少考さん★]
- 今年の流行語大賞 『働いて働いて働いてまいります』が受賞で不快感… 過労自殺の遺族らが会見「家族にむち打つような行為だ」 [冬月記者★]
- 【芸能】『女芸人No.1決定戦THE W』 粗品が最後にバッサリ「優勝賞金1000万円にしてはレベル低い大会」 [冬月記者★]
- 東京の自販機そばに金塊4200万円分、何者かに持ち去られる…札幌の50代が8000万円振り込んだ後に上京して被害 [どどん★]
- 【実況】博衣こよりのえちえちダンガンロンパ4🧪
- 【実況】博衣こよりのえちえちダンガンロンパ5🧪
- 日本人、インバウンド減っても貧乏すぎて国内旅行すら行けないと判明🥺 [399259198]
- 【貧鈍】日本人、ついにゴミ箱設置で自治体、住民、事業者、域外来訪者らで揉める!街がポイ捨てゴミで溢れる [219241683]
- プログラミングって具体的に何?
- 韓国人って美男美女多くね?
