X

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

レス数が1000を超えています。これ以上書き込みはできません。
2021/01/09(土) 05:22:25.24ID:IpHIsox4
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
派生言語はそれぞれ専スレがあるのでそっち池。
「Ruby」「某言語では」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。

このスレッドは「お勉強」スレのほうには書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を、勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますので、お礼は Python の布教と初心者の救済をお願いします。

★エラーを解決したい場合は、
  表示されてるエラー全文(勝手に省略やスクショうp等の横着クソ行為禁止)と、
  実行環境(Pythonのバージョン・OSとIDEの種類とバージョン)をシッカリ書くこと。

【【【複数の連続半角スペースはなかったことになる・タブがうまく入らない5chの仕様】】】に注意!
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

〇前スレ〇 くだすれPython(超初心者用) その51【まず1嫁】
https://mevius.5ch.net/test/read.cgi/tech/1602896738/

次スレは >>985 あたりが挑戦してくだしあ。(980過ぎて自動落ちは、無くなって久しい)
### END OF TEMPLATE ###
2021/03/12(金) 21:39:39.45ID:U+iRPjP4
>>918
えーと、何番目の要素なのかを指定したいならkosuu.iloc[0]とかkosuu.iat[0]で

>この後に4とか1を条件にしたいのですが
4とか1とかを条件にして何をしたいの?
個別に値を取得しなくてもSeriesやDataFrame全体に関数を適用すればいいケースだったりしない?
2021/03/13(土) 02:36:31.64ID:dVxhbFOW
>>914
さくっとサンプル作ったけど、そんなややこしい事しなくてもでも良いぞ
https://ideone.com/HPzh9Q

とりあえずデータフレームでの条件抽出の方法と
at、iat、loc、ilocの使い方を調べた方が良い
2021/03/13(土) 12:14:55.82ID:zsUlOpNh
>>920
がんがってるところあれなんだが
>>919への応答いかんによっては
役に立たない可能性がががが
2021/03/13(土) 16:49:49.59ID:VVi6+nr1
day name
23 orange
25 apple

のようなdfがあったときname列の0行目を取り出すにはどうすればいいのでしょう?
(列は名称、行は番号で取り出ししたいのです)

fruit = df.loc[0,'name']
だとエラーが出ます
2021/03/13(土) 16:55:46.85ID:JM8M9JoF
df[‘name’][0]
2021/03/13(土) 18:06:52.77ID:VVi6+nr1
>>923
ありがとうございます
でもなぜかエラーが出ます
2021/03/13(土) 18:10:21.60ID:VVi6+nr1
df.loc[0,'fruit']



df=df['fruit']
df.iloc[0]

って等価ですよね?
上だとエラーが出たり出なかったりして
下だとエラー出ません

なんでなんだろう・・・?
2021/03/13(土) 18:50:34.59ID:zsUlOpNh
>>925
上と下は違う
違うものだから
結果も違う
2021/03/13(土) 21:02:13.75ID:vHT18lcc
「でもなぜかエラーが出ます」

エラーが出てるのに、なぜかエラーの原因を調べようとしないんです

なんでなんだろう・・・?
2021/03/13(土) 21:20:14.43ID:4CH/cwMq
そりゃ自分の貴重な時間よりヒマそうな人物の無駄だろう時間を活用する方が大事だろ?
これは代弁だよ代弁
2021/03/13(土) 21:29:00.56ID:4CH/cwMq
エラーの原因を自力で調べられない、もしくは調べても分からないなら
エラーを再現できる最小限のコードを提出した上で原因を質問しろ
2021/03/13(土) 21:30:02.70ID:4CH/cwMq
ID被ったな
久しぶり
2021/03/13(土) 21:40:33.72ID:4CH/cwMq
本当かよ
もう一人の俺とかじゃないのか?
2021/03/13(土) 21:46:03.14ID:Gs819GmX
♪なんてったってID
私のID (Your ID)
IDがかぶったね〜
(さぁ みなさんご一緒にー)
yeah! yeah! yeah!
2021/03/13(土) 21:58:35.47ID:w/+LKebv
「ID被るなんてあり得ない!自作自演だ!」って言い張る奴いるよね。
IPv4足りなくて使い回してるのに。
2021/03/13(土) 22:07:13.12ID:UzHIdvoy
そんな必死にならんでもいいんじゃ>>928-933
2021/03/13(土) 22:48:19.33ID:SFW0yXgo
クソやろうの代わりにデバッグするとか世の中で一番腹立つ作業じゃん
2021/03/13(土) 22:48:23.65ID:qg8nW91/
IDが被ることなんてよくあるけど>>928の次のレスでいきなり被るなんてまず無いだろ

機内モードを押し忘れた対立煽りの馬鹿って線が濃厚だねぇ〜w
2021/03/13(土) 22:49:52.53ID:qg8nW91/
>>933は機内モード押した後に悔しくて書いちゃったかな?w

ID:4CH/cwMqが出てこなけりゃ俺の推理が当たってることになっちゃうねぇ〜w
2021/03/14(日) 00:36:31.97ID:BO4xF2Qh
>>931
枝状分岐宇端末点の自分だよ。
僕と契約して、ジアースのパイロットになってよ
2021/03/14(日) 17:45:37.15ID:GC71EGyC
0と1で構成された、2xNの配列で0と1の境目の位置を求めたいのですが、
for文でN列までループさせ、N-1とNを比較、0と1の境目になっていたら、
2行目も境目になっているかを同様に確認して境目を確定させるしかないでしょうか

0010111111
0000111111
     ↑3列目ではなく、5列目の位置を知りたい
2021/03/14(日) 17:52:30.82ID:eeLePgm1
うーん、何がしたいのかよく分からん。
物凄く簡単なことを複雑に表現している気もしないでもない。
2021/03/14(日) 18:07:15.51ID:UOoBKmpX
>>939
文字列なのか、正数の2進数表記のことなのか、何を言いたいのかわからん。
ビットのアンドを取ればいいとかいう話ではない?
2021/03/14(日) 18:07:42.69ID:NVyYwYtr
>>939
0010111111
0000011111
↑これだと該当なし?

0110110111
0000011111
↑これも該当なし?

0110111111
1100011111
↑これも該当なし?

0010111111
0100011111
↑これだと3列目?
2021/03/14(日) 18:36:11.15ID:eeLePgm1
>>939

文章をそのままコードに落とすとこんな感じになると思うけど…

N = 10
arr = [[0,0,1,0,1,1,1,1,1,1],[0,0,0,0,1,1,1,1,1,1]]

x = -1 # 見つからなかった場合
for i in range(N-1):
  if arr[0][i] != arr[0][i+1]:
    if arr[1][i] != arr[1][i+1]:
      x = i+2
      break

print(x)
2021/03/14(日) 19:05:19.92ID:8bm6cw7M
>>941
ゼロとイチの境界なら1bitシフトしてXORすればいいけど
2行分をどう扱いたいのか分からない。
2021/03/14(日) 19:24:51.81ID:0UiyZ0sn
hoge = [[a,100],[b,50],[a,200],[a,50],[b,3]]
みたいな感じの二次元のリストの各要素の一番目の要素で昇順にソートして
さらに一番目の要素が同じどうしは二番目の要素を見て降順に並べたいのですが
うまくできる方法をお教え願います

hoge = sorted(hoge, key=lambda x: (x[0],x[1]),reverse=True)

のように書いたり試してみましたが両方とも降順になってしまいます。
2021/03/14(日) 19:31:02.77ID:eeLePgm1
hoge = sorted(hoge, key=lambda x: (x[0], -x[1]))
じゃ、ダメ?
2021/03/14(日) 20:08:58.23ID:GC71EGyC
>>940,941,942さん
すみませんわかりづらく・・・

943さんのコードがまだ読み溶けていないのですが、
おそらくそれになっているかとおもっていて、01の並びは配列の意味で書いていました。
1行目と2行目の値が同じ列で初めて1になる列位置が知りたい意味でした。
[[0,0,1,0,1,1,1,1,1,1]、
[0,0,0,0,1,1,1,1,1,1]]
2021/03/14(日) 20:17:47.87ID:7GI/Bfny
p=[0,0,1,0,1,1,1,1,1,1]
q=[0,0,0,0,1,1,1,1,1,1]
for i, (x,y) in enumerate(zip(p,q)):
__if x==y==1:
____print(i)
____break

内包表記でpとqの和を取ってindexで検索したほうが速い気がする
2021/03/14(日) 20:27:29.09ID:0UiyZ0sn
>>946
できました。ありがとうございました!
950デフォルトの名無しさん
垢版 |
2021/03/14(日) 20:27:54.91ID:Y6CmRV5p
こんなモンが欲しいのかと思った
https://ideone.com/q2rCBm
2021/03/14(日) 21:00:32.45ID:NVyYwYtr
>>947
0から1に切り替わってる箇所は対象だけど
1から0に切り替わってる箇所は対象外ってことなのか

def foo(arr):
__for i, pair in enumerate(zip(arr[0], arr[0][1:])):
____if pair == (0, 1) and (arr[1][i], arr[1][i+1]) == (0, 1):
______return i+2

4つの値を確認しないといけくてビット演算で簡略化できそうにないので
O(n)でやる以外にはないんじゃないかな
2021/03/15(月) 03:21:26.79ID:p7hcxdJK
プログラム組んでいるんだけどさあ
一週間で出来ないとモチベが下がってそのまま放置になること多いんだよな、、

自分が楽をするためが動機だから、もういいわ!ってなる
2021/03/15(月) 08:40:22.27ID:fwcCfhlr
そういうなやみは板違いだな
2021/03/15(月) 10:49:08.64ID:A7Nxi+Hm
設計が終わったら脳内では不具合無く動いてるから満足してしまうよな
2021/03/15(月) 10:54:19.57ID:EoZWZldm
実際にちゃんと動いているのを見たら満足するよ
2021/03/15(月) 11:05:59.67ID:Cx70J+M+
自分の過去作のゴミ設計の無駄を探して再設計するの好き
2021/03/15(月) 11:11:24.43ID:FrmPLjBr
雑に書いた手続き型のプログラムをオブジェクト指向で書き直して自己満足することはよくあるけど
ぶっちゃけ個人開発なら手続き型で十分だよな
2021/03/15(月) 11:59:51.90ID:G5zjQeOc
スケベみたいな継続的なモチベがいるんだよな
2021/03/15(月) 12:06:27.25ID:JMxBUfb9
手続き型(Imperative)の反対は宣言型(declarative)だぞ。
手続き型かどうかはオブジェクト指向かどうかとまるで関係がない(直交する)
CもC++もC#もJavaもJavaScriptもPythonもPHPもGoもRustもみんな手続き型。
Prolog属などが宣言型。
Prologはパフォーマンス上カットなどの仕組みがあって純粋な宣言型ではないが。
数理証明系のドマイナー言語には純粋な宣言型のものもあるとか。
メジャー言語はほぼ100%手続き型。
HTMLやCSSはプログラミング言語ではないので除く。
たまにメジャー言語で宣言的に書けるのがどうのこうのという話が出てくるが宣言「的に」って言ってる時点で気づこうな。
2021/03/15(月) 12:27:55.07ID:OEM1rmYt
手続き型プログラムってProcedural programming(procedure:手続き)だと思ってたけど。
厳密には手続き型とオブジェクト指向は対義ではないけど、
「関数を呼び出す」っていう手続き型の根本的な構造の限界に対して
オブジェクト指向がもてはやされてきた歴史があるから、あながち間違いではないと思う
2021/03/15(月) 12:35:01.36ID:EubElJsa
一生COBOLでも使っていろ
2021/03/15(月) 13:31:40.79ID:fwcCfhlr
>>956
わかるw
2021/03/15(月) 14:14:35.81ID:DXCJp1HT
正確にはimperativeは命令型。
その反対が宣言型(declarative)。
手続き型(procedural)は命令型(Imperative)の派生概念。
手続き型であれば必ず命令型である、という関係。
よく同義語として用いられがちだが、ブロックもスコープも備えていない言語は命令型言語であると言えても手続き型言語であるとはふつう言わない。
ところがオブジェクト指向は手続き型言語の標準装備となってきている一方で宣言型言語にも取り入れることは可能なので、やはり直交概念ではないかと思う。
2021/03/15(月) 14:38:22.84ID:W4mhVG7e
1つのプログラミング言語が両方の要素を持ってることはよくあることだけど
手続き型プログラミングとオブジェクト指向プログラミングは直交した概念ではないよ
2021/03/15(月) 15:42:44.98ID:DJgBM63I
オブシコ
2021/03/15(月) 15:52:07.88ID:JMxBUfb9
クラス定義時はメソッドの中身は手続き書いてるし、
メソッドコール時はイチ手続きとして記述してるじゃん。
つまり手続き型にオブジェクト指向加えることも可能だし、加えないことも可能というだけで、オブジェクト指向だから手続き型じゃないというのは完全に間違っている。
これはCもC++もC#もJavaもJavaScriptもPythonもPHPもGoもRustもCommon LISPもObject PascalもSwiftもKotlinも同じ。
詭弁を弄してる暇があったら勉強するべき。
2021/03/15(月) 16:02:22.13ID:JMxBUfb9
オブジェクト指向だから手続き型じゃないというのは、
Qちゃんはピッチ走法だから走ってない
真央ちゃんはフィギュアしてるからスケーティングしてない
こう言ってるのと同じです。
修辞的にはありかとも思いますがね。
2021/03/15(月) 16:05:00.75ID:EubElJsa
XVIEW なんてC言語だがオブジェクト指向を
名乗っているぞ
2021/03/15(月) 16:08:14.29ID:W4mhVG7e
>>966
プログラムの中になんらかの手続きが書いてあれば
それらはすべて「手続き型プログラミング」と呼べるという定義ならそうかもね

一般的な定義とは違うけどそういう考え方があっても別にいいと思うよ
2021/03/15(月) 19:29:01.34ID:hStQFS2o
定義じゃなくてパラダイムだから
分類に使うと失敗する
2021/03/15(月) 19:42:13.68ID:EoZWZldm
>>969
一般的でない定義を考えるのは自由だが、他人との議論で使うなら事前にそう定義すると断って話を進めないと他の人は混乱するだけだろう
2021/03/15(月) 20:48:13.18ID:qjY4XCPb
>>971
本人が一般的な定義だと思ってるんだからどうしようもないだろ
やんわり指摘したレス見て自省すればよかったのにな
2021/03/15(月) 23:44:25.76ID:Po+lVn5y
関数型∩オブジェクト指向 とか、
宣言型∩オブジェクト指向 とか、
具体的な言語実装の例はあるのかな?
オブジェクト指向でよく言われるオブジェクト指向たりうる要素が直感的には
割と手続き型に依存してるような気がするが、あまり深く考えたことないのでよくわからん
2021/03/15(月) 23:49:07.06ID:Po+lVn5y
>>968
C言語でオブジェクト指向というのは普通にあるでしょ。gtkとか最たるものじゃん。
糖衣構文はマクロぐらいしかないかもしれないけど。
2021/03/15(月) 23:57:52.44ID:M0xOqYlK
>>973
関数型は参照透過性がメリットなのに
クロージャーとかやるとオブジェクト指向と同じじゃん。
2021/03/16(火) 00:11:33.94ID:g8baptpk
参照透過性のメリットを実感できない
2021/03/16(火) 00:12:31.36ID:NvntMOXY
>>973
手続きが含まれたら手続き型らしいから
関数が含まれてたら関数型
オブジェクトが含まれてたらオブジェクト指向なんじゃねーの
知らんけど
2021/03/16(火) 00:16:11.47ID:Y5UwQrqj
CでADT使ってればすぐオブジェクト指向って言うやつも大差ない
2021/03/16(火) 00:56:17.98ID:6YThIMgd
じゃあオブジェクト指向と関数ベタ書き比較する時はなんて言えばいいんだ?
2021/03/16(火) 01:36:57.64ID:giEPecL9
>>979
ADTのことを言ってるなら名前の通り"抽象型を使って書く"とでも言えば?

抽象型を使ってればオブジェクト指向?
2021/03/16(火) 02:01:29.83ID:WgCwoiox
定義で揉めやすいのは名前が悪いから
それぞれ手続き中心指向、オブジェクト中心指向、関数中心指向に脳内変換しとけばどうでもよくなる

それぞれ直交した概念でもなければ排他的な分類でもない
2021/03/16(火) 03:45:18.19ID:6arf77iJ
言語の方が複合的なパラダイムに対応していても覚える頭が1ビットしかないから其れだと困るねん
2021/03/16(火) 04:14:50.86ID:K4E4Nbs9
宣言型∩オブジェクト指向は実験的prolog拡張実装がいくつかあった気がする。
関数型はオブジェクト指向と相性悪いつか関数型勢からは唾棄すべき害悪として忌み嫌われてる印象。
世の中でオブジェクト指向といったら実質99%は手続き型∩オブジェクト指向だと思う。
C++以前から、smalltalkからこのタイプだもん。
2021/03/16(火) 04:15:37.06ID:K4E4Nbs9
>>983>>973 宛て
2021/03/16(火) 07:21:55.10ID:PfTIXkDh
【まず1嫁】くだすれPython(超初心者用) その53
https://mevius.5ch.net/test/read.cgi/tech/1615846784/
2021/03/16(火) 07:22:43.55ID:lT7Xpsz1
>>974
時代が違うでしょw
2021/03/16(火) 10:37:00.38ID:xULngIlE
>>981
確かに「〜型」という言葉で1ビット二元思考になるやつが多いのかも
「〜的」とでも訳しておけばよかったのに
2021/03/16(火) 11:20:57.40ID:XtVeGAkv
a = hoge()
a.hogeset(1)

こんな感じてコンストラクタと別メソッドで初期設定しなきゃいけないクソめんどい部品があるんたけど1行でやる方法ない?

a = hoge().hogeset(1)

イメージはこんな感じで書いてメソッド呼び出しつつ変数aにはオブジェクトhoge本体を収めたい(hogesetは何も返さない)
2021/03/16(火) 11:42:56.27ID:kT+EpOUV
>>988
そういうクラスを作ればいいだけじゃね?
990デフォルトの名無しさん
垢版 |
2021/03/16(火) 12:25:58.91ID:ja5zi908
オブジェクトhoge本体
991デフォルトの名無しさん
垢版 |
2021/03/16(火) 12:46:56.08ID:Zc215ysF
GUI部品でsetVisible(True)とかなら略しない方がいい
2021/03/16(火) 15:01:49.92ID:qZ3Xge1G
>>988
特に何もせず1行で書くのは無理じゃないかな

selfをreturnするようなデコレータを作って
各種set系のメソッドを上書きするか別名で定義してやれば1行で書けるようにはなる
やる価値があるかどうかは状況次第
https://techiedelight.com/compiler/?G6Nb
2021/03/16(火) 15:17:05.62ID:z+A8n8B9
3.8以降なら代入式でいいんじゃね
2021/03/16(火) 15:32:45.88ID:XtVeGAkv
>>991
わォエスパーかよちょっと違うけど
tkinterのボタン配置別メソでするのダルいんじゃあ〜

>>992
やっぱムリかぁ
でも2行で書くの負けな気がするから関数カマスことにしました (結局5行になってるのは知らない、たくさん置くし・・・。)
def my_hoge_create(param):
a = hoge()
a.hogeset(param)
return a

a = my_hoge_create(1)

>>993
めっちゃ興味あるけど3.5だからまた今度にするわ (進歩しないゴミ)
2021/03/16(火) 15:40:26.02ID:ZzxG4K64
>>993
えーこういうこと?
(a := hoge()).hogeset(1)

条件式とかの中ならありだと思うが2行でも書けるところに使うのは気持ち悪いな
2021/03/16(火) 15:57:44.34ID:RaDf8rd1
>>988
クラスメソッドでググれ
997デフォルトの名無しさん
垢版 |
2021/03/16(火) 17:09:12.14ID:CHhu1vGO
gzipか普通のテキストファイルかを名前で判別して読み込みたいんで下記のように書いてるんですが、read_fileがif/elseで2回出てくるのが冗長っぽいのでif/elseの後にread_file()をしようと思うとI/O operation closedとエラーが出ます。
with open後にインデント変えたので閉じられたたのかなと思うのですが、
gzipかそうじゃないかのファイルオブジェクトとやらをif文で決めた後に、1回の関数で処理するようなスマートな書き方出来ないものでしょうか?

現状
def read_file(f):
data = f.read()


name = 'hoge.txt.gz'
if '.gz' in name:
with open(name, mode='rt') as f:
read_file(f)
else:
with open(name) as f:
read_file(f)
2021/03/16(火) 17:24:18.02ID:Z3x27iQ0
mode="rt" if ".gz" in name else "r"
2021/03/16(火) 18:56:39.01ID:YZCX5YV2
func = gzip.open if name.endswith(".gz") else open
with func(name, mode="rt") as f:
read_file(f)
2021/03/16(火) 19:18:47.34ID:PfTIXkDh
【まず1嫁】くだすれPython(超初心者用) その53
https://mevius.5ch.net/test/read.cgi/tech/1615846784/
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 66日 13時間 56分 22秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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