【まず1嫁】くだすれPython(超初心者用) その55

■ このスレッドは過去ログ倉庫に格納されています
2021/10/01(金) 15:46:47.17ID:9qOHXj6D
当スレに★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 ###
2021/11/05(金) 18:37:13.50ID:HmBcWh4U
>>477
グラス片手にデータベース設計
2021/11/05(金) 20:31:14.39ID:d5XheO1i
この分野は進歩が早いので
すぐに本が陳腐になる
公式サイトが読めるようになることが必要
2021/11/05(金) 22:12:47.65ID:u2OkzB/r
バックエンドのwebプログラマーになるのにhtml/cssの知識は必要ですか?
bootstrapなど面倒くさいです
それを覚える暇があればdbとかフレームワークとか覚えたいんですが駄目ですか?
2021/11/05(金) 22:20:35.18ID:m7NNpy+h
>>480
・フロントエンド
・AWSまたはGCP
・特定のDBMSに関する深い知識
最低どれか一つは欲しいかな
バックエンドは多かれ少なかれオールラウンダーとして動くことが期待されるんで、裏側のコーディングだけできますというのは厳しい
2021/11/05(金) 22:39:14.92ID:6Sctu/0G
>>481
なるほど
dbやawsの求められる知識って例えばどれぐらい?
2021/11/05(金) 23:35:32.62ID:s+xNbh4M
現場が分業体制でアサインされた分野以外まったく学ぶ気もないなら
都度専門家に聞けば仕事はなりたつだろうし、
そんなの嫌ならDBはRDBMSの説明書あれば困らないくらい
AWSはSAPの試験内容が理解できるくらい?
2021/11/05(金) 23:52:39.03ID:/IlkeVzp
プログラミング超初心者の質問
https://mevius.5ch.net/test/read.cgi/tech/1616755673/430-431

ここに書いた

YouTube で有名な、雑食系エンジニア・KENTA の、
Ruby on Rails 初心者向けサロンの内容

全くの素人は、Cloud9, Heroku, CircleCI, Bootstrap だけで始める

仕事レベルでは、AWS Fargate, Terraform, React, Vue.js, TypeScript もやる。
だから、AWSのくろかわこうへいのサロンにも、入る必要がある

初心者向け、くろかわのお勧め本が、
Amazon Web Services パターン別構築・運用ガイド 改訂第2版 (Informatics&IDEA)、
NRIネットコム株式会社、2018

DB はミックの本。
最難関は、国家資格・データベーススペシャリスト
485484
垢版 |
2021/11/06(土) 00:15:30.00ID:x0h3LLto
KENTA, 2021/11/04

「強いエンジニア」の定義とは?
https://www.youtube.com/watch?v=vjDOgkrkorA

AWS だけではダメ。GCP もやる。
Ruby だけではダメ。Go もやる

(PHP, Java のような)保守の仕事ばかりをやらない事。
必ず、(Ruby on Rails を使っているような)モダンな企業で、新規案件をやるべき
2021/11/06(土) 00:43:22.10ID:HcnEcsru
>>478
glassなのかgrassなのかでちょっと変わってくるなw
487デフォルトの名無しさん
垢版 |
2021/11/06(土) 02:27:25.73ID:2JPnQnVe
5chってWEB屋さん多いよね
2021/11/06(土) 11:10:52.20ID:Y8IidGqg
webプログラミングは日本のIT系の技術業務の大半を占めるからな
後はゲームプログラミング

アプリ開発とか機器の制御組み込みなんて需要が殆どない

ところでPythonってやろうと思えばそれらが一応全部出来るんだな
PyGameとかtkinterとか仕事は無いけど
489デフォルトの名無しさん
垢版 |
2021/11/06(土) 11:13:57.22ID:b1XdA94q
KENYAは超初心者
まで読んだ
2021/11/06(土) 23:10:49.67ID:6scjaAhI
内包表記のif句で内包表記を使った場合、シーケンスからひとつ取り出すたびに内包表記内の内包表記が実行される?それとも記憶されてて最初だけ?

_ = [i for i in hoge if i in [x for x in fuga]]
2021/11/07(日) 00:04:10.88ID:1jV5IOeL
めっちゃ時間かかるやつ
2021/11/07(日) 00:12:43.59ID:1gRJ5IYK
range(10000000)とかやって試そう
2021/11/07(日) 00:28:09.38ID:Gc9uqLet
printや副作用ある操作したらわかるやろ
2021/11/07(日) 00:31:20.69ID:FiWKnTjM
>>490
そこまで書いたなら自分で試せると思うんだが
記憶されずに毎回内側の内包表記のリストを生成する
2021/11/07(日) 11:12:17.72ID:8634ItVT
xlwingsの良い参考になるサイトや使用例を知りたいです
何かありませんか?
2021/11/07(日) 13:56:48.14ID:KSL7hl+d
ありません
2021/11/07(日) 15:07:34.53ID:dPEzTB6K
c#とJavaしかやったことないけど初めてPython始める時に気をつけるべきことある?
セミコロンないってのと()がインデントになるってことくらいしか知らない
2021/11/07(日) 15:24:39.37ID:7u/wN+Bg
>>497
C#とJavaができるならぶっちゃけ楽勝だけど、それらに比べるとPythonはビチグソ遅いという点には注意が必要かな
まとまった量のデータを扱うときにはなるべくpandasやnumpyのような強力なライブラリを使用し、
処理の粒度を大きくしてPythonにできるだけ処理を戻さないことが重要になる
2021/11/07(日) 15:35:30.62ID:eUZdhF5f
変数のスコープくらいかな
2021/11/07(日) 16:15:42.23ID:f4OJt/oF
>>497
値渡しと参照渡しの違いとそれぞれのタイミング
2021/11/07(日) 16:36:23.47ID:sYF1hNAJ
Cは関数だけでなく if や for の中にもスコープがあるらしいね
Pythonは関数・クラス・クラス内関数にしかないから
腰を抜かすほど驚いた
2021/11/07(日) 17:05:25.39ID:zFG7xLKK
>>501
if や for にはスコープないよ
{ } で囲まれたブロックにスコープがあるだけ
2021/11/07(日) 17:47:04.33ID:f4OJt/oF
ひたすら中かっこ連打して同じ名前の変数を別の意味で使い続けることができちまうんだ
画期的だろ?w
504デフォルトの名無しさん
垢版 |
2021/11/07(日) 19:38:56.22ID:EGKzblaZ
np.linalg.inv(np.array([[1,2],[3,4]])) @ np.array([[1,2],[3,4]])
はほぼ単位行列
1 0
0 1
になるのですが
np.linalg.inv(np.array([[1,2,3],[4,5,6],[7,8,9]])) @ np.array([[1,2,3],[4,5,6],[7,8,9]])
の結果が単位行列にならないのは何故?
2021/11/07(日) 19:47:09.06ID:ongGZWlK
>>504
正則じゃないから
506デフォルトの名無しさん
垢版 |
2021/11/07(日) 19:54:49.18ID:EGKzblaZ
解決しましたω
ありがとうωω
こんな例もあるんですねωωω
2021/11/07(日) 20:00:28.72ID:RgCygfEf
まさのりって何?
508デフォルトの名無しさん
垢版 |
2021/11/07(日) 20:11:28.00ID:e/2wOCv0
2021/11/07(日) 20:40:31.65ID:JmNYBczp
あとデフォルト引数の評価タイミングが関数の定義時
2021/11/07(日) 21:11:09.29ID:t/1xwUA+
>>509
それは普通じゃない?
2021/11/07(日) 21:12:42.76ID:VzSbYdr/
それだけ読むと特異性かんじないけど
結果ミュータブルなインスタンスでも使い回されるから
知らないとハマるかも
512デフォルトの名無しさん
垢版 |
2021/11/07(日) 21:28:16.74ID:zDn3yvq/
>>490
それだと内側が普通のlistになってるでしょ。
generatorにしないとパイプにはならないんじゃないかな?
2021/11/07(日) 22:09:20.33ID:t/1xwUA+
>>511
他の言語で確認したら普通じゃなかったわ
2021/11/08(月) 00:18:17.83ID:AFFY8UkB
>>513
いやC++とかC#みたいな静的言語だとデフォルト引数には定数など静的に決まっている値しか使えないのが普通なんで、それに似せてるんでしょ
別にそんなに普通じゃなくもない
2021/11/08(月) 02:33:37.44ID:J6d/ajGt
基本的に参照だから
関数呼ばれるときに再評価されるような錯覚しがち
516デフォルトの名無しさん
垢版 |
2021/11/08(月) 02:34:48.50ID:J6d/ajGt
>それに似せてる

いや
上から順に実行してるだけだからにせるも何も
2021/11/08(月) 02:52:44.14ID:pXoKYUcM
MDNのJavaScriptのデフォルト引数の説明で
Pythonが名指しで引き合いに出されるくらいには特異
2021/11/08(月) 03:38:41.76ID:jye9PFXO
>>509
うへぇ、これ知ってなきゃハマるやつだ…覚えとこ
2021/11/08(月) 08:16:14.51ID:mmSscFof
>>509
これないと関数を量産するときに困るんだよな
助けられてる
2021/11/08(月) 08:41:01.05ID:qDbA6fow
>>519
ふつうは別々に定義した関数には影響しないと思うんだが。どういう使い方?
2021/11/08(月) 09:15:44.50ID:QzkUvy+x
>>504-506
警告出れば良いのにな

>>520
デフォルト引数を =[] にしたときに問題が出るとかなんとかだったかな
522デフォルトの名無しさん
垢版 |
2021/11/08(月) 11:04:28.92ID:3dYPFnlP
"重要な警告: デフォルト値は 1 度だけしか評価されません。デフォルト値がリストや辞書のような変更可能なオブジェクトの時にはその影響がでます。例えば以下の関数は、後に続く関数呼び出しで関数に渡されている引数を累積します:"
https://docs.python.org/ja/3/tutorial/controlflow.html#default-argument-values
ここ見れ

設定を読み込む関数とかで、 if config == None: なんとか みたいな感じでよく使われてる
523デフォルトの名無しさん
垢版 |
2021/11/08(月) 11:10:57.60ID:3dYPFnlP
一応この話題もこのスレで見た記憶あるんだけど、はまる人が少ないからか、出てきたときは割と新鮮な感じで受け入れられるよね
2021/11/08(月) 11:28:47.99ID:pXoKYUcM
チュートリアルで重要な警告をしなければいけないことが「普通」ねえ…
525デフォルトの名無しさん
垢版 |
2021/11/08(月) 11:29:31.49ID:3dYPFnlP
あとあれ、デフォルト引数にlistじゃなくてtuple使う理由の一つもこれ
2021/11/08(月) 12:21:09.03ID:kxrCfTp4
そもそもデフォルト値とかいう一般的にconst期待するようなものに動的リストを指定する時点で
殆んどの現場でおいバカやめろってなるだろ
似たようなことするならデコレータ使ったりとかほかにやり方はいくつもあるはずだし
2021/11/08(月) 13:16:32.13ID:pTXzqRC7
へえ…
2021/11/08(月) 13:56:07.01ID:IUmN4sEn
>>520
気になったのはこの仕様で助かるって方。
529デフォルトの名無しさん
垢版 |
2021/11/08(月) 18:18:26.84ID:3dYPFnlP
>関数を量産
この言葉の方が気になるわ
530デフォルトの名無しさん
垢版 |
2021/11/08(月) 18:23:35.95ID:GDZdggMg
generator
2021/11/08(月) 19:53:38.72ID:rM583hbx
>>519 じゃないけど、これのことかな
https://docs.python.org/ja/3/faq/programming.html#why-do-lambdas-defined-in-a-loop-with-different-values-all-return-the-same-result
2021/11/09(火) 06:25:58.20ID:AjdA0gQv
恐いなあ
デフォルト引数は極力使わないようにしとこう
(幸い使ったことはないが)
自分が職場に残したコードが後々悲劇の元にらないように
2021/11/09(火) 06:58:51.77ID:UCZ76//B
>>498
>>500
情報ありがとう
いろんなアルゴリズム勉強してて次は数千万くらいループするようなことをPythonでやろうと思ってたけど厳しそう
2021/11/09(火) 12:06:27.97ID:AYw2Y4/N
__call__便利だなと思って使おうと思うのですが特に罠とかないですよね
2021/11/09(火) 12:58:39.67ID:68YeN4Dm
call -151
536デフォルトの名無しさん
垢版 |
2021/11/09(火) 17:51:14.43ID:gY1b2lRY
整数の1か2か3か4がランダムに入ってる可変長配列がある
すべての要素が奇数か偶数かを求める

算数できないマンなんだけど、これって各要素%2==0するしかない?
算数的に一発で判定できる?
537デフォルトの名無しさん
垢版 |
2021/11/09(火) 17:52:44.04ID:gY1b2lRY
可変長配列て意味不明ね
各要素が1から4のどれかの、長さランダムな配列の全奇偶判定がしたい
2021/11/09(火) 18:01:10.06ID:O2YAvgsT
一発なんてのはないんでない? 知らんけど
list(filter(lambda x: x % 2 == 0, l))
2021/11/09(火) 18:08:32.89ID:y4eH/Tjw
&1
2021/11/09(火) 18:09:48.35ID:WraEKl97
next((x for x in l if x % 2 == 0), None) is not None
2021/11/09(火) 18:22:49.04ID:h26zcWAQ
s = sum(i & 1 for i in L)
even = s == 0
odd = s == len(L)
2021/11/09(火) 18:37:52.32ID:8kpY2GOq
全部掛けて奇数なら奇数のみ
2021/11/09(火) 18:42:49.20ID:LNU/VeL4
ランダムなら先頭から1つずつ見てearly returnしたほうが効率いいよ
実際O(n)になるのはnが十分小さいときだけだから
2021/11/09(火) 19:45:19.14ID:DzPX9Zv+
全部の要素のANDをとって1bit目が1なら全部奇数
全部の要素のORをとって1bit目が0なら全部偶数
速いかどうかは知らん
545デフォルトの名無しさん
垢版 |
2021/11/09(火) 19:48:55.73ID:6aoIkSDY
all(i % 2 == 0 for i in l)
アルゴリズム的な話なら、>>542でいいのかな?
どっちが速くなるかはわからんけど。
546デフォルトの名無しさん
垢版 |
2021/11/09(火) 20:08:07.20ID:UQ//qCST
>>536
各要素の従う確率分布が独立なら全て調べるしかない
2021/11/09(火) 21:27:08.92ID:ge8vpxBP
割り算って計算コスト高いみたいなはなしなかったっけ
だとしたら割り算一回で済む>>542が優勝か?
2021/11/09(火) 22:25:49.93ID:QGVM/tnv
愚直に掛けたらオーバーフローする可能性があるから>>544じゃね?
549デフォルトの名無しさん
垢版 |
2021/11/09(火) 22:33:14.00ID:eryNNSUL
まあ現実的には長さランダムならearly returnでしょうな
2021/11/09(火) 22:37:04.39ID:LNU/VeL4
CPythonのほうで最適化されてるからか%2と&1で速度的に有意な差は見られないけどな
それより1つでも条件はずれたら処理を打ち切らないと
2021/11/09(火) 22:57:55.14ID:/aNe03Si
こういうのジェネレータ書いてnext()が常套だけど
イテレータに対してfind firstする分かりやすい書き方がないのがな
552デフォルトの名無しさん
垢版 |
2021/11/09(火) 23:22:12.36ID:8kpY2GOq
for else
2021/11/10(水) 01:11:59.13ID:MDwGZUB1
Pythonで書くときはバリバリ日本語で書くべきという主義を広めないか?
2021/11/10(水) 04:04:29.53ID:YQwPYBK4
>>536
xs.all?(&:odd?) または xs.all?(&:even?)
2021/11/10(水) 06:52:37.08ID:Mmr3oxKF
SJISのテキストファイルで、全角半角混在の行の長さを
バイト数で知るにはどうすればよいか
len関数は全角文字を1と判定するので、この目的には使えないようだ
2021/11/10(水) 09:21:40.34ID:morNzhKw
数学だけ知っててプログラミング下手な人は
論理的に正しくても実行にかかる時間を考慮しない傾向にあるな
2021/11/10(水) 09:23:24.08ID:morNzhKw
>>555
SJISで半角カタカナ混在は想定してる?除外?
2021/11/10(水) 09:25:16.07ID:morNzhKw
そもそも問題の設定が可笑しいな
行の長さをバイト数でってことなら
バイト列で\nから\nまでのバイト数を数えれば良いんじゃね
2021/11/10(水) 09:25:49.53ID:l5Ahtbnb
>>555
str.encode()
560デフォルトの名無しさん
垢版 |
2021/11/10(水) 10:56:18.25ID:BOw4D0hZ
x = 0
y = 0
cmd = 0

var = x if cmd else y
var = 1
# x=0, y=1
というのがやりたい.値じゃなくて変数を自体を代入したいんだけど,できますか?

if cmd:
__x = 1
else:
__y = 1
2021/11/10(水) 11:00:38.81ID:pJeuK/iL
>>560
最終的な目的がわからんと、全く何がしたいのかわからんわ。
2021/11/10(水) 11:05:25.69ID:ABhSQgxq
cmdって名前の変数に数値が入ってるのはまだしも、それが条件判断に使われてるのはセンスが凄い
2021/11/10(水) 11:33:47.73ID:4NOC2kX2
pythonの三項演算子だけは許せない
見にくすぎる

ほかの言語と同じくこの形にしてほしい
hoge = condition ? true_value : false_value
2021/11/10(水) 11:34:23.49ID:enrtMuCa
>>556
計算量って考え方がCS独特だからな
計算機科学としてしっかり教えてるような大学か専門課程、またはトレーニングコースで学んでないと身に付きにくい

正解の根拠を数理的な証明じゃなく、出力としてのアサーションに求める時点で
つまり根本的なことろから変わってくるからな
2021/11/10(水) 11:40:16.83ID:ZiQaM7Uu
> 560
x = cmd
y = 1 - x
2021/11/10(水) 11:41:15.02ID:l5Ahtbnb
>>560
varに変数そのものへの参照を保持するのは無理じゃないかな
変数を参照するための文字列を格納しておいてvars()やlocals()だったり
getattr()やsetattr()を使えばできなくはない

どうしてもそれが必要な場面以外ではまずやらないけど
2021/11/10(水) 12:11:38.18ID:/xBD3bqR
xy = [0, 0]
var = cmd
xy[var] = 1
あるいは
xy = {'x': 0, 'y': 0}
var = 'x' if cmd else 'y'
xy[var] = 1
2021/11/10(水) 12:54:40.31ID:n5kix8Fi
再帰して、条件にあったらbreak
という処理をしているのですが
すべて回したけど条件に合わなかった
って場合はどうやればいいのですか

f=False
for i in range(5):
_if i==8:
__f=True
__break
_else:
__f=False
if f:
_print("○")
else:
_print("×")

例えばこの例だとfor抜けたあとにif i==8でも判別できます
しかし、for内外で2回、i==8を使った表現がなんか野暮というか・・
かといってそれを言い出せばわざわざ追加したf=Falseも、ってなりそうですが。
が、これ以上に他の方法なんてあるのでしょうか
2021/11/10(水) 13:20:24.40ID:pJeuK/iL
0-4で回して8でTrueって意味がわからんけど、
それだとelseは不要だし既に抜けた後に条件に合わなかった場合になってるだろ。
570デフォルトの名無しさん
垢版 |
2021/11/10(水) 13:22:02.64ID:BOw4D0hZ
>>566
あーやっぱ文字でattrかー
了解しました
2021/11/10(水) 13:36:42.37ID:n5kix8Fi
>>569
はい、例なのでそこに意味はありませんよ
例えばrange(5)のところをrange(10)とかに変えて検証しやすいようにしてるだけです
572デフォルトの名無しさん
垢版 |
2021/11/10(水) 13:37:10.46ID:FEUt3UaQ
>>568
for i in range(5):
  if i==8:
    print("○")
    break
else:
  print("×")
2021/11/10(水) 13:50:56.80ID:n5kix8Fi
>>572
forにelseなんて使えたんですね
本コードでもたぶん罠なくできました!ありがとうございます!!
2021/11/10(水) 15:17:50.26ID:l5Ahtbnb
ヘルパー関数作ってreturn Trueとreturn Falseしたほうがいいと思う
Effective Pythonにもforやwhileのelseブロックは使うなって書いてる
2021/11/10(水) 17:36:43.66
ヘルパー関数で分けて(処理の中身隠して)見やすくすれば
(ヘルパー関数内で)else句は使ってもいい
って意味ではなく、
そもそもelse句使わない方がいいってことかな
2021/11/10(水) 17:56:41.01ID:HNNUg8pO
oddnum = len((x for x in X if x in (1,3)))
allnum == len(X)
if oddnum == allnum > 0:
 print('allodd')
elif allnum > 0 == oddnum:
 print('alleven')
else:
 print('other')
577デフォルトの名無しさん
垢版 |
2021/11/10(水) 20:44:30.15ID:BOw4D0hZ
>>575
違う
英語圏的にはelseの意味がガバガバやんけ誤読するやろという趣旨
effective pythonの言い分はね
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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