[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 06/30 01:58 / Filesize : 284 KB / Number-of Response : 1045
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2022/05/22(日) 22:25:08.74 ID:/hGmbW/Z.net]
当スレに★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公式◇ www.python.org/
◇まとめwiki◇ ttp://python.rdy.jp/wiki.cgi

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

次スレたては >>985 あたりが挑戦する。
### END OF TEMPLATE ###

2 名前:デフォルトの名無しさん mailto:sage [2022/05/22(日) 22:37:38.56 ID:jNpDIIz5.net]
立て乙

3 名前:デフォルトの名無しさん [2022/05/24(火) 13:49:28.09 ID:cQhl8P2i.net]
かわいい女の子に上目遣いで拗ねたように「いじわる」と言われると興奮するんです

4 名前:デフォルトの名無しさん [2022/06/05(日) 08:46:24.02 ID:Sg+yaBaV.net]
pandasについての質問です。
"PRICE1","PRICE2","PRICE3","P1(%)","P2(%)","P3(%)"の順にデータが入ってるとします。
下記みたいな感じです。
@[0,0,2470,0,0,27] ○
A[0,0,1570,0,0,0] ☓
B[0,1580,1440,0,35,31] ○
C[0,1290,2878,0,0,31] ☓
D[2522,885,940,31,0,0] ☓
E[1527,1057,1639,28,5,31] ☓
F[1527,1457,1639,28,26,31] ○
○をつけたデータが残したいデータになります。
@AのようにPRICE>0のPRICEデータが1つの場合は、該当するP(%)データが25より大きい場合に残したいです。
BCのようにPRICE>0のPRICEデータが2つの場合は、該当するP(%)データがどちらも20より大きい場合に残したいです。
DEFのようにPRICE>0のPRICEデータが3つの場合は、該当するP(%)データがどちらも15より大きい場合に残したいです。

調べたら下記のような感じでやっていくことがわかったのですが、思うように整理できません。
df = pd.read_sql(sql=f'SELECT "PRICE1","PRICE2","PRICE3","P1(%)","P2(%)","P3(%)" FROM {schema}."{get_table}";', con=conn)
df = df[(df["PRICE1"]>0) | (df["PRICE2"]>0) | (df["PRICE3"]>0) | (df["P1(%)"]>25) | (df["P1(%)"]>25) | (df["P1(%)"]>25)]
df = [tuple(x) for x in df.values]
誰か助けてくだしあ

5 名前:デフォルトの名無しさん [2022/06/05(日) 11:40:11.32 ID:ocueg4o5.net]
よーしらんが、論理回路の問題なんだろ?
なら一時的にif(if(if))みたいなネストの深いクソコード書いて、細かくデバック通すか
関数宣言をさぼらずに、(df["PRICE1"]>0)や(df["P1(%)"]>25)に分かりやすい関数名付けたほうがいいんじゃねえかな

6 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 12:23:41.62 ID:NOI2DZIw.net]
datetime.datetimeクラスの順序比較に手を加えたくなって、モジュールのソースをみたら_cmp()メソッドが比較の本体だったので
ttps://techiedelight.com/compiler/?zbRJ というコードで試したのですが、そもそも_cmp()が呼ばれません
これって、私は何を間違えているのでしょう? (なお、当初やりたかったこと自体は__eq__, __gt__, __ge__, __le__, __lt__, __ne__を直接オーバーライドすることで達成できました)

7 名前:デフォルトの名無しさん [2022/06/05(日) 12:40:05.08 ID:u0j22vIZ.net]
条件に合うものを残すより
条件に合わないものを消していく方が効率が良い

8 名前:デフォルトの名無しさん [2022/06/05(日) 12:44:51.80 ID:u0j22vIZ.net]
>>6
https://qiita.com/nkennek/items/8c54365cb873cca8730a
https://www.delftstack.com/ja/howto/python/python-private-method/
https://blowup-bbs.com/python-class3/

9 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 14:26:03.02 ID:NOI2DZIw.net]
>>8
お返事ありがとうございます
しかし、_cmpのアンダースコアは一つですし、AttributeErrorが発生したりせず単に呼ばれないだけ(比較自体は出来ているので親クラスの_cmp()が呼ばれているはず)です
マングル化に関するページをご紹介いただいた意味がよく分かりません

10 名前:デフォルトの名無しさん [2022/06/05(日) 14:57:15.34 ID:ocueg4o5.net]
def もれそう(arg1, arg2, arg3, arg4, arg5, arg6):
__うんこ = [arg1, arg2, arg3]
__おもさ = [arg4, arg5, arg6]
__def 内容量(element):
____return len(list(filter(lambda x: x > 0, element)))
__def 耐久力(element, n):
____return list(filter(lambda x: x > n, element))

__if 内容量(うんこ) == 1:
____return 耐久力(おもさ, 25)
__elif 内容量(うんこ) == 2:
____return 耐久力(おもさ, 20)
__elif 内容量(うんこ) == 3:
____return 耐久力(おもさ, 15)

df = もれそう(茶色1,茶色2,茶色3,重量1, 重量2, 重量3)
pandasのことよー知らんから>>5で適当なこと書いちゃったけど、こういうことだよな
どっかで関数一覧に目を通すなりして、array関数とかcallback関数の使い方覚えたほうがいいぞ



11 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 15:01:54.57 ID:v/p+BagL.net]
>>4
sqlでの抽出は知らんけど、他の方法で抽出でけた

import pandas as pd
data=[
  [0,0,2470,0,0,27],
  [0,0,1570,0,0,0],
  [0,1580,1440,0,35,31],
  [0,1290,2878,0,0,31],
  [2522,885,940,31,0,0],
  [1527,1057,1639,28,5,31],
  [1527,1457,1639,28,26,31]]

df = pd.DataFrame(data)
def check(row):
  d = {1:25, 2:20, 3:15}
  return all(i[1] > d[len(row)] for i in row)

# 各PRICEと各P(%)の組をzipで作って、その中からPRICEがゼロのものを削除したものをcheck関数でチェック
[check([k for k in j if k[0]>0]) for j in [list(zip(i[:3], i[3:])) for i in df.values.tolist()]]
[True, False, True, False, False, False, True] # ブールインデックス作成

df2 = df[_] # ブールインデックスで抽出
df2.values.tolist()
[[0, 0, 2470, 0, 0, 27], [0, 1580, 1440, 0, 35, 31], [1527, 1457, 1639, 28, 26, 31]]

12 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 15:18:41.40 ID:v/p+BagL.net]
プロンプトが無くて入力と出力が分かりにくかったので、プロンプト追加

>>>import pandas as pd
>>>data=[
・・・  [0,0,2470,0,0,27],
・・・  [0,0,1570,0,0,0],
・・・  [0,1580,1440,0,35,31],
・・・  [0,1290,2878,0,0,31],
・・・  [2522,885,940,31,0,0],
・・・  [1527,1057,1639,28,5,31],
・・・  [1527,1457,1639,28,26,31]]

>>>df = pd.DataFrame(data)
>>>def check(row):
・・・  d = {1:25, 2:20, 3:15}
・・・  return all(i[1] > d[len(row)] for i in row)

# 各PRICEと各P(%)の組をzipで作って、その中からPRICEがゼロのものを削除したものをcheck関数でチェック
>>>[check([k for k in j if k[0]>0]) for j in [list(zip(i[:3], i[3:])) for i in df.values.tolist()]]
[True, False, True, False, False, False, True] # ブールインデックス作成

>>>df2 = df[_] # ブールインデックスで抽出
>>>df2.values.tolist()
[[0, 0, 2470, 0, 0, 27], [0, 1580, 1440, 0, 35, 31], [1527, 1457, 1639, 28, 26, 31]]

13 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 15:20:27.82 ID:joAjo/JZ.net]
>>5>>10>>11
ありがとうございます!
家帰ったら内容目通していじってみます

14 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 15:21:54.55 ID:joAjo/JZ.net]
>>12
正直かなり助かりました。
まだ家帰れてないので試せてないけど、かなり行けそうなイメージです

15 名前:デフォルトの名無しさん [2022/06/05(日) 15:24:04.14 ID:udiiYXiV.net]
>>9
>親クラスの_cmp()が呼ばれているはず

確かめた?

16 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 15:33:26.33 ID:NOI2DZIw.net]
>>15
お返事ありがとうございます。親クラスのメソッドが呼び出されていることを実際にどう確認すればいいのか思いつけないレベルです(デバッガ? トレース?)
ただ単に、例外が送出されずに比較結果が表示されたので、何らかの比較するメソッドが呼ばれたのだろうと想像しただけです

例えば、foo <= datetime.datetime.max が評価されるとき

1) foo.__le__(datetime.datetime.max) が呼ばれる
2) fooには__le__メソッドが定義されていないので親クラスに遡って datetime.datetime.__le__(self=foo, other=datetime.datetime.max) が呼ばれる
3) ttps://github.com/python/cpython/blob/main/Lib/datetime.py の2110行 self._cmp(other) へ進む
 ここでself=foo, other=datetime.datetime.max なので、 foo._cmp(other=datetime.datetime.max) と、 ttps://techiedelight.com/compiler/?zbRJ の4行目で定義したメソッドが呼ばれる

と考えていたのですが……継承に関する理解がどっかで間違っているのでしょうね

17 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 15:56:02.34 ID:U0Dsg58D.net]
俺も気になる。何で_cmp呼ばれんの?

18 名前:デフォルトの名無しさん [2022/06/05(日) 18:26:33.72 ID:NPpCVuaP.net]
foo を造ってるのが now() なので
foo の型が datetime のままなんじゃね

19 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 19:36:27.49 ID:NPpCVuaP.net]
print(super(DatetimeTest, self)._cmp)

AttributeError: 'super' object has no attribute '_cmp'

20 名前:デフォルトの名無しさん [2022/06/05(日) 19:37:47.11 ID:NPpCVuaP.net]
こっちは動く
https://techiedelight.com/compiler/?Jmnq



21 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 19:39:44.56 ID:v/p+BagL.net]
>>12
allの引数が空の場合(全てのPRICEがゼロの場合)にTrueを返すのでcheck関数修正

def check(row):
  d = {1:25, 2:20, 3:15}
  return all(i[1] > d[len(row)] for i in row) if row else False

22 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 20:20:03.24 ID:x6+Exssm.net]
ジェネレーター式まで学習が進んだが
ちゃんと慣れないと突然でてきたとき「なんだこれ!?」ってなるとおもうわ

見やすくするためのものだからそんな複雑な構造で出てくることはないと思うが

23 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 21:55:46.01 ID:NOI2DZIw.net]
ID:NPpCVuaPさん、ありがとうございます

> foo を造ってるのが now() なので
> foo の型が datetime のままなんじゃね
type(foo)はちゃんと"<class '__main__.DatetimeTest'>"になっていましたので、その線は無さそうです

で、試していただいた ttps://techiedelight.com/compiler/?Jmnq ですと、>>16で私が考えたとおりの動作をしているように見えますね
となると、datetime.datetimeとHogeで何が違うのか……ちょっと脳味噌が煮えてきたので、一旦専ブラを閉じて頭を冷やします

24 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 23:10:11.97 ID:v/p+BagL.net]
>>23
dirで_cmpが見えるか見えないかの違いじゃないでしょうか

>>20 のdir(Hoge(0)), dir(Fuga(0))は伴に_cmpが見えますが
dir(datetime.datetime.now())は_cmpが表示されないのでアクセスできないんですよ

25 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 08:54:18.93 ID:9r9DwyjN.net]
見えないのはわかったけどその挙動を実現するための言語仕様ってあるんだっけ?

26 名前:デフォルトの名無しさん [2022/06/06(月) 09:18:43.10 ID:Ug3DHjCK.net]
本体はこっちじゃね
https://github.com/python/cpython/blob/main/Modules/_datetimemodule.c

27 名前:デフォルトの名無しさん [2022/06/06(月) 09:23:35.02 ID:Ug3DHjCK.net]
まずやるべきことは >15 だろ

28 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 09:43:37.49 ID:zYl8ARh2.net]
やりましたみなさん、分かりました!

datetime.pyの最後のにfrom _datetime import *をtryする記述があり
成功したら_cmpなどを消す処理が書いてあるんですが、この_datetimeをimportする関連個所を
ごっそりコメントアウトして

import datetime
dir(datetime.datetime.now())

29 名前:

したら_cmpが表示されましたよ、つまりdatetimeの本体は_datetimeで>>26のヤツじゃないでしょうか
[]
[ここ壊れてます]

30 名前:6, 9, 16, 23 mailto:sage [2022/06/06(月) 09:50:52.59 ID:PsDk58Y7.net]
>>24
お返事ありがとうございます
呼べないのはDatetimeTest._cmp()であってdatetime.datetime._cmp()は呼べている(ように見える)わけですから
datetime.datetime._cmpが見えないことに意味があるのかどうか……一晩経っても脳が煮えたままです
ちなみにdir(foo)だと_cmpが見えてますね……

>>26-28
とりあえず知識もスキルもないなりに手を動かそうと思って、 ttps://techiedelight.com/compiler/?zbRJ のimport datetimeの位置に
datetimeモジュールのソースをそのまま全部貼り付けてあれこれ試したところ(そのコードはでかいしTECHIE DELIGHTの利用規約的にクリアかどうか分からないのでアップしません)
ttps://github.com/python/cpython/blob/main/Lib/datetime.py の最後、2614行目以降が無ければ>>16で私が考えたとおりの動作になる、つまりfoo._cmp()が呼ばれますが、2614行目以降がそのままだと呼ばれませんでした

ということで、遅ればせながら>>28さんと同じ結果に辿り着けました
Cで書かれたモジュールを読み込んで、未使用の名前を削除して、という工程の中になにかありそう、というあたりが今のところ私の限界です



31 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 09:54:12.32 ID:Ug3DHjCK.net]
なるほど _cmp は存在しなかったで FA

32 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 09:54:13.01 ID:PsDk58Y7.net]
皆さまいろいろとありがとうございます
やはり>>27さんのおっしゃるとおり、まず>>15さんの指摘を確かめなければならなかったようですね

33 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 09:56:28.25 ID:9r9DwyjN.net]
>>28
まじか
グローバルにも_cmpがあるからそれを消すためのコードと思いきや、datetime.datetime._cmpも消えるのね…

34 名前:デフォルトの名無しさん [2022/06/06(月) 10:03:42.68 ID:Ug3DHjCK.net]
>>29
そこで削除されてる _cmp は module のグローバルの _cmp であって
各クラス内の _cmp は削除されてないようにも観える

35 名前:デフォルトの名無しさん [2022/06/06(月) 10:05:27.81 ID:Ug3DHjCK.net]
>>32
かぶったが
解せぬ

36 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 10:13:54.31 ID:zYl8ARh2.net]
>>32
グローバルの_cmpを消す処理で合ってると思いますよ

通常は _datetime (たぶん本体がC言語)をimportする、この中にはself._cmpが無いのでdirで見えないし
グローバルの_cmpを消す処理でグローバルの方も見えない

_datetimeのimportに失敗したらdatetime.pyに書かれているdatetimeクラスが使われるし
グローバルの_cmpを消す処理が実行されないので
dir(datetime)でグローバルの_cmpが見えるし、dir(datetime.datetime)でself._cmpが見える

37 名前:デフォルトの名無しさん [2022/06/07(火) 17:25:02.03 ID:NE4LVa9l.net]
なんのための fake

38 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 06:15:05 ID:8a3xVi5I.net]
python 2.x 系の環境です。
file_path を関連付けで実行させるために下記コードを記述しました。
目的としては引数の文字列を unicode として渡したいです。

subprocess.Popen(「'start', file_path], shell=True)

この際、引数は cp932 として扱われるようで、
file_path を cp932 にencode しないと失敗します。
unicode にしかない文字が含まれる場合があるので
unicode のまま渡したいのですが
Popen 側で引数を unicode として受け取れる方法はありますか?

encoding= は Python 2.x は未対応、
またパイプを使って chcp 65001 を先に実行させてもダメでした。

39 名前:37 [2022/06/08(水) 07:56:30.16 ID:Ty02xZw9.net]
win環境なのですが2.x系では内部で
ANSI版のCreateProcessAを呼び出しているとのことで
そもそもダメということが分かりました
ctypesなど使ってCreateProcessWを直接呼び出すなどするしかないみたいです

40 名前:デフォルトの名無しさん [2022/06/08(水) 12:41:12.70 ID:P10Nnex8.net]
今のWindowsおすすめpython環境はなんですか?
教育用?にWindowsでのpython環境を作りたいです。
無印python、anaconda、PyCharmはどれがいいでしょうか。
エディタはVSCodeの利用を考えてます。

自分は普段、LinuxやWSL2でemacsを使っているオールドタイプです。

教えて下さい



41 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 13:17:16.31 ID:Ylodbyzl.net]
google colaboratry で十分

42 名前:デフォルトの名無しさん [2022/06/08(水) 13:42:31.40 ID:rPUwIz8x.net]
たとえば以下のようなリストが即興で欲しくなった場合ってどうしてます?
[[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]…………]
(下の例では0~12まで)
ググった結果numpyで配列を作ってtolistでリスト化する方法は見つけたんですけど
もっとぱっと書けないですかね?

import as numpy np
arr_2d = np.arange(12).reshape((4, 3))
print(arr_2d.tolist())

43 名前:デフォルトの名無しさん [2022/06/08(水) 13:43:05.22 ID:rPUwIz8x.net]
0~12じゃねえわ11だった

44 名前:デフォルトの名無しさん [2022/06/08(水) 15:41:41.08 ID:Mk/J73jd.net]
>>39
前は素の python 入れて pip してた
Anaconda + conda 使ったこともある
Thonny + pip も良いと思う

45 名前:デフォルトの名無しさん [2022/06/08(水) 15:45:15.80 ID:Mk/J73jd.net]
np.arange(12).reshape((4, 3)).tolist()

[[y * 3 + x for x in range(3)] for y in range(4)]

46 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 15:50:39.30 ID:WqwdOMp+.net]
>>41
[list(range(i, i+3)) for i in range(12)[::3]]

47 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 15:55:39.94 ID:SMHvnx3K.net]
import more_itertools
list(more_itertools.chunked(range(12), 3))

48 名前:デフォルトの名無しさん [2022/06/08(水) 16:25:32.81 ID:KT22GtKj.net]
[np.array([0, 1, 2]) + 3*_ for _ in range(4)]

49 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 18:22:00.06 ID:WqwdOMp+.net]
>>41 さらに短くできた
[list(range(i, i+3)) for i in range(0,12,3)]

もう出尽くしたやろ、ワイのが一番やな、組み込みのみだし直感的だし
応用もきくし、ワイが一番やろw

50 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 18:40:08.42 ID:3lPgPXCP.net]
>>39
WinPython+VScodeが正解だぞ

anacondaは、Pythonを習得し、Pythonと外部ライブラリの境界を把握できるように
なった人のうち、anacondaを必要とする人だけが使うものだ



51 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 19:34:37.02 ID:nVdli+zf.net]
>>39
Pythonで何やりたいのかわかんねーからてきとーだけど
Dockerコンテナにanacodaとvscodeが正解

52 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 19:37:13.76 ID:d7/kuIlk.net]
dockerはdockerの勉強になるしwindowsだと安定しないから要らんな

53 名前:デフォルトの名無しさん [2022/06/08(水) 23:45:53.43 ID:rPUwIz8x.net]
>>44-48
ありがとう、勉強になった!

54 名前:デフォルトの名無しさん [2022/06/09(木) 03:35:46.64 ID:aPNi5OBU.net]
pythonのライブラリを調べているのですが
C言語で書かれている部分(cソースコード)には
どうやってたどり着けばいいのでしょうか?
例としてrandom.random()が0.0以上1.0未満の浮動小数点数を
かえしますが、どうゆう仕組みで返すのかを調べたいのです

55 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 04:32:16.69 ID:FzQACe2i.net]
>>53
コンパイル済みのを一般に調べるのは無理。標準ライブラリなら例えばcpython のリポジトリから探せる。https://github.com/python/cpython

56 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 05:11:23 ID:aPNi5OBU.net]
>>54
回答ありがとうございました
_randommodule.cまでたどりつきました
少しハードルが高いですが頑張って理解に努めようと思います。

57 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 05:17:33 ID:FzQACe2i.net]
>>55
蛇足かもですがpython の乱数はメルセンヌツイスタというアルゴリズムなので調べてみるといいかもしれません

58 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 05:44:46.90 ID:aPNi5OBU.net]
>>56
_randommodule.cの中に日本人の名前があったので
何故だろうと思いましたがメルセンヌツイスタで検索したら
つながりました。感謝です

59 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 18:02:41.85 ID:i3H8tE1L.net]
>>39
公式Python+PyCharmが便利

60 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 18:22:37.05 ID:8SlPB6O/.net]
教育用なら圧倒的シェアを獲得しているVSCodeの方が良いと思うよ



61 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 18:36:52.52 ID:ZOUr8HN/.net]
pycharmはなぁ…

62 名前:デフォルトの名無しさん [2022/06/09(木) 22:20:46.40 ID:KIKA+I2C.net]
>>39
教育に、環境構築の手間を含められるかどうかによるかな。
純粋にプログラムとは何かを知ってもらうだけだったらcolab
Pythonスクリプトをちゃんと動かせるようになることが目標だったらWindows用のPythonかなぁ。

63 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 22:22:21.55 ID:1X1IjXim.net]
ideoneでいいじゃん。
colabより高性能だよ。
公開されてしまうが。

64 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 23:14:03 ID:gzzbtW8N.net]
そいや親戚のとこの子供が学校でPythonのプログラムやっているというのだが、
ああいうのって、どういう仕様の実行環境なんだ?

グラフや絵を描けたり、画面上のピアノの鍵盤叩くと音が出せるとか、
なにやら色々とできるようなのだが
というかpipであれこれ山盛りにされてる環境にも思える

Scratchだと思ってた

65 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 23:16:22 ID:1tSt6fQl.net]
ideoneとColab(Jupyter)だと機能がダンチだから土俵がちがう

66 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 23:20:50 ID:1tSt6fQl.net]
>>63
MakeCodeとかUI Flowのあたり?
ブロックプロラミングとPythonを行ったり来たりできる

67 名前:デフォルトの名無しさん [2022/06/10(金) 03:26:54.12 ID:v7zmV4Lt.net]
vscodeって途中のコードいじってると下記の折り畳み全部開いちゃうじゃん。あれ超鬱陶しい

68 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 12:08:03.84 ID:sFhUkWJJ.net]
関数の引数型説明(アノテーション?)をつけるとき、intやstr等の組込み型ではなく、クラスのインスタンスの場合どのように書けばよいでしょうか

69 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 12:38:18.30 ID:Lq4KcKs2.net]
https://docs.djangoproject.com/ja/3.2/intro/tutorial05/

このページの最初のコードをshellモードでやってもtimezone has no 'now'って出るんだけどなんでだよ

ついでにいうとsettings.pyでuse_tz = Falseにすると逆に日本時間になってTrueにするとUTCになる

70 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 14:22:36.04 ID:Lq4KcKs2.net]
解決
from django.utils import timezone
じゃなくて from datetime import timezoneって書いてた



71 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 10:31:55 ID:yOzdOwl+.net]
超初心者です!古いMacでも出来ますか?

72 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 11:18:37.09 ID:85fUpHB3.net]
>>70
https://homepages.cwi.nl/~jack/macpython/index.html
これだとバージョン古いからMac-on-Linux化してLinux側で動かすか
リモートでもいいならWebブラウザのGoogle Colabやクラウド上のLinuxでやれる

73 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 11:20:32.01 ID:IHQzlSUe.net]
>>67
例えばpandas(pd)のデータフレーム(df)なら

import pandas as pd

def some_func(df: pd.DataFrame, some_num: int = 42) -> pd.DataFrame:
 df2 = df.cooy()
 # 処理
 return df2

74 名前:67 mailto:sage [2022/06/12(日) 06:48:37.19 ID:0q70LBVd.net]
>>72
ありがとうございます

75 名前:デフォルトの名無しさん [2022/06/12(日) 08:55:03.32 ID:LQ+2P+LS.net]
サポート期限すぎたMac使ってそう

76 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 18:06:38.20 ID:9B8stwi/.net]
leetcodeの問題解いてるんだけどさ

コードをvscodeとかのエディタ上で再現しようとしてもinputはleetcode側がやってるから、コードコピペしてもうまく動かないってことか?

Input: strs = ["flower","flow","flight"]
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
# 回答をここに書いた

こういうクラスを実行する場合って

solu = Solution()
solu.longestCommonPrefix()
こんな感じにすると思うんだが、エラーが
NameError: name 'List' is not defined

とかになるんだよね

77 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 18:18:33.18 ID:d5yVlq+K.net]
そのくらいはimportしろよ

78 名前:デフォルトの名無しさん [2022/06/12(日) 18:22:48.72 ID:V8Tt9ICP.net]
エラー文も読めないのか
新しいpythonならlist[str]だバカタレ

79 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 18:23:08.52 ID:fSdhUbKc.net]
>>75
そこだけの話でいうと
from typing import *
だけど、問題のコードが古い
今はListをlistと書くようになったから

80 名前:デフォルトの名無しさん [2022/06/12(日) 18:42:58.91 ID:w/rq6Our.net]
nameErrorとかattributeErrorと最低限のエラーぐらい読めるようになろう
問題といてる場合じゃない



81 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 19:23:48.95 ID:9B8stwi/.net]
>>78
なるほどそういうことか
ありがとう

82 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 03:56:57.46 ID:i0EppADi.net]
>>1
def reverse(url): return url[::-1]
lst = [ ['=v?hc','taw/','moc.e'], ['.www','//:sp','tth'], ['but','uoy'] ]
yt = ''.join( lst[0] + lst[2] + lst[1] )
id_lst = ['MOYukLAWwkK', 'A4c_Lbwf-Jw', '0glgH5rR_po']
for id in id_lst: print( reverse( id + yt ) )
"".join("ht_t_ps://ja_.wiki_pedia.o_rg/_wiki/朝鮮神宮".split("_"))

83 名前:デフォルトの名無しさん [2022/06/17(金) 05:22:40.60 ID:eircCDFG.net]
>>1
reverse = lambda *argv: [ '//:sptth'[::-1] + url[::-1] for url in argv ]
lst_url = reverse('IPq5AyxxvpM=v?hctaw/moc.ebutuoy.www',
'0EgauYFUN8N=v?hctaw/moc.ebutuoy.www',
'48132/-/selcitra/pj.tnediserp',
'4456111984139806941/sutats/oobnolihsusta/moc.rettiwt',
'81605591320X602502201/txt/elpmis/pj.og.ldn.iakkok',
'1021=morf?15978662os/hctaw/pj.oedivocin.www',
'8xebddeeiYY=v?hctaw/moc.ebutuoy.www')
print(*lst_url, sep='\n')

84 名前:デフォルトの名無しさん [2022/06/17(金) 08:29:57.19 ID:doPvN/Dz.net]
これを三項演算子で書くことってできますかね?

if a:
if b or c:
print("1")
else:
pring("2")

85 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 08:40:15.00 ID:impPpfbo.net]
インデントどこやった

86 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 09:16:26.10 ID:b18JcTPN.net]
5chはインデント未対応なので
pythonコードを貼るときは
行頭インデントを全角アンダーバーで
埋めてください

87 名前:デフォルトの名無しさん [2022/06/17(金) 09:26:11.91 ID:doPvN/Dz.net]
こんなかんじです
a b c は true か falseが入る変数です

if a:
_if b or c:
__print("1")
else:
_print("2")

88 名前:デフォルトの名無しさん [2022/06/17(金) 09:35:01.18 ID:nb2nCyEf.net]
>>86
print((1 if b or c else "") if a else 2)

三項演算子ならば全ケース対応する必要がある
a and not (b or c)の場合は空文字列とした

89 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 09:52:15.09 ID:Ws3c1l54.net]
回答になってないが
if not a:
__print(2)
elif b or c:
__print(1)
でよくない?

90 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 12:17:47 ID:uqpMsu92.net]
a = True, b = False, c = Falseのケースを見落としてるのか
意図して何もしてないのかが読み手にはわからないからすごく気持ち悪い



91 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 12:40:54 ID:u2aqxJXf.net]
テキストだと以下のようになるんだけど

# 整数(Python の int 型)の要素をもつリストを与えた場合
x = np.array([1, 2, 3])
x.dtype

結果
dtype('int64')

自分の環境だとdtype('int32')になるんだよね
これってあんまり気にしなくて良い部分?


ちなみに以下のはテキストと同じ結果になる

# 浮動小数点数(Python の float 型)の要素をもつリストを与えた場合
x = np.array([1., 2., 3.])
x.dtype

結果
dtype('float64')

92 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 13:02:51.91 ID:sBNVv+WO.net]
numpyのintはC言語のlong
あなたの環境はWindowsで本はLinuxなのだろう

93 名前:デフォルトの名無しさん [2022/06/17(金) 16:24:32.82 ID:G79h5Zer.net]
>>87
無駄な改行が増えるので仕様が異なる

94 名前:デフォルトの名無しさん [2022/06/17(金) 16:26:41.62 ID:G79h5Zer.net]
>>90
OSの32/64と
pythonの32/64と
それぞれどっちが動いてるかは意識するべき

95 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 17:59:15.20 ID:JzEGKltv.net]
>>93
それとは別の話なんやで

96 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 19:32:27.63 ID:Ta4m0XWe.net]
>>82
'stnemugra-gnikcapnu-tut#lmth.wolflortnoc/lairotut/3/aj/gro.nohtyp.scod//:sptth'[::-1]

97 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 20:07:00 ID:IFnpw5My.net]
jupyternotebook で実行中のセルからほかのセルを呼び出して実行できませんか?
マジックコマンドをみてもそれらしきものがないような
vbaでいえば、セルをプロシージャ、ノートブックをモジュールのように扱いたいのですが・・

98 名前:デフォルトの名無しさん [2022/06/17(金) 23:55:43.50 ID:doPvN/Dz.net]
86ですが回答ありがとうございました。

これでいけそうです
print("b") if not a else print("a") if b or c else print("c")

99 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 01:17:30.65 ID:lHai4Yqe.net]
>>96
モジュール化するのはだめなんか?
インポートしたらいいじゃまいか

100 名前:デフォルトの名無しさん [2022/06/18(土) 11:02:31.05 ID:0BdDrqNN.net]
>>90
気になるなら
x = np.array([1, 2, 3], dtype=np.float32)



101 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 17:19:34.23 ID:AeKYwQGO.net]
""と''の違いってある?
単に出力の違いとかじゃなくてコードを書く上での使い方の違いとか

102 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 18:19:13.17 ID:HiXA4239.net]
https://pep8-ja.readthedocs.io/ja/latest/#section-11

103 名前:デフォルトの名無しさん [2022/06/18(土) 18:53:41.89 ID:U2ccem7m.net]
>>100
英語キーボードなら''のほうが楽

104 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 19:06:28.02 ID:H57335ve.net]
>>98
ありがとうございます
検索すると、実行セルのipynbとは別のipynbファイルおよびセルをインポートする方法はあるのですが、
実行セルと同じipynbファイルにある別セル(例えば、実行セルの一つ上のセル)を呼び出したい
場合は、自分自身のipynbをインポートするということでしょうか?
インポートするipynbのセルすべてを実行するとあるので、素人感覚では無限ループになってしまうそうなのですが・・
呼び出される側のセルをpyファイルに出力してそのpyファイルをインポートすればいい話かもしれませんが、いちいち
pyファイルで書き出すのもなあ…と 理解が悪くてすみません

105 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 19:19:37.26 ID:HiXA4239.net]
普通に関数を作るのではだめなの

106 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 20:04:40.40 ID:H57335ve.net]
>>104
ありがとうございます
それでももちろんできるのですが、呼び出される側のセルを単体で実行することも多く、また同一ipynbのその他多くの
セルからも呼び出したいのです(処理が共通している 
vbaだと、publicsubプロシージャで独立させてしまえばいい話だったので同じことがしたいなと

107 名前:デフォルトの名無しさん [2022/06/18(土) 20:08:08.31 ID:cOcEcivy.net]
jupyterなんて池沼用だろ

108 名前:デフォルトの名無しさん [2022/06/18(土) 22:44:24 ID:FjYCWDRz.net]
blenderでpythonスクリプトを使ってキャラクターの目のまばたきの動きを制御してるんですがやってることをグラフで表すとこんな感じで

https://i.imgur.com/3wSHCrT.jpg

yにどのくらい目を動かすかの数値が入り
xにアニメーションの経過フレーム数が入るとして
xが0のときyは0 xが3のときyは6 という条件があるものとして
それをグラフで表すと増量が一定ならば一番左のグラフのようにyが2ずつ増えるグラフになると思いますけど
これだとまばたきが毎回同じ動きになってしまうので変化をつけたいんですが
たとえば真ん中や右のグラフのようにyの数値が不規則に増えていくグラフを計算するたびに作成するみたいなことをしてまばたきの動きに変化をつけたいんですが
それに使える関数とか計算式みたいのってないですかね

109 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 22:53:35 ID:HiXA4239.net]
この分野はド素人だが
CSSにはanimation-timing-functionってのがあって似てる

110 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 09:13:37.77 ID:CQcbRoeX.net]
dictionary_one = {"a": 1, "b": 2, "c": 3}
dictionary_two = {"c": 3, "d": 4}

merged1 = {**dictionary_one, **dictionary_two}
print(merged) # {'a': 1, 'b': 2, 'c': 3, 'd': 4}

merged2 = dictionary_one | dictionary_two
print(merged2)

これの "merged1="部分と"merged2 ="部分ってやってること同じという認識でいいのかな?



111 名前:デフォルトの名無しさん [2022/06/19(日) 09:55:52.19 ID:EfD69g8z.net]
>>109
前者は遅い

112 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 11:42:39.18 ID:Lvzk3izZ.net]
速度はほぼ同じ

しかし今の時代に演算子にやらせる処理じゃないな
それも論理演算子を想起するものを使うとか正気と沙汰とは思えない
Guidoも演算子推してたけどセンスが悪すぎないか?

113 名前:デフォルトの名無しさん [2022/06/19(日) 12:37:09.83 ID:sa8W0ZGX.net]
論理演算自体、集合演算と切っても切れない関係だから、まるで違和感ないな

114 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 15:08:21.20 ID:mFXr9uBN.net]
dictを拡張するPEPは、setに準じた挙動にするのが目標の一つだったから、どう転んでも論理演算子のオーバーライドは外されなかっただろう

115 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 15:26:32.46 ID:cDaRhPWb.net]
>>112
dictは集合演算じゃないからね
a | bで両方にkeyがある場合はset

116 名前:ニ同じくaが採用されるならまだよかった []
[ここ壊れてます]

117 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 15:37:38.06 ID:V2Ko/eSH.net]
>>113
最初は+で提案されてたんだぞ
それにsetに準じたいなら何で他の演算子は実装されないのさ?

118 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 15:47:44.79 ID:JUrmuEeo.net]
https://peps.python.org/pep-0584/
こんなの追加するなよと思ってしまうけど結構面白い

119 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 16:18:18.38 ID:AfW1xcqK.net]
inplaceじゃないdict.updateが欲しかっただけなのに
それをメソッドで用意できないところがPythonの限界
sort/sortedやin演算子に共通する基本的API設計の問題だから
Pythonはそういうもんだと諦めて
用意されたものを使う事だけに専念した方が精神衛生上いいよ

120 名前:デフォルトの名無しさん [2022/06/19(日) 16:34:05.36 ID:+3VyORCf.net]
>>114
keyに注目すれば集合演算そのものじゃん。
valueという属性が各keyに付いてるというだけ。
大体、>>111はsetだったら納得したのかね



121 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 17:04:44.33 ID:SF0ERYFz.net]
不毛な返しだな
潜在的に不幸な奴はどこでどんな生活をしてても不幸だって言うだろ
同様にどこでどんな仕様の言語を使ってても不平を垂れてんだよ

122 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 17:17:33.66 ID:tgIktWD1.net]
誰と会話してるのか知らないが
Pythonこそ人類最大の功績だろ
いかがわしいウェブサイトの構築からAIや研究畑まで広がる広大な活躍範囲
JavaもRubyも要らんかったんや

123 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 18:03:25.93 ID:EYUnw8+k.net]
>>118
setのunionやintersectionの演算子は違和感ないぞ
それにsetの場合は穴にはまるような仕様もないし
__or__以外の通常メソッドも用意されてるから全然状況が違う

124 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 19:03:27.86 ID:MGBoiv+i.net]
俺もDictの論理和で違和感ないがなぁ。

125 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 22:17:06.63 ID:njnZ7xZC.net]
dict1 | dict2で同じ(hash値の)keyが両方にあれば
keyはdict1からvalueはdict2から取ってくる

一般的な論理和の定義とは明らかに異なるけど
これをpythonではdictの論理和と呼ぶことにしたのならそれでいいんじゃない

126 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 22:17:07.56 ID:m8jSBDD8.net]
>>120
原理主義者w

読みやすさがダンチすぎるわな
あとは高速にさえなれば最強

127 名前:デフォルトの名無しさん [2022/06/19(日) 22:44:59.15 ID:sa8W0ZGX.net]
>>123
keyは同じものなんだからどっちからもってきてもいいだろ。
仕様でもvalueをdict2から持ってくることだけしか決められてないんだからそんなところに依存するコードを書いたらお前が悪いとしか言えん。
あと同じhash値ってだけで同定されると思ってるみたいだな

128 名前:デフォルトの名無しさん [2022/06/20(月) 00:01:19.54 ID:FO/JkqKw.net]
>>123
誰もdictの論理和と呼ぶ奴いないが

129 名前:デフォルトの名無しさん [2022/06/20(月) 00:04:58.71 ID:FO/JkqKw.net]
こんな場末の掲示板で美学()を垂れてる大先生達はPEPに提案でもすればいいのにな
https://github.com/python/peps/blob/main/CONTRIBUTING.rst

130 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 00:51:48.01 ID:3bt1t/j5.net]
>>126
>>122



131 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 09:01:28.64 ID:clQvML/w.net]
picture(数字).pngで連番のファイルを生成したんだけどpathlibでディレクトリの中身覗くと
picture0.png
picture1.png
picture3.png
picture2.png
picture4.png
みたいな順番になってる事があってなんだか気持ちが悪い
これって何が原因なんです?pathlibの仕様?

132 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 10:51:33.24 ID:bmv2finQ.net]
iterdir()とiterdir()が使ってるos.listdir()の仕様

133 名前:デフォルトの名無しさん [2022/06/20(月) 10:52:01.17 ID:NopO3X5I.net]
lenovoのL420っていうノートパソコン使っています
celeron,4GBです
教科書レベルのプログラムを写経してます
画像ファイル256枚、一枚あたり30kb位のファイルを
重ねる画像処理をpythonで行っているのですが
MemoryErrorがでて処理が止まります
画像処理の分野ではよくあることなのでしょうか

メモリ空きスロットが無いです

今までメモリ不足なんて無かったのですが
PC買い替えでしょうか?

134 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 11:06:40.33 ID:VCuoWLch.net]
>>131
エラーメッセージを読んでエラーの原因をまず確かめろ
ハード的なメモリ不足よりプログラムの書き方が悪い可能性のほうがはるかに高い

135 名前:デフォルトの名無しさん [2022/06/21(火) 19:48:14.54 ID:BPheRP/d.net]
#次のような集合のリストのリストrを作りました:
r = [[set(range(1,4))]*3]*3
> print(r)
[[{1,2,3}, {1,2,3}, {1,2,3}],
[{1,2,3}, {1,2,3}, {1,2,3}],
[{1,2,3}, {1,2,3}, {1,2,3}]]

#上から2番目、左から3番目の集合を更新して要素を1のみとしました:
r[1,2] = {1}

#するとr[0,2]とr[2,2]も{1}になっちゃいました:
> print(r)
[[{1,2,3}, {1,2,3}, {1}],
[{1,2,3}, {1,2,3}, {1}],
[{1,2,3}, {1,2,3}, {1}]]

r[1,2]以外が変わった原因と、r[1,2]以外が変わらないような方法教えて下さい

136 名前:デフォルトの名無しさん [2022/06/21(火) 20:00:56.97 ID:BPheRP/d.net]
>>133 訂正
r[1,2]じゃなくてr[1][2]でした (他同様)

137 名前:デフォルトの名無しさん [2022/06/21(火) 20:03:33.86 ID:nUT03NU2.net]
deepcopyで検索ゥ

138 名前:デフォルトの名無しさん [2022/06/21(火) 20:08:37.10 ID:SE7t042v.net]
[[set(range(1, 4)) in x for range(3)] in y for range(3)]

139 名前:デフォルトの名無しさん [2022/06/21(火) 20:18:32.01 ID:SH7wWIQd.net]
>>133
多次元のリストを作るにはどうしますか?
https://docs.python.org/ja/3/faq/programming.html#faq-multidimensional-list

140 名前:デフォルトの名無しさん [2022/06/21(火) 20:18:51.87 ID:BPheRP/d.net]
>>136
ありがとうございます〜forとin換えたら行けました

>>135
検索してdeepcopyの話かな?という所には辿り着きましたが適応の仕方がよく分かりませんでした 勉強しときます



141 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 11:44:54.88 ID:EcTc17L7.net]
ほとんどの言語は、shallow copy

実体をコピーしない。
ポインター・参照しかコピーしない

実体をいじると、それを参照している全ての参照に影響が出る。
実体を参照を通して見ているから

なかなか簡単には、deep copy できない。
参照のリンクを切り離せない

Elixir みたいな関数型言語は、
オブジェクトを更新できない(状態を持てない)から、
こういう問題はなく、安全にプログラミングできる

142 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 12:13:41.31 ID:TN4B0obT.net]
なんかさ、もううんこだよね

143 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 21:49:37.76 ID:kEl16R0O.net]
特定のフォルダ以下のサブフォルダから拡張子を取得して
指定したフォルダ下に拡張子のフォルダを作りたくて
下記のプログラムを書いたところで動作しましたが
os.makedirs文のみで完結する簡素な記述方法はありますか?

cd_path ← フォルダを作りたい場所
file_extension ← FOR文で取得した拡張子

path = os.path.join(cd_path, file_extension)
os.makedirs(path, exist_ok=True)

144 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 22:14:47.11 ID:1aHzqpDi.net]
>>141
回答になってないけど、初心者なら最初からpathlib覚えたほうがいいぞ
os.pathやglob.globはいろんな罠がある
あと、拡張子にはドットが含まれるから注

145 名前: []
[ここ壊れてます]

146 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 23:39:08.69 ID:uPuQk0KY.net]
みんな一時は罹ってしまうコードゴルフ
中二病にちかい

147 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 00:13:39.08 ID:RPGBecSe.net]
配列(array)の要素それぞれにリストを入れることは出来ない?
リストの要素それぞれに配列を入れることはできる?

でいいのかな?

148 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 00:24:13.97 ID:RKdZXyYS.net]
あまりやらないけれど
配列の要素はそれぞれ任意のものを入れられるから
最初に配列、次に文字列でもすきなクラスでも大丈夫
もちろんぜんぶ配列でもOK

149 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 10:12:12.29 ID:bFbjfjx7.net]
dictのキーにString型のリストとバリューにリストに入った多重結界みたいなデータ作ってjsonとして書き出すみたいな遊びだよね

150 名前:デフォルトの名無しさん [2022/06/23(木) 14:55:17.55 ID:EV0+4t37.net]
https://github.com/yaneurao/Ayane
のunit_test1.pyの、一番基本的なtest_ayane1を通そうとするとプロンプトにtest_ayane1 : とだけ
でてwrite_workerの734行目のself.proc.stdin.flush()でスレッドが死んでるような?感じなのですが
試して原因を教えてくれる神はいませんか。

ちなみに呼び出すエンジン自体は別のソフトや、cshogiというこれと似たライブラリからの呼び出しでちゃんと
動作していることを確認しています。



151 名前:デフォルトの名無しさん [2022/06/23(木) 15:04:04.22 ID:Ukh7Grgr.net]
判った

152 名前:デフォルトの名無しさん [2022/06/23(木) 15:58:15.03 ID:EV0+4t37.net]
>>147
Python 3.7.13で、macOS12.4 Montley上です。

153 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 11:43:47.67 ID:3JV7YPJq.net]
socketのサーバー側で
i=0
while True:
data=soc.recv(受信サイズ)
if not data:
break
data_sum+=data
with open(f"保存するファイル名_{i}.zip",mode="ab") as f:
f.write(data_sum)
i+=1
みたいにするとクライアント側が送信したデータの他に数個のzipファイルが出来るんだけどこのデータの中身は何なんだろう?
zipfileで開こうとするとエラー出力しちゃう
変数iを使わずに受信するとクライアントが送信したデータだけが残るみたいだけど…

154 名前:デフォルトの名無しさん [2022/06/24(金) 12:05:35.52 ID:K2we1Lar.net]
>>150
死ね
https://egg.5ch.net/test/read.cgi/bizplus/1655956236/

155 名前:名無し募集中。。。 mailto:sage [2022/06/24(金) 13:18:15.52 ID:d6WBxki6.net]
FOR文の中にtqdm()を入れてみたんんですが
下記みたいなのしか表示されなくプログレスバーが表示されません
70786it [3:35:59, 1.94it/s]
なにが問題なんでしょうか?

156 名前:デフォルトの名無しさん [2022/06/24(金) 14:31:40.66 ID:yJmddVFh.net]
実際のコードを書かないこと

157 名前:ぴよ [2022/06/24(金) 14:59:09.01 ID:XR8KeGTq.net]
ほげほげ

158 名前:デフォルトの名無しさん [2022/06/24(金) 19:30:36.14 ID:n0/ceoPd.net]
>>152
lenが不明なiteratorだとそうなる
tqdm(iterator, total=100)のようにする

159 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 23:45:09.14 ID:/S8ogjuv.net]
>>150
VSCode で、バイナリエディタの拡張機能・Hex Editor でも使って、バイナリとして見てみれば?
文字コードなどが不明なので、テキストとして見るには困る

適当に内容を作って、ファイルの拡張子を .zip にしても、
正しいZIPファイルの形式になるはずがないので、ZIPファイルとしては動作しない

各拡張子のファイルには、決められた構成があるため、
それに従っていない場合は、正常に動作しない

160 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 00:01:18.86 ID:eoWHGkrH.net]
Phil Katz に聞くべき



161 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 00:11:42.65 ID:z9QRxAiq.net]
降霊術を習得しないと

162 名前:デフォルトの名無しさん [2022/06/25(土) 19:47:06.55 ID:fwnfW89W.net]
Pythonでsetの要素がイミュータブルでないといけないのはなぜですか?

a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 9]
S = {a, b, c}
a.append(0)

この状況で、

a in Sの値が偽になっても別に構わないと思います。
Sに登録した時点でのaは{1, 2, 3}だったわけですから、
d = {1, 2, 3}
d in Sが真になりさえすれば何もおかしなことはないと思います。

163 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 19:57:20.22 ID:I0eUacPf.net]
S = {a,b,c}
TypeError: unhashable type: 'list'

164 名前:デフォルトの名無しさん [2022/06/25(土) 20:23:18.44 ID:bZig/WUT.net]
こういう馬鹿が辞書のキーにまでリスト入れたいとか言い出すんだろうな

165 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 20:26:09.88 ID:gQjoPRQF.net]
>>159
Pythonのオブジェクトは基本参照だし、setに突っ込んでもコピーされる訳じゃない
重複を許さないsetの要素が変更されたら保証できないし、比較のコストも考えたら…かな

166 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 20:36:01.58 ID:9jpr7vFN.net]
>>159
自作クラスとか、mutableでもsetに突っ込めるよ。
何か読み違えたのでは?

167 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 21:18:41 ID:gQjoPRQF.net]
>>163
本質的にはそうじゃない、ユーザークラスは既定でハッシュ化できるが
これは一般的な実装ではid()、即ちインスタンスアドレスに基づくもの
実質的に求められているのはハッシュの不変性であり、それならば通る

しかし同一性を内容で評価するなら意味は成さないのでlistだと未定義
データモデル曰く「クラスがミュータブルなオブジェクトを定義しており、
__eq__() メソッドを実装しているなら、 __hash__() を定義してはなりません。」

168 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 01:34:01.17 ID:A2gDvo6x.net]
やってやれないことはないけど
デメリットを打ち消すだけのメリットを見いだせなかったんでしょGuidoが

単に他の言語のdict/setに合わせただけかも知れんが
ともかく、真実が知りたかったら開発者に聞いてこいよ

169 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 07:16:45.51 ID:eSuyoUi6.net]
>>95
print('QHG pj.og.ldn.iakkok:etis'[::-1],
'/elpmis/pj.og.ldn.iakkok//:sptth'[::-1], sep='\n')

170 名前:デフォルトの名無しさん [2022/06/26(日) 13:31:03.88 ID:DTfGvOZF.net]
ねんまつ



171 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 08:09:04 ID:Zqv939YP.net]
PCでのアプリ操作を自動化したいのですが、pyocrで文字認識して、内容によって判断し、pyautoguiでxy座標指定して、ボタン押すしかないでしょうか?

172 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 08:14:55.95 ID:RN7qnQjk.net]
物によるとしか言いようが無いな

173 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 08:17:13.06 ID:RN7qnQjk.net]
PyAutoGui でカバー出来るか出来ないかを判断してみたら?

174 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 18:27:20 ID:3qzf3wBJ.net]
以前MACにいれたpython3を削除できないです。

% rm -rf /usr/bin/python3
rm: /usr/bin/python3: Read-only file system


% sudo rm -rf /usr/bin/python3
Password:
rm: illegal option -- ?
usage: rm [-f | -i] [-dPRrvW] file ...
unlink file

原因わかる方いますか?

175 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 18:53:43.40 ID:0yF6vhsn.net]
>>171
sudoのほうは全角スペースが入ってるのが原因

176 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 19:05:21.65 ID:a8sMrZjJ.net]
172の優しさに感動

177 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 19:25:49.92 ID:cL/RIHXE.net]
そのpython入れたのはAppleだから通常起動したOSからは削除できない仕組み
消えたらOS内のスクリプトが動かなくなるよ
よかったねOSが壊れなくて

178 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 20:20:17.78 ID:3qzf3wBJ.net]
>>172
迅速なレスありがとうございます。
もう一度コメント打ちましたが同じ結果でした。全角は入ってないようです。
>>174
MACから元々インストールされているのはphyon2なので
Phyon3とは関係ない、削除しても問題ないと思うのですが..

https://i.imgur.com/PpXh6yu.png

179 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 20:45:49.02 ID:xsOnLI+U.net]
>>175
何経由でインストールしたんだこれ
Homebrew使ってインストールしたなら
brewコマンド経由でアンインストール出来ない?

180 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 21:25:48.96 ID:cL/RIHXE.net]
>>175
python3入ってないmacOSってわりと古いよ?
ここ最近はpython2が逆に入ってない(公式サポート終わってるからね)
もし自前で /usr/bin にインストールしたってんならクラッカー気質あるわw



181 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 21:44:39.26 ID:XFwxgXBL.net]
>>175
同じ結果とちゃうやん
全角入ってた時とエラーメッセージ変わってるやん

どうしても削除したいならSIP無効にしてから削除で

182 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 22:13:08.24 ID:3qzf3wBJ.net]
>>175
追記 すみません自分の勘違いでこのpython3はデフォルトから入ってるファイルのようです。

>>177 さんの仰る通りでした。申し訳ありません。

そして再度インストールしようとhomebrewを入れpyenvを入れ

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
を追加し
source ~/.zshrcを実行してpython3.10.4をインストールするとうまくいきません。。おまかんなのでしょうか??

https://i.imgur.com/ErhCpgK.jpg

183 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 22:13:29.06 ID:3qzf3wBJ.net]
>>178
申し訳ありません。

184 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 01:52:22.87 ID:GjoTbrJZ.net]
>>179
自決ですが、xcodeが古かったので新しいバージョンにいれた所無事インストールできました。

185 名前:デフォルトの名無しさん [2022/06/28(火) 08:26:42.80 ID:UgaAibo1.net]
またしても犠牲者が。
pythonの乱用は精神に作用するのかもしれない

186 名前:デフォルトの名無しさん [2022/06/28(火) 12:11:58.39 ID:W8L8uteA.net]
macのOS環境ごとふっとんで死ねば良いのに

187 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 12:22:02.22 ID:SMUgtqGT.net]
日本人が作った、多言語バージョンマネージャーのanyenv を使えばよい。
同様のツールには、asdf もある

nodenv, pyenv, rbenv,
exenv, goenv, tfenv など

node, python, ruby, elixir, go, terraform など

他には、Docker も多い

188 名前:デフォルトの名無しさん [2022/06/28(火) 13:58:17.02 ID:5S91HeIj.net]
re.subで[]で囲まれた文字列の中を置換するとき、どんな記述をすればよいですか?
re.sub(r'\[.*c.*\], 'x', '[abcabc]abc')
期待する値
[abxabx]abc

189 名前:デフォルトの名無しさん [2022/06/28(火) 14:07:39 ID:N3XtpiKU.net]
>>185
re.sub(r'\[[^\]]*\]', lambda m: m[0].replace('c', 'x'), '[abcabc]abc')

190 名前:185 [2022/06/28(火) 14:31:31.24 ID:5S91HeIj.net]
>>186
多謝!! そしてごめんなさい。良ければ解説を。



191 名前:185 [2022/06/28(火) 14:49:53.04 ID:5S91HeIj.net]
[]の中だけを対象にreplaceしているのは、なんとか分かるんですが、re.sub の第2引数、
lambda m: m[0].replace('c', 'x')
が何をしているのかわかりません(泣)

192 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 14:52:51.94 ID:dX7Zsa+9.net]
マニュアルを読もう
https://docs.python.org/ja/3/library/re.html#re.sub

193 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 14:59:09.76 ID:d3+RKzUY.net]
repl が関数であれば~の下りね、m[g]はm.group(g)と同等
後読みアサーションに固定幅制約がないライブラリなら
面倒なことしなくても(?<=\[.*)c(?=.*\])で済みそうだが

194 名前:デフォルトの名無しさん [2022/06/28(火) 15:42:31.79 ID:5S91HeIj.net]
re.sub(r'\[.*\]', lambda m: m.group(0).replace('c, 'x')
でlambda関数がヒットするたび呼ばれるわけか!!
仕組みは理解できました。

>>190
look-behind requires fixed-width pattern
に阻まれました。

195 名前:デフォルトの名無しさん [2022/06/28(火) 19:31:26.15 ID:mooH0Iqw.net]
m.group はめんどくさい
findall の方が便利

196 名前:デフォルトの名無しさん [2022/06/29(水) 07:52:27.56 ID:9vdu/PbE.net]
>192
re.findall だと re.sub のような仕掛けが利用できなくないですか?
>185 できますか??

197 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 10:56:55 ID:CtIvUBkO.net]
re.findallで[]付きとそれ以外に分けて処理
ちょっと長くなるけど色々応用がききます

# []の中だけreplace
>>>re.findall(r'\[[\w]+\]|[\w]+', 'a[abcabc]abc[abc]')
['a', '[abcabc]', 'abc', '[abc]']
>>>[m.replace('c', 'x') if m[0]=='[' else m for m in _]
['a', '[abxabx]', 'abc', '[abx]']
>>>''.join(_)
'a[abxabx]abc[abx]'

# []の中以外をreplace
>>>re.findall(r'\[[\w]+\]|[\w]+', 'a[abcabc]abc[abc]')
['a', '[abcabc]', 'abc', '[abc]']
>>>[m.replace('c', 'x') if m[0]!='[' else m for m in _]
['a', '[abcabc]', 'abx', '[abc]']
>>>''.join(_)
'a[abcabc]abx[abc]'

198 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 19:29:51.42 ID:CtIvUBkO.net]
完成形できました!記号が含まれていても[]がちゃんと閉じてなくても
ちゃんと閉じているのだけreplaceします
>>186が秀逸だけど、[]で囲まれていない方をreplaceするとなると
途端に難しくなるから、やっぱ私の方法が良いんじゃないでしょうかw

>>>re.findall(r'\[[^\[\]]*\]|[\[\]]*|[^\[\]]*', 'a[abcabc]abc[abc]')
['', 'a', '[abcabc]', '', 'abc', '[abc]', '']
>>>[m.replace('c', 'x') if m and m[0]=='[' else m for m in _]
['', 'a', '[abxabx]', '', 'abc', '[abx]', '']
>>>''.join(_)
'a[abxabx]abc[abx]'
# 文字列に記号が含まれていて[]がちゃんと閉じていなくても大丈夫
>>>re.findall(r'\[[^\[\]]*\]|[\[\]]*|[^\[\]]*', 'a[abcabc]abc[abc$$[abc]')
['', 'a', '[abcabc]', '', 'abc', '[', '', 'abc$$', '[abc]', '']

199 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 22:12:59.69 ID:sd1PgpdM.net]
見通し悪すぎて要件満たしててもレビューで蹴られるコード

200 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 22:25:07.73 ID:TQFqK5Fi.net]
ちゃんと閉じているの定義があやしい
[[abc]とか



201 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 23:13:54 ID:CtIvUBkO.net]
>>196 見通し良いでしょ、角カッコで囲まれた角カッコ以外 or 角カッコ or 角カッコ以外でfindallじゃん
角カッコしか出てこないじゃん、簡潔、シンプル、分かりやすい

>>197 良い指摘、アナタのおかげで改善されました^^
>>>re.findall(r'\[[^\[\]]*\]|[\[\]]*?|[^\[\]]*', 'a[abcabc]abc[[abc]')
['', 'a', '[abcabc]', '', 'abc', '', '[', '[abc]', '']

202 名前:デフォルトの名無しさん [2022/06/30(木) 02:06:34.63 ID:HSayXmFT.net]
kazuyuki

203 名前:デフォルトの名無しさん [2022/06/30(木) 20:55:30.42 ID:QXLJbWFQ.net]
ナンプレのゲーム作りたい

縦横はチェックする方法わかるが
3x3マスの部分だけ配列で考える方法がわからない
↓までは考えたんだが方向性が違う気もする

https://techiedelight.com/compiler/?xIkw


9進法から3進法への変換がベース(ただし3進法は0から始まる)
for x in range(81)
x // 3
x % 3

3桁目に入る場合、1桁目に(3桁目)*3が足される
10 (1,0,0)→(0,3)
4桁目に入る場合、2桁目に(4桁目)*3が足される
28 (1,0,0,0)→(3,0)

204 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 21:46:07.32 ID:0uxZVqVl.net]
簡単なのは3x3を座標系とは別の9マスの配列の配列として保持
置いたとき

205 名前:ノ縦横とは別にその配列へ反映させる
縦横も同じ手法をとると統一感ある
コード上は9マスの配列はクラスにするかも
[]
[ここ壊れてます]

206 名前:デフォルトの名無しさん [2022/06/30(木) 22:01:04.82 ID:zKJ67H3+.net]
5桁8色のhit&blowを造りたい
人間が設問してpythonに解かせたい

207 名前:デフォルトの名無しさん [2022/07/02(土) 07:54:20.82 ID:oFwScFTn.net]
>>201
既存の座標系にこだわらないほうがいいか
ありがとう

ナンプレのゲーム作りたいから手始めにナンプレを解くプログラムの検証をしてたんだけど

https://techiedelight.com/compiler/?b-I8

37行目の部分ってどうなってるの?
再帰関数なのはわかるんだけど、if文の中で再帰してるじゃん

def 関数():
if 再帰関数():
retrun Ture
retrun Flase

208 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 09:00:34.91 ID:Zph8lW04.net]
>>203
再帰だけどやってることは探索のための分岐
rangeの列挙からcontinueされなかった分を順番に分岐してて
呼んだ先で18-20にひっかかると中断して最初の呼び出しまで戻ってる
deepcopyしてるところが富豪的だけどシンプル

209 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 09:39:17.61 ID:EefHjxyZ.net]
>>204
この37行目
if set_num(ndata, idx + 1): return True

これを
set_num(ndata, idx + 1)
に変えてみたんだけど結果変わらなかった
if の中に入れる意味あるの?

210 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 09:44:12.51 ID:EefHjxyZ.net]
答えが出た後も探索しちゃうからそれを止めるための処理ってことか



211 名前:デフォルトの名無しさん [2022/07/02(土) 09:57:44.64 ID:COZLaCzb.net]
ninbe

212 名前:デフォルトの名無しさん [2022/07/11(月) 12:19:00 ID:aiHSnYNz.net]
google colabでcuda使いたい。
良い方法ある?

213 名前:デフォルトの名無しさん [2022/07/11(月) 12:19:00 ID:aiHSnYNz.net]
google colabでcuda使いたい。
良い方法ある?

214 名前:デフォルトの名無しさん mailto:sage [2022/07/11(月) 12:39:20.78 ID:L4tB3bvp.net]
金払ってないのか?

215 名前:デフォルトの名無しさん [2022/07/11(月) 14:48:46.26 ID:aiHSnYNz.net]
>>210
colabはdjangoやfraskができないっぽいからやってない。
もしdjangoが使えるならお勧めあったら教えてほしいっす!
vsかチャームか、atomか・・・。

216 名前:デフォルトの名無しさん mailto:sage [2022/07/11(月) 15:51:00.64 ID:EGP2A4JX.net]
好きなテキストエディタないの?それで基本いいんだけど
拘りないなら拡張とユーザ数からvscodeでいいんじゃない
PyCharmはリファクタまわりが優れているけど必須じゃないし
Atomはオワコン

217 名前:デフォルトの名無しさん mailto:sage [2022/07/11(月) 17:35:44.11 ID:rDGcpouH.net]
vsもマイクロソフト以外のプラグインが信用出来ないからあまり良いとは言えないかなー

218 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 00:04:57.18 ID:eIaiUALg.net]
文字列〜〜〜ID123456.text

みたいなファイルからID123456だけを抜き出したいんだけど、どんな方法がある?
IDの後には必ず数字がきて、桁数はかならず6

219 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 00:06:23.62 ID:eIaiUALg.net]
補足
IDが書かれてる場所はファイルによって異なる

文字列〜〜〜ID123456文字列〜.text
ID123456文字列〜〜〜.text
みたいなときもある

220 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 02:57:47 ID:yBYukR5V.net]
>>214
普通は正規表現でも使うのかな
俺は正規表現使えないからこう書く

from pathlib import Path
p="C:\abc\あいうID1234567XYZ.text"
print("ID" + Path(p).stem.split("ID")[1][:6])



221 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 08:19:17.52 ID:hTnf4I/y.net]
>>215 正規表現を制する者は文字列を制する、他の言語でも仕様はほぼ同じ、覚えて損は無し

>>>import re
>>>s='''文字列〜〜〜ID123456文字列〜.text
・・・ID789012文字列〜〜〜.text
・・・みたいなときもある'''

>>>re.findall(r'ID\d{6}', s)
['ID123456

222 名前:', 'ID789012'] []
[ここ壊れてます]

223 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 10:53:36 ID:eIaiUALg.net]
>>216>>217
ありがとうございます、勉強になります

224 名前:デフォルトの名無しさん [2022/07/12(火) 20:48:55 ID:gRW1mfOh.net]
例外処理ってどう使えばいいんだろ

スクレイピングしてあるサイトのデータ拾いに行って
”データ”がある場合に代入となるんだけど
拾いに行くページによって、その行自体がなくてエラーになってしまうんだよな

if Data[0][0] == ”データ”:
s = Data[0][0]

Data[0][0]がそもそも存在しない時にエラーにならないよう例外処理を使うといい、ぐらいまでは調べたんだけど
書き方がよくわからない

225 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 21:11:11 ID:hTnf4I/y.net]
>>218
より具体的な例としてC:/hogehogeディレクトリ内の全ファイルのファイル名からIDを抜き出します

>>>import pathlib, re
>>>src = pathlib.Path('C:/hogehoge')
>>>list(src.glob('*')) #ファイル確認、この例ではディレクトリ内にファイルが2つあります
[WindowsPath('C:/hogehoge/ID789012文字列〜〜〜.text'), WindowsPath('C:/hogehoge/文字列〜〜〜ID123456文字列〜.text')]

# 以下、ID抜き出し処理
>>>l = [re.findall(r'ID\d{6}', f.name) for f in src.glob('*')]
>>>l
[['ID789012'], ['ID123456']]
>>>sum(l, []) #フラット化
['ID789012', 'ID123456']

226 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 21:56:43.39 ID:UQgGu1pu.net]
>>219
データがなかった場合にどう処理したいのかによって
例外処理にするのかif-elseみたいな分岐処理にするのかを選択する

スクレイピングの場合は対象データがなかったら
何も処理しないとか空文字とかのデフォルト値を入れる場合が多いんだけどそのやり方もいろいろ

if-elseで簡易的な関数にした例
def extract(html, selector, fn, default=""):
return fn(element) if (element := html.select_one(selector)) else default

def extract_text(html, selector, default=""):
return extract(html, selector, lambda x: x.text.strip(), default)

def extract_link(html, selector, default=""):
return extract(html, selector, lambda x: x.get('href'), default)

227 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 22:40:42.84 ID:xLkMA/UK.net]
>>219
スクレイピングでたとえると
途中の要素が取得できないと結局な結果が得られないのでその場でプログラム終了する
とすると、取得失敗の都度ifでsys.exit()と書けはする
ここで終了前になにかメッセージ出力したり上位の関数にエラーで戻ったりアレコレしたいとすると
共通化したくなり例外以外では見通しが悪く書きにくい
そういうのもうまく関数設計すれば書けはするけど
Pythonは標準の操作(Data[0][0] とか)で例外あげる場面が多いので例外に寄せる方が楽

228 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 20:23:40.86 ID:EtP8dxEe.net]
Pythonのトップ・キノコードがキノクエストと言う、Pythonの学習サービスを作った!

229 名前:デフォルトの名無しさん [2022/07/13(水) 22:27:14.03 ID:XjBOe/Qa.net]
s = ’aaa bbb ccc ddd’
という文字列を
s = ’[aaa],[bbb],[ccc],[ddd]’
という文字列にする方法って

s.split()
で一度リストにして
for文内で新しいリストにappendとか使って [ や ] や , をリストの要素として追加して
そのリストをまた文字列に戻すって方法しか思いつかないんだけど、他にあるかな?

230 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 22:38:12.38 ID:ZiN6uKeA.net]
>>224
s = '[' + s.replace(' ', '],[') + ']'



231 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 22:42:11.0 ]
[ここ壊れてます]

232 名前:0 ID:tPrODk9K.net mailto: s='[' + s.replace(' ',']',[') + ']'
これでいけんか?
[]
[ここ壊れてます]

233 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 22:43:26.48 ID:tPrODk9K.net]
かぶったし打ち間違いあるしスマホでコード書くの合わないな…

234 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 22:44:17.92 ID:hJXXd+YV.net]
“,”.join(map(lambda x:f”[{x}]”, s.split(“ “)))
そらで書いてるから動くか分からんが、こんな感じ

235 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 22:46:15.33 ID:tPrODk9K.net]
あと方法としてはjoin使うのとリストをそのまま文字列にするのができる気がする

236 名前:デフォルトの名無しさん [2022/07/13(水) 22:53:13.90 ID:XjBOe/Qa.net]
>>225-229
マジか
思いつかなかった

237 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 23:08:11.77 ID:Hjnw35/j.net]
教科書的に書くとつまらんな
','.join(f'[{x}]' for x in s.split(' '))

238 名前:デフォルトの名無しさん [2022/07/14(木) 10:16:40.49 ID:dxotV0yq.net]
くだらんすれ

239 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 11:38:32.14 ID:3XfxOzel.net]
python使い始めて何年も経つが
‘,’.join(…)書くたびにクソコード書いてんなと思う

240 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 12:12:10.59 ID:mZF8rPll.net]
>>233
よく言われるけど、私はPythonスタイルが好きだな
文字列にするのだから文字列のメソッドであるべき
ちゃんと議論されてRubyスタイルは否定されてんだよね
ttps://www.lifewithpython.com/2017/07/why-python-join-is-string-method.html



241 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 16:24:53.41 ID:NrPRW2+E.net]
>>234
読んだけど結構乱暴な議論だな
> 文字列にするのだから文字列のメソッドであるべき
数字かどうかを判定するisdigit()をboolのメソッドにしろってか?w

242 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 16:42:14.94 ID:VCUQdsgR.net]
>>234
じゃsplitはリストにするのだからリストのメソッドであるべきだなw
ちゃんと議論ww

243 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 17:24:02.64 ID:TABkZ95a.net]
Pythonって何故だかこういうエクストリームな擁護者が他言語に比べて多いんだよなぁ

どの言語にも良い点悪い点はあるのになんでなんだろ?

244 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 17:57:33.90 ID:mZF8rPll.net]
エクストリームな擁護ならRubyの右に出るものはないよ
「日本人ならRuby」「楽しいからRuby」だもん、初めて聞いた時は寒気がしたね
RubyじゃなくてPython選んでマジで良かった、Python最高!

joinもsplitの話ももう出尽くしているから、勝手にググってフンガーって発狂しててよ
私に言われても困っちゃうし、公式で結論出ているのだからそれで理解できないなら素養が無いよ

245 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 18:15:53.09 ID:ObgbLbGZ.net]
あ~あ、みんな寄ってたかって叩くからファビョっちゃったじゃん

246 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 18:18:53.53 ID:ATT2arO1.net]
>>237
pythonのスレ(しかも超初心者用)で言うことですか?

247 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 18:40:20.64 ID:NYmoorKP.net]
超初心者に変な常識を植え付けないように色んな意見のレスがあっていいと思うよ
変だと思う人も居るんだなということを知ってて損は無い
超初心者だと他言語における常識を知る機会も無いし

248 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 19:04:20.42 ID:ji0JpZgM.net]
>>238
> 私に言われても困っちゃうし
これお前の意見だろ?
> 文字列にするのだから文字列のメソッドであるべき
リンク先も公式もそんなアホなことを言ってないぞw

249 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 19:09:23.50 ID:mZF8rPll.net]
>>242
ひゃーファビョッちゃってるぅーw
素養も読解力も無いことをアピールされましても困りますw

250 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 19:51:42.67 ID:/4X/rYOa.net]
>>243
レスするならちゃんと反論したら?
読解力ガーとか低脳が顔真っ赤になりながらレスしても虚しいだけだろw



251 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) ]
[ここ壊れてます]

252 名前:20:59:57.30 ID:jjxIhgjT.net mailto: スレ違い自演連投荒らしが誰何に反応して身元確定したので新スレで書き込み禁止されたのを「いじめ」だと言い出す被害妄想っぷりが狂人クオリティ []
[ここ壊れてます]

253 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 21:03:26.05 ID:mZF8rPll.net]
>>244
IDコロコロ変えるコロ助が何をファビョってんの?w
もう>>238で終了してんだよ、公式読んで理解できないなら反論も糞も無いじゃんw
認めたくないだろうけど、そこは認めようよ、君は低能だから理解できなわけよww
別に理解できなくてもいいじゃん、joinって変だな、何でなんだろう?ってずーっとファビョってればいいじゃん
こういう経緯でこうなってんだよってリンクまで貼ってんのに、それで理解できずにそんなことなーい!って
言われてもさ、公式に文句言えばいいじゃん、ほんと低能だなぁーw 何と戦ってんの?w

254 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 21:41:30 ID:1UfgY23j.net]
>>246
どっちが読解力ないだか...
もう一度書いとくね、

> これお前の意見だろ?
>> 文字列にするのだから文字列のメソッドであるべき

公式もリンク先も関係なくお前がアホなだけw

255 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 21:53:51.76 ID:GadqcTvG.net]
これ読むと>>237に同意せざるを得ないな
https://stackoverflow.com/questions/493819/

256 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 22:25:47.47 ID:mZF8rPll.net]
>>247
うん?じゃあ文字列のメソッドでなくてもいいの?
どーやったらそう読めるんだよwwwwバーーカwww

257 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 22:56:25.17 ID:vHzneFGJ.net]
>>249
まだ恥の上塗りするのかよw
「文字列にするのだから」がアホだって話な
>>235-236 のツッコミみたら普通わかるだろ

258 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 23:02:08.05 ID:53iLOIJP.net]
わざと馬鹿のフリしてんのかな?どっちにしても馬鹿にしか見えないが。

259 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 23:02:36.06 ID:pmXXTX87.net]
読んだけどseqは引数な方が良いってだけで

> 文字列にするのだから文字列のメソッドであるべき
こんなこと書いてない

260 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 23:04:03.42 ID:mZF8rPll.net]
>>250
君が読解力無いのは分かったから、それよりIDコロコロ変えているのバレちゃったねw
>>247の「もう一度書くね」でヘマしちゃったのはやっぱりファビョってるからなの?ww
これ全部オマエだろ、何連投してんだよw顔真っ赤なのどっちだよって話だよ
いやー自作自演バカって本当にいるんだなぁー アホなりに頑張ってるのは分かるけど低能だから
全部台無しだわぁ〜ww アホだからすぐバレちゃうwww
そのIDコロコロ変えるようになった経緯を思い出せよ、まともにやるとすぐ負けちゃうからだろ?
自作自演で勝ってる感が欲しかったけど、それも手に入りませんでしたぁ〜w 恥の上塗りって
自分のこと言ってんのかよww 全部ブーメラン!おまえは民主党かよってw



261 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 01:28:28 ID:wi0x7exo.net]
すごいチー牛顔引き攣らせて笑ってそう

262 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 03:30:42.52 ID:MdZ2tfzQ.net]
>>253
とうとう壊れちゃったw

263 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 07:32:09 ID:mXh/FC5X.net]
なんかこわい

264 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 12:20:14.72 ID:Y2OiW31R.net]
こんな人生終わってそうな社会不適合者でも稼げちゃうのがIT業界なんだよな

人生終わってそうな外見のやつばかりなのに、金が稼げるからジョーカーみたいなのが生まれにくい

265 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 14:11:44.43 ID:78D2/2K4.net]
iterableを定義してそこにjoinメソッドを追加するだけでよかったのにね

joinメソッドは今どきこんな設計する人がいたらすぐ外されても文句言えないレベル

266 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 14:28:12.17 ID:MVHCgXBf.net]
当人ちゃうけどまず >>234 のリンク先読んどこう

267 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 15:21:03.77 ID:cpkuMkfN.net]
俺も当人ちゃうけどそのリンク先読んでも>>258に同意するわ

268 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 15:35:58.33 ID:rlSsskU5.net]
ずいぶんとお利口な超初心者の集まりだこと…

269 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 15:52:36.65 ID:cpkuMkfN.net]
超初心者が質問できるスレであって住人全員が超初心者というわけじゃないよ

270 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 17:56:14 ID:qGSK8RbV.net]
メーリングリストのログ追ってみたが議論らしい議論は全くなかったぞコレ
Tim Petersが案をだして、じゃそれでくらいのノリ



271 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 19:33:17.31 ID:5LwbToQX.net]
悲しいとき〜、悲しいとき〜、不毛な努力をしているアホをみたとき〜

272 名前:デフォルトの名無しさん [2022/07/15(金) 21:59:49.41 ID:Mg+hVTQU.net]
少し内容がずれているかもしれませんが質問させてください。
Windows10で右クリック-新規作成で空のpythonファイル(.py)を作成するようにしたいのですが、
何か方法はありますでしょうか?
下記のURLを参考にしてレジストリを変更する方法を調べて実行したのですが、反映しません。
https://qiita.com/ioComk/items/ab79749b0f0bf05db97e

教えていただきたく。よろしくお願いします。

273 名前:デフォルトの名無しさん [2022/07/15(金) 23:42:53 ID:Fa+NFDEY.net]
>>258
実際bytesとかでjoin相当のことをしようとしたらどうすればいいんだろう?itertools使えばなんとかなりそうだけど

274 名前:デフォルトの名無しさん mailto:sage [2022/07/16(土) 00:03:25 ID:HB6roBeY.net]
__add__かjoin専用メソッドがある前提でひたすらinject
それらが型変換できないケースだと失敗とか

275 名前:デフォルトの名無しさん mailto:sage [2022/07/16(土) 00:23:45.26 ID:fjBrDVen.net]
>>265
少なくとも今試しても記事の通りできた
詳しくどうやったか開示しないと分からん

276 名前:デフォルトの名無しさん [2022/07/16(土) 10:38:02.22 ID:5edRFReA.net]
>>268
詳しくといっても難しいですが
pythonはAnacondaでインストール。
新規pyファイルはサクラエディタと紐づいています。

277 名前:デフォルトの名無しさん mailto:sage [2022/07/16(土) 14:30:48.70 ID:7RINBtm9.net]
>>269
そしたらサクラエディタに関連付けしてるからだろうね
新規作成は関連付けされてるアイコンとファイルタイプ名称で表示される

278 名前:デフォルトの名無しさん [2022/07/16(土) 16:20:01.38 ID:ck4+820Y.net]
なんでこうなるのかわからない


_, *elements , _ = [1, 2, 3, 4, 5, 6, 7, 8]
print(elements) # [2, 3, 4, 5, 6, 7]
print(type(elements)) # <class 'list'>

elements_B = [1, 2, 3, 4, 5, 6, 7, 8]
B = _, *elements_B, _
print(B) # (8, 1, 2, 3, 4, 5, 6, 7, 8, 8)
print(type(B)) # <class 'tuple'>

279 名前:デフォルトの名無しさん mailto:sage [2022/07/16(土) 16:34:54.36 ID:730D9OZt.net]
print(_)してみたら

280 名前:デフォルトの名無しさん [2022/07/16(土) 16:56:27.29 ID:ck4+820Y.net]
ああ、理解したわ

a, b, c = 1,2,3
a=1
b=2
c=3
ってのと変わらんのか

a, *b, c = 1,2,2,2,2,3
a=1
b=2,2,2,2
c=3
みたいなことか



281 名前:デフォルトの名無しさん [2022/07/16(土) 19:51:21.14 ID:GdTpN6Df.net]
bytes で join ってさ
b''.join(bytes_data)
で良いんじゃね

282 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 11:57:25.95 ID:VAtjDotR.net]
2^26倍精度浮動小数点数の最大値
(2^((2^(111-1))-1))*(2-(2^-2147483536))
https://ideone.com/3sxXF1

は計算できるが、

2^27倍精度浮動小数点数の最大値
(2^((2^(115-1))-1))*(2-(2^-4294967180))
https://ideone.com/MDO46W

は誤差が出て計算できない。
何とかならない?

283 名前:デフォルトの名無しさん mailto: []
[ここ壊れてます]

284 名前: mailto:2022/07/17(日) 12:39:58.12 ID:Un2LAdnT.net [ emaxの最大値は999999999999999999みたいだからどうにもならんのでは ]
[ここ壊れてます]

285 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 15:02:05.03 ID:QiBhjgar.net]
emacs

286 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 15:16:14.73 ID:VAtjDotR.net]
>>276
10^10^100000
https://ideone.com/PIILdo

287 名前:デフォルトの名無しさん [2022/07/17(日) 15:22:34.18 ID:QiBhjgar.net]
>>266
>>274
https://ideone.com/cEpoSf
# joinの問題と言うよりもlist(b'hoge')の方に問題が在る訳だな

288 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 15:44:47.39 ID:7GRljLrT.net]
def f(a):
  return a+1

a=[1,2]
print(f(a))

>[2,3]

みたいなことがやりたいんですが、
関数にまとめてデータを渡して処理してもらうようなことはできないでしょうか

本来はf(1),f(2)とするところです
数が多ければforで回すのですが、まとめてどさっと渡したいです

289 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 16:13:54.34 ID:eihDCF0F.net]
>>280
https://www.tech-teacher.jp/blog/python-map/

290 名前:デフォルトの名無しさん [2022/07/17(日) 17:40:51.90 ID:mQpJsc2r.net]
何だこの記事は



291 名前:デフォルトの名無しさん [2022/07/17(日) 17:47:08.08 ID:GTQ/Lt+k.net]
>>279
なるほど。strをバラしてもstrだが、bytesはバラすとintになってしまうということか。
まあ、実用上は問題ないかなあ。というかここを崩すとbytesを1バイトずつバラしてjoinするという殆どしない操作のために、
strとbytesの実用性がかなり失われるよね

292 名前:デフォルトの名無しさん [2022/07/17(日) 17:58:37.99 ID:Fxi+TDuE.net]
>>280
素直にnumpy使う

ではツマランのでこんなのはどうだろう

def matome(func):
__def process(*list_args):
____return [func(*args) for args in zip(*list_args)]

__return process
@matome
def f(a):
__return a+1
a = [1, 2, 3]
print(f(a))

293 名前:280 mailto:sage [2022/07/17(日) 18:36:03.96 ID:jWrWgoZv.net]
なるほど、map関数や*list_argsなどのやり方があるのですね
これはどちらもforよりは軽くなりそうな感じはします

>>284
素直にnumpy、がそもそもわかってないのですが、教えていただけませんか?

294 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 19:23:47.87 ID:pr2Iyzs9.net]
>>284
無駄な処理があるので修正しときますね
def matome(func):
____def process(list_arg):
________return [func(list_item) for list_item in list_arg]
____return process

>>285
ググレば一発で出てきますよー
import numpy as np
a = np.array([1,2,3])
a+1
_.tolist()

295 名前:デフォルトの名無しさん [2022/07/17(日) 19:47:38.44 ID:Fxi+TDuE.net]
>>286
それだとfの引数が増えた時に対応できない

296 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 20:59:15.42 ID:4v0QWrzY.net]
mapと内包表記どっちが軽いんだろ?
a=[1,2]
b=[i+1 for i in a]
これで終わる話ではあるよね

297 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 21:23:00.57 ID:zoulLgXv.net]
話を単純化して話してんだろ
一般的な解があるほうが親切

298 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 21:25:35.67 ID:pr2Iyzs9.net]
>>287
なるほど、f([1,2,3],[4,5,6]) → [5,7,9] とかにするならmatomeはそのままで
def f(*a):
__return sum(a)

で対応できるけども、しかし! 引数が1つの場合が f([1,2,3]) → [2,3,4] であるならば、
引数が2つの場合、f([1,2,3],[4,5,6]) → ([2,3,4], [5,6,7]) となるのが自然ではなかろうか?
であるとするならば、fはリストの各要素の計算でありそのままにして、matomeを改造する必要がある

299 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 21:31:17.15 ID:LbIjTSt1.net]
>>289
どれに対しての話?

300 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 21:38:02.50 ID:Rw0hMsrD.net]
>>290
sumでない場合は?
たとえばa1*a2+a3みたいな一般式もありう



301 名前:るよね []
[ここ壊れてます]

302 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 21:38:57.48 ID:Rw0hMsrD.net]
というか、ただのsumなら普通は関数にぶっこまないよね

303 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 21:43:59.07 ID:pr2Iyzs9.net]
リストの各要素に1足すだけの場合も普通に関数にぶっこまないけどな

304 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 22:12:41.33 ID:pr2Iyzs9.net]
>>292
matomeのデコレータ付けるだけで色んな一般式を適用した関数が簡単に作れるってことね
はいはい、理解しました
fをそのまま可変にすることばかり考えてたわ

305 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 22:43:41.36 ID:Xin01ayH.net]
zipするのは違うと思うけどな

306 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 09:21:19.20 ID:4im9UY7E.net]
>>286
教えてくださりありがとうございます
>>284のほうが拡張性があって気に入りました
やりたいことはできそうです
ありがとうございました

307 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 10:01:23.22 ID:4lWXgehE.net]
f(a,b,c) -> rをリスト用にリフトするなら
f'([(a1,b1,c1), (a2,b2,c2),(a3,b3,c3)…]) -> [r1,r2,r3,…]

f'(([a1,a2,a3,…], [b1,b2,b3,…], [c1,c2,c3,…])) -> [r1,r2,r3…]
にするのは筋が悪い

308 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 10:22:26.91 ID:q/MsDqBP.net]
>>290の完成イメージ
def get_list_items(func):
____def process(*lists):
________ret = tuple([func(item) for item in lst] for lst in lists)
________return ret[0] if len(ret) == 1 else ret
____return process

@get_list_items
def f3(item):
____return item+1

f3([1,2,3],[4,5,6],[7,8,9]) → ([2, 3, 4], [5, 6, 7], [8, 9, 10])
f3([1,2,3],[4,5,6]) → ([2, 3, 4], [5, 6, 7])
f3([1,2,3]) → [2, 3, 4]

なるほど、この場合は可変にする必要性をあまり感じないね
f3([1,2,3]), f3([4,5,6]), f3([7,8,9])って個別に呼べばいいだけだし
>>284の方が断然優れていますわ

309 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 10:36:45.20 ID:E3N1Hbif.net]
個別に呼ぶよりまとめて呼んだほうが処理が軽いんじゃないの

310 名前:名無し募集中。。。 mailto:sage [2022/07/18(月) 10:39:15.32 ID:kc1Sb0dj.net]
FOR文でフォルダ以下のサブフォルダの中のファイルを
拡張子毎に振り分けるプログラムを作ってみましたが
1ファイルを移動するのに1秒くらいかかってしまいます
shutil.move(FFF, KKK) (FFFとKKKは変数)
この文を削除するとものすごく早くなります
どうすれば早くなりますか?



311 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 10:44:27.05 ID:E3N1Hbif.net]
でもあれか、matomeをつけてfを宣言してしまうと、普通にfを使うことができなくなってしまうのか
このへん関数を呼ぶときにmatomeをつけるかどうかで使い分ける方法ないのかな

312 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 10:54:26.68 ID:Tf87Irt3.net]
>>302
ごく素直に、fはデコレーターを付けずそのまま宣言する
matomeを適用する関数はf_matome = matome(f)と定義する

313 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 11:04:03.01 ID:q/MsDqBP.net]
>>302
デコレータ付けた関数はまとめてモジュール化するのが一番良いと思う
list_func.f([1,2,3])

314 名前:デフォルトの名無しさん [2022/07/18(月) 11:36:57.20 ID:1omE+gQa.net]
なんか頭の可笑しいのが劣化版だしまくるスレになってるな

315 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 12:10:19.60 ID:jgot1txW.net]
>>301
srcとdstが同じドライブならos.renameかPath.renameにすれば速くなる
1秒が遅いのかどうかはファイル内容や環境によるから分からない

316 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 12:13:47.35 ID:J9TOF8GR.net]
numpy ぐらい、Python のトップ・キノコードの動画があるのでは?

キノクエストと言う、2千円のサロンも始まった

317 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 12:42:22.47 ID:Ni7oGdeS.net]
>>301
PythonのバージョンやOS、テストしたファイルサイズ書こうよ
Python3.10.5 Windows10は同じドライブならそんな時間かからないよ

318 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 12:47:11.59 ID:q/MsDqBP.net]
>>305
いじけてないでキミも劣化版出せばいいんだよ
格好つけてたら何も

319 名前:できないぞ []
[ここ壊れてます]

320 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 13:41:26.68 ID:Zd8mDGLh.net]
少なくとも>>280をやるためにデコレーターはないわ



321 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 14:39:38.37 ID:lIUF2c+K.net]
>>310
>>289

322 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 14:46:42.16 ID:koL1rSR0.net]
初心者に対して不要な一般化は余計に分かりにくくするだけやろ
やり方自体が御世辞にもいいアプローチとは言えないし

323 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 15:01:53.40 ID:q/MsDqBP.net]
>>310
デコレータみたときは「やられた!」って思ったね
しかも可変、嫉妬してちょっと噛みついてみたけど見事に返り討ち
いやはや、彼のコードはみんなマネした方がいいよ、良いものはどんどん取り入れよう

そういえば、ひろゆきが良く自慢げに言う話を思い出したんだけど、
ゲームを作ってみる授業?か何かで友達が書いたコードがメチャメチャ短かったんだって
上下左右の操作なんだけど、ちょっとした計算で実現していて、それ見たひろゆきが才能の差を
感じてゲームクリエイターをあきらめたとかいう才能の話
それ聞いたときはアホじゃね?良いコードみたらパクればいいだけじゃんって思ったものだよ
たぶんひろゆきはすごくプライドが高くてちょっと躓いただけで諦めちゃうメンタルなんだよね
そんなこんなで出来上がったのがヒマつぶしwとか言って他人の文句しか言わない人間になっちゃった
「頭悪い!」と他人を下げることで自分を慰める毎日、やっぱ諦めずに挑戦するのって大事だなって思いました
そうホリエモンってひろゆきと真逆だよね、ホリエモンは今も色んなことに挑戦している、ホリエモンは輝いているよ

324 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 15:04:25.71 ID:PImFDAtt.net]
>>312
>>297

325 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 15:04:43.60 ID:EPf9iKEG.net]
>>311
一般的?

326 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 15:17:32.88 ID:J9TOF8GR.net]
Ruby とか、関数型言語Elixir では、map が基本

327 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 15:18:04.67 ID:o0lyPM3S.net]
他人の話を否定するだけの奴って何の生産性もないよな
低レベルでもコード提示するほうがよっぽど役に立つわ

328 名前:デフォルトの名無しさん [2022/07/18(月) 15:22:34.62 ID:qwr+PsCM.net]
>>312
参考までに良いアプローチplz

329 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 15:36:01.64 ID:y8tEu6pL.net]
matomeとmap、どっちが速いんだろうか
どっちもforで毎回f呼び出すよりは速そうだけど

330 名前:デフォルトの名無しさん [2022/07/18(月) 15:55:55.10 ID:GojDtZHN.net]
デコレータ
使って観たい
御年頃



331 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 15:59:17.63 ID:LKJtspF0.net]
処理時間測定してみたらmapのほうが2割前後速かったわ

332 名前:デフォルトの名無しさん [2022/07/18(月) 15:59:40.46 ID:GojDtZHN.net]
>低レベルでもコード提示するほうが

ないわ

333 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 16:06:47.73 ID:kISKbyyY.net]
ついでなんで書いとくね
実行時間
forを使ってf呼び出し:1
matome:0.5
map:0.4

334 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 16:21:22.72 ID:ln/vUyrz.net]
>>322
比較対象は
> 他人の話を否定するだけの奴
だぞ、頭大丈夫か?

335 名前:デフォルトの名無しさん [2022/07/18(月) 16:30:53.42 ID:qwr+PsCM.net]
デコレーターに親殺されたニキがおるな

336 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 17:45:39.65 ID:UwLRS3iL.net]
普通に考えてリストに関数をそれぞれ適用させたいならmapが一番シンプルでmapと同意の内包表記が最もPythonらしいのでは?

337 名前:デフォルトの名無しさん [2022/07/18(月) 18:04:13.67 ID:LNL0CNxW.net]
mapと同意?どういうこと?

338 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 18:04:19.00 ID:pfq1SIlO.net]
お盆も近いからデコレータに恨みがある奴も
這い出して来ているんでしょう

339 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 18:08:48.63 ID:PImFDAtt.net]
単にmapの人が、なんでmap使わないんだと言っているだけなのでは?
それがデコレータsageに見えると

340 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 18:23:16.60 ID:q/MsDqBP.net]
内包表記の方が断然好きだな〜、mapはシンプルになる場合もあるけど
今回のようにゴチャる場合もあるんだよな〜
下記はmatomeを自分好みの関数名と変数名に改変したヤツでっす!

def get_lists_items(func):
____# 内包表記版
____def process(*lists):
________return [func(*items) for items in zip(*lists)]
____return process

def get_lists_items(func):
____# map版
____def process(*lists):
________return list(map(lambda items: func(*items), zip(*lists)))
____return process



341 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 18:28:18.32 ID:2ipqvE3v.net]
>>330
なんでzip?
そういう引数リスト専用の関数を作りたいの?

342 名前:デフォルトの名無しさん [2022/07/18(月) 18:40:20.03 ID:qwr+PsCM.net]
>>280の望みは「intを引数に取り計算結果を返す関数を、"シームレスに"リストにも拡張すること」だからデコレーターが適当じゃない?Pythonicかどうかは知らん

343 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 18:50:45.67 ID:0V7pBSnr.net]
デコレータは不適当

デコレータは基本的に元の関数を透過的に拡張するために使う物

def f(a, b, c)をデコレートしても
デコレート前と同じf(a, b, c)で呼び出し可能で
成功時には同じ戻り値を得られるように作る

高階関数ならなんでもデコレータにすればいいわけじゃない

344 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 18:52:28.91 ID:q/MsDqBP.net]
>>331
そのとおり、>>280だけでなく色んなパターンのリスト関数が簡単に作れるのだよ
このデコレータがあればね!

345 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 18:53:15.28 ID:9fYXH/DB.net]
勉強になったわ。
今までPyQtでアプリ作っていたが、@pyqtSlot()がQtデザイナーからのリンクみたいなもんかと思ってました。
すっきりです。

346 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 18:58:21.00 ID:VjQ/Ckj0.net]
デコレーターのメリットがあるならそれ使えばいいけど遅い上に記述量増えるしね
どう見ても>>320だろw

347 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 20:38:42.55 ID:FbOneiqz.net]
forよりは速い

348 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 22:52:23 ID:P7xIx3wJ.net]
今回の話でデコレータが内包表記より優れているという理屈が理解できない
def f(a):
  return a+1

a=[1,2]
print([f(i) for i in a])

これで事足りるでしょ

349 名前:デフォルトの名無しさん [2022/07/18(月) 22:52:35 ID:SFjyzDm9.net]
超絶初心者です。
counter: int = 0 # 他の処理で変わっていく
def test(self):
  user_name = "xxxx"
  if counter > 0:
   now = datetime.datetime.now()
   ..... # 色々処理
now ←ここで nowは参照させたくない、スコープ外にしたい

今だとnow変数はif文が処理されれば値が入ります。
now変数のスコープをif文内だけにするってことはできますか。

350 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 23:05:31.63 ID:2hrGCnNJ.net]
self ということはクラスメソッドだと思うけど
他のメソッドから self.test() を呼べば now は隠蔽される。
もしくは頭で now = None しておいて
if now is not None:
でわけるとか。



351 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 23:13:05.76 ID:1e6Pm9kS.net]
>>330
starmap使えばlambdaいらない

352 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 23:22:42.01 ID:q/MsDqBP.net]
>>341 なるほど、でも内包表記の方が見やすいよね!
from itertools import starmap
def get_lists_items(func):
____# starmap版
____def process(*lists):
________return list(starmap(func, zip(*lists)))
____return process

353 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 23:35:38.05 ID:Yb4pZTqb.net]
>>342
二択ならね
でもどっちも用途に対してアンチパターンだから使わないのが吉

354 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 23:42:11.41 ID:q/MsDqBP.net]
>>343
for文使うのがベストってこと?

355 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 23:54:17 ID:8wpG6nJ0.net]
re.matchで何がマッチしたか知る方法てある?
s = 'ABCDEFGHIJK'
m = re.match(r'ABC|HIJ', s) 'm: <re.Match object;

356 名前:span=(1, 4), match='BCD'>

match='BCD'を取ってきたいのだが、方法てある?


ネットだと()でくくってgroupsでとれて書いてあるけど、
s = 'ABCDEFGHIJK'
m = re.search(r'(BCD|HIJ)', s)
x_text = m.groups(0)
print(x_text)

('BCD',)て表示されるし、x_textはstr型じゃないから文字列操作ができない。

Python 3.9.13です。
[]
[ここ壊れてます]

357 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 00:05:16 ID:pVZms+nG.net]
>>339
pythonにはブロックスコープがないので
if文の中で新しく作成した変数のスコープをif文内だけにすることはできないよ

358 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 00:32:46.32 ID:8NIkYSWg.net]
>>345
groupとgroupsとそれぞれある
group(0)ならstr

359 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 01:22:31.44 ID:XqVlnmi4.net]
>>339
del now でどうでしょうか

360 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 08:41:05.75 ID:UwsMPoKY.net]
内包表記って普通のforと違うみたいだけど、なんでこんなに速いの?



361 名前:デフォルトの名無しさん [2022/07/19(火) 09:10:11.34 ID:mYl9AT7Z.net]
>>340,346,348
339です、どうもありがとうです。言語仕様的にブロックスコープないのはしょうがないですね。
del は試してみたいと思います。

362 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 09:30:11.93 ID:ioxaO2di.net]
a=[f(x) for x in range(100)]
で、今xがいくつのところをやってますとprintする方法はありますか?
forを外に持ってくると処理が遅くなってしまうので避けたいです

363 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 09:32:53.74 ID:Dm4GA3mb.net]
訂正
a=[f(x[i]) for i in range(100)]
にします
iの値は関数に持ち込みません
持ち込むのなら関数でprintできますが、それはなしにします

364 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 10:04:16.93 ID:L7UUhMht.net]
>>352
a = [print(i) or f(x[i]) for i in range(10)]

365 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 10:12:32 ID:zbPEuSRT.net]
CPU処理を高速化するのはmultiprocessingを使うことでできたのですが、
今度はGPUでmodel.fitするほうが遅くてしょうがないです
multiprocessing同様に簡単に速くする方法があれば教えてください

366 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 10:15:51 ID:XqVlnmi4.net]
>>352
fの中でカウント用の変数を持ってインクリメントする

367 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 10:20:19 ID:+zTkD2Kt.net]


368 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 10:20:59 ID:+zTkD2Kt.net]
>>353
できましたありがとう
ところで、どうしてorなんでしょう?

369 名前:デフォルトの名無しさん [2022/07/19(火) 10:23:27 ID:2mzjLS5j.net]
>>332
numpyが最適
わりとまじで

370 名前:デフォルトの名無しさん [2022/07/19(火) 10:30:11 ID:2mzjLS5j.net]
>>345
re.findall



371 名前:デフォルトの名無しさん [2022/07/19(火) 10:31:34 ID:2mzjLS5j.net]
>>349
普通のforと違うから

372 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 10:36:57 ID:COa8jHBw.net]
>>357
print(i)の戻り値がNoneだから、必ずorの右辺を返す

373 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 10:51:26.50 ID:brlHmAiq.net]
>>357
どうして?という直感はまっとうで
読み手の思考が止まるので必ず成功・失敗するケースだとその用法は不適
書き捨て用

374 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 11:07:31 ID:+zTkD2Kt.net]
>>361
なるほど、かしこいですね

>>362
では、どのような書き方が適切なのか教えてください

375 名前:デフォルトの名無しさん [2022/07/19(火) 11:30:53 ID:bdrM7/md.net]
printしたらforと内包表記の違いなんて誤差に見えるほど遅くなると思うがそれはええんか?

376 名前:デフォルトの名無しさん [2022/07/19(火) 11:33:51 ID:RISkfx3J.net]
forと内包表記で速さに違いが出るのはなぜですか?

同じコードをなぜ生成しないんですか?

377 名前:デフォルトの名無しさん [2022/07/19(火) 11:37:38.74 ID:856tCJOd.net]
内包表記でプログレス挟んで遅いのは嫌とかバカの極み
可読性考えて普通のforで回せ。 つか速度測ってみろ。大差ねえわたぶん

[(f(x[i]), print(i)) for i in range(10)]

378 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 12:00:14.16 ID:GEUE7oT9.net]
超初心者を馬鹿にしないと精神の安定が保てない

379 名前:ゥわいそうな人 []
[ここ壊れてます]

380 名前:デフォルトの名無しさん [2022/07/19(火) 12:19:44 ID:192s6b8D.net]
馬鹿にされるような日本語使いする自称超初心者が悪い



381 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 12:24:07 ID:AricPVYV.net]
>>349
比較したコードを出してみて

382 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 12:31:03.42 ID:ZGMRA42U.net]
>>351
print等の副作用を伴う処理を繰り返す場合は
内包表記ではなくforを使うのがpythonにおける暗黙の了解
値の加工生成と入出力を分けて書くのはpythonに限らずプログラミングの基本

383 名前:デフォルトの名無しさん [2022/07/19(火) 12:45:56.52 ID:2mzjLS5j.net]
>>363
a = [[print(i), f(x[i])][1] for i in range(10)]

384 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 12:59:28.59 ID:COa8jHBw.net]
カウント1毎にプログレス表示すると内包表記使う意味ないかもしれんが、
リストへの追加100毎
カウント10000000毎にプログレス
で時間計測してみた

内包表記
a = [(i%10000000 or print(i), str(i))[1] for i in range(100000000) if i%100 == 0]
8秒

forループ
a=[]
for i in range(100000000):
____if not (i%10000000):
________print(i)
____if i%100 == 0:
________a.append(str(i))
20秒

行儀悪い書き方だが、条件しだいで効果はある

385 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 13:09:56.89 ID:ieHxnJ8/.net]
>>365
ループ内でpythonのインタプリタで実行される処理とコンパイル済みのCのコードで実行される処理の行き来が減れば速くなる

内包表記は式しか書けないのとlist.appendのようにインタプリタがメソッドを探す処理が不要にになることが多いので単純な式評価だと内包表記がやや速い結果になりやすい
(例えばループの外でappend = outlist.appendとしてループ内ではメソッドじゃなく関数呼び出しにすれば多少速くなる)

ただforより内包表記が速いから内包表記を使うというのは使い方が間違ってるか使う言語を間違ってる

386 名前:デフォルトの名無しさん [2022/07/19(火) 13:35:02 ID:RISkfx3J.net]
>>373

ありがとうございました。
処理系が書き方の違いを吸収して同じ(速い)コードを生成することは難しいのでしょうか?

387 名前:デフォルトの名無しさん [2022/07/19(火) 13:41:20 ID:2mzjLS5j.net]
8秒の方はstr()呼ばれる回数も少ないんじゃね
やり直し

388 名前:デフォルトの名無しさん [2022/07/19(火) 13:45:55 ID:e6PA2QPH.net]
内包表記を配列操作以外に使うな(関数叩くな)って書いてるのeffective pythonだっけ

>>374
速いコードって、たとえば進捗吐かないとか、無駄な評価式やループしないとか、そうやって作ってくんよ
鈍重な書き方しても速いのがいいっていうなら、もう根本的にpythonは遅い言語だよ

389 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 13:57:38.21 ID:COa8jHBw.net]
>>375
str()呼ばれる回数は同じじゃね
でも、i%10000000の回数違ってた

内包表記
a = [(i%10000000 or print(i), str(i))[1] for i in range(100000000) if i%100 == 0]
8秒

forループ
a=[]
for i in range(100000000):
____if i%100 == 0:
________if not (i%10000000):
____________print(i)
________a.append(str(i))
12秒

390 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 14:02:29.41 ID:6WNMcjy9.net]
>>377
printしない場合は?



391 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 14:08:53.16 ID:COa8jHBw.net]
>>378
str(i)呼ぶ回数は、両方 100000000 / 100 = 1000000回

392 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 14:12:29.27 ID:6WNMcjy9.net]
>>379
うんだから何秒なの?

393 名前:デフォルトの名無しさん [2022/07/19(火) 14:12:50.87 ID:Xr1AbmZQ.net]
結局書きづらい、読みづらくてミスしちゃうんだから
普通のforループの方が総カロリー低いと思います

394 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 14:17:28.28 ID:COa8jHBw.net]
>>380
printしない内包表記
a = [str(i) for i in range(100000000) if i%100 == 0]
8秒

395 名前:デフォルトの名無しさん [2022/07/19(火) 14:19:06.99 ID:RISkfx3J.net]
行列プログラマーという本では、集合の表記に近い内包表記のほうが分かりやすいと書いてあります。
実際、もっぱら内包表記を使っています。

396 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 14:40:11.78 ID:HHxHBIIc.net]
>>382
つまりprintは時間がかかってないわけだよね
で、普通のforより内包表記のほうが速い分だけ速くなってると
それは何の実験なんだい?

397 名前:デフォルトの名無しさん [2022/07/19(火) 14:49:08.31 ID:Dd2ngZhk.net]
内包表記でもインデントしていいんですよ
可読性高めていけ

398 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 14: ]
[ここ壊れてます]

399 名前:52:21.67 ID:COa8jHBw.net mailto: >>384
進捗を大雑把に表示したい場合、内包表記でprintするのも有りという実験
俺は開発中以外では使わんけど
完成したコードにこんなの書いてたらやだ
[]
[ここ壊れてます]

400 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 15:07:57 ID:COa8jHBw.net]
printは時間がかかってないのではなく回数を少なくしてる
他の人が指摘してるように、進捗を細かく表示したい場合、内包表記もforループも時間差はほぼ無くなる
printはやはり時間がかかる



401 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 15:17:30 ID:kjnFmzM9.net]
時間差は4秒で変わらないんじゃないの
printに時間がかかるから4秒の割合が小さくなってほとんど意味ないじゃんってことでしょ

402 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 15:40:36.31 ID:COa8jHBw.net]
>>388
そういうことです
進捗を細かく表示したい場合、ほとんど意味ないってこと
完成状態で内包表記にprintはおすすめできない
テスト中に内包表記にprintを入れるのはお好みで

403 名前:デフォルトの名無しさん [2022/07/19(火) 15:40:46.26 ID:bdrM7/md.net]
a=[]

a.append(str(i))
でなくて、
a=[0]*100000000/100

a[i]=str(i)
だとますます変わらなそう

404 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 16:01:31.52 ID:Ao+3qyOr.net]
>>377
そんな差でる?
むしろforループのほうが3~5%程度速いんだが

405 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 16:03:31.06 ID:/jGGKkxp.net]
>>389
であれば、可読性より速度を重視する場合、内包表記にprintを入れたほうがいいということですよ
意味は4秒ぶんあるわけです

406 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 16:18:19 ID:COa8jHBw.net]
>>391
こちらは化石PCで測定したので。
誤差じゃない充分な時間差が開く程度にrangeの値を大きくしてみて

407 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 16:28:38.52 ID:L7UUhMht.net]
そもそも内包表記は可読性良いよ、ギュッと1行にまとまりつつも分かりやすい
for文見る方がダルイわ、内包表記にできないものを仕方なくfor文にしているよ
慣れだよ慣れ、最近だと二重ループの内包表記も全然苦じゃない、美しいとさえ感じる

408 名前:デフォルトの名無しさん [2022/07/19(火) 16:31:26.97 ID:RISkfx3J.net]
>>394

ですよね。集合論的な表記に似ています。

409 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 16:40:41.64 ID:wHnodxSw.net]
forループのほうが内包表記より速いなんてことあるの?

410 名前:デフォルトの名無しさん [2022/07/19(火) 18:36:04.44 ID:paq2dZhq.net]
それこそ、内包表記で呼ぶ関数の回数をカウントして確認たいならデコレーターとかでtqdm使うようにした方が良くないかな?
内包表記の中をごちゃごちゃにするのは基本的には避けた方がいいと思うんだよな。
シンプルに書くために内包表記を使ってるのであって、Zコンビネーターとか使ってへんなことするなら普通のforとかにした方がいいよね
遊びとしては否定しないけどね



411 名前:デフォルトの名無しさん [2022/07/19(火) 19:06:26 ID:xA31LZ9f.net]
code golf で言うと
打数多い方が自慢してるような
糞な流れ
もうやめませんか

412 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 19:27:22 ID:w0DVg8Bk.net]
自治厨久しぶりに見た

413 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 19:55:09.64 ID:z/It7jZN.net]
>>397 に一票
こういうのこそデコレーターの出番だと思う

414 名前:デフォルトの名無しさん mailto:sage [2022/07/19(火) 20:20:06.84 ID:n8OVMrsb.net]
つまり具体的にはどういうこと?

415 名前:デフォルトの名無しさん [2022/07/19(火) 22:29:55.85 ID:Dd2ngZhk.net]
一行にまとめた内包表記より、インデントした内包表記の方が可読性が下がる

416 名前:デフォルトの名無しさん [2022/07/19(火) 22:32:42.31 ID:Dd2ngZhk.net]
の?

417 名前:デフォルトの名無しさん [2022/07/19(火) 23:31:48.45 ID:paq2dZhq.net]
>>401
こんな感じ
imgur.com/a/UsKhUuD

tqdm使いたくなかったらpbarの初期化やpbar.updateの代わりにカウント変数とprintでも使っておいて

418 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 00:25:50.52 ID:sLuJt4wx.net]
>>404
rangeの100で100回ループさせるから
tqdm_wrapperに100を渡してるんだよね?

419 名前:デフォルトの名無しさん [2022/07/20(水) 01:30:58.07 ID:aFoX4Dx/.net]
>>405
そうそう、その辺はもっといい方法があるかもしれないが、ちょっと思いつかなかったのでそんな感じ。
回数が決まってないときは棒グラフは出せないけど1秒に何イテレーションできてるとかはわかると思う。

420 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 03:27:59.73 ID:vTCCBmkT.net]
@tqdm_wrapper(total_count)ってできればいいんだけど、そういうのは無理なのかな?



421 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 06:19:50.33 ID:uVwid/eb.net]
printなしでやってもforループのほうがほんの少し内包表記より速いんだけどなぜだろう

422 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 07:14:30.03 ID:vC0V/6Za.net]
PEP
pythonは描き方がひとつ(キリっ

423 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 07:58:53 ID:rNnuNQ69.net]
>>408
計測結果は何秒だったの
メモリが少なくてスワップ発生してるとか?

424 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 09:48:14.82 ID:53g3nF67.net]
Pythonのネット記事読んでるとAnacondaを入れてどうこう、というチュートリアルばっかりあるんだけど
肝心のAnacondaはどういう状況下で使うものなのか、説明省かれててよくわからないんだよな

ライブラリとpythonのバージョンが合わないと使えないことがあるからそれを避けるため、って認識でいいの?
不具合無かったらAnacondaつかわなくていいのかな?

425 名前:デフォルトの名無しさん [2022/07/20(水) 11:17:28.13 ID:wWIP1AbD.net]
anacondaはAnaconda社の計算科学のための商品で学生の方など教育や学術目的、または趣味の用途であれば無償でご利用いただけます

入門書とかで使われてるのは、色々と最初から入ってるから開発やデプロイ先の環境構築を解説しなくて済むからだよ
anacondaに依存しないやり方覚えた方が楽っていうか、むしろその方が必須になる

426 名前:デフォルトの名無しさん [2022/07/20(水) 11:22:56.97 ID:wWIP1AbD.net]
退屈なことは Python にやらせようを書いた人も同じような事言ってた

427 名前:デフォルトの名無しさん [2022/07/20(水) 11:27:11.69 ID:wWIP1AbD.net]
アナコンダを否定してるわけじゃないよ。素晴らしい商品ですし、選択肢の一つとして選べるのは良いことだと思います

428 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 11:55:51.53 ID:L6JCmqAC.net]
あえて、IronPythonに手を出して茨の道をw

429 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 13:27:25 ID:SSFD7/IV.net]
今Twitterなどで話題になってる仮想通貨のbotを作りたいです

年間で1億円ぐらい稼ぐには何の勉強すればいいですか?

430 名前:デフォルトの名無しさん [2022/07/20(水) 13:38:38 ID:pMrjs46b.net]
経済と仮想通貨



431 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 13:38:57 ID:ShYgaPwJ.net]
デッサン力

432 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 14:14:10.83 ID:hOJNeZde.net]
これからのキーワードは仮想環境
anacondaもIronPythonもPyTorchも欲しい環境をコンテナ一発でドーン!
ってやりたいからDocker勉強しようかと思っている

433 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 15:00:19.03 ID:qJwz0nM8.net]
ぶっちゃけ
docker の anaconda 版とか
docker の 標準 python 版とか
そういうので良いんだわ
解説書あっても各々インスコ時にバージョンガーとかおま環とか
だるいサポートにみんな疲れたんだろ

434 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 15:29:51 ID:djIfGOxS.net]
windows10 + python3.9 では生ソケットを扱う事ができないのでしょうか

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
ソケット作成のとこでエラーがでます
[WinError 10013]
アクセス許可で禁じられた方法でソケットにアクセスしようとしました
とエラーメッセージがでます

ログインしているユーザはadministratorの権限も持っています

435 名前:
英語のサイトで調べるとprohibitというワードもありました
識者の方ご指導願います
[]
[ここ壊れてます]

436 名前:421 [2022/07/20(水) 15:40:01 ID:djIfGOxS.net]
421です
コマンドプロンプトを管理者権限で実行する事が必要であると学びました

437 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 16:51:36.92 ID:rnlV1uw8.net]
anacondaはまああれだけどspyderはなんか好きだ

438 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 17:04:37.61 ID:rNnuNQ69.net]
a=[]
append = a.append
for i in range(30000000):
____append(i)
のように、メソッドをあらかじめ変数に入れると高速化できるという情報をよく見かけるけど本当なの?
何回計測しても誤差程度の差しかなく、速くなってるのか確認できないんだけど

439 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 17:27:44.50 ID:Lx4+ezqp.net]
https://wandbox.org/permlink/xE2gHLprP4RKuqf0

440 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 17:49:55.19 ID:ZOYHOoJs.net]
このくらい最適化してよと思っちゃうんだが無理なんかな?



441 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 17:50:04.72 ID:rNnuNQ69.net]
>>425
ありがとうございます
計測方法のミスに気づきました
関数を作らず計測していたので、append = a.append のところがグローバル変数になって遅くなり、
その結果、高速化していなかったようです

442 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 18:01:43.03 ID:D9vTvaEa.net]
これの出所は概ね公式Wikiだけど、2が全盛期に書かれた物なので
https://wiki.python.org/moin/PythonSpeed#Take_advantage_of_interpreter_optimizations

属性を検索したり、インスタンスを紐付けてバウンドメソッドを返す様な
https://docs.python.org/ja/3.7/howto/descriptor.html#invoking-descriptors
こういった機構を回避するので多少速くなるけど、現行のPythonでは比較的小さい
ローカル変数がグローバル変数より読み書きが速いのも実際そう

>>426
型がないダックタイピングな以上は都度解決するしかないであろうなぁ…

443 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 18:58:09.37 ID:QlVkmKZp.net]
anaconda入れたけど、avastがなぜかウイルス扱いしていて、anaconda立ち上げるとすぐ落ちて使えなくて、あきらめてvscにした

444 名前:デフォルトの名無しさん [2022/07/20(水) 20:09:39 ID:eRSlBPBh.net]
pythonで質問なんですがコンソールに表示される数値の横に量を表したバーを表示させたいのですが

300 ■■■
20 ■
150 ■■

ぐぐっても進捗率をあらわすプログレスバーのtqdmが出てきてしまいどうやって数字に連動した量を表示させるのかわかりません
何かヒントがあればお願いします

445 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 20:21:54 ID:hglVd79x.net]
pbar.update(1) ←これの数字をいじる

446 名前:デフォルトの名無しさん [2022/07/20(水) 21:24:08.50 ID:npea7ePl.net]
>>431
ありがとうございます、おかげさまでなんとかできそうです
素敵なお方だ

447 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 22:26:00.73 ID:rNnuNQ69.net]
>>432
「tqdmが出てきてしまい」て書いてるので、静的に表示するだけだからtqdmは使いたくないのかと思った

静的に表示したい人用おもちゃ
def print_bar(n, max, expansion):
____box = "▏▎▍▌▋▊▉█"
____rate = (n * expansion * 100) // max
____bar = "" + box[7] * (rate//8) + box[rate%8]
____print(bar)

print_bar(50, 100, 1)
print_bar(55, 100, 1)
print_bar(100, 100, 1)
print_bar(100, 200, 1)
print_bar(100, 200, 3)

今書いた書いたらちゃんとテストしてない

448 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 22:32:08.75 ID:rNnuNQ69.net]
>>433
バグってた
すぐ直します

449 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 22:42:20.27 ID:rNnuNQ69.net]
def print_bar(n, max, expansion):
____box = "█ ▏▎▍▌▋▊▉"
____rate = (n * expansion * 100) // max
____bar = "" + box[0] * (rate//8)
____if rate%8 != 0:
________bar += box[rate%8]
____print(bar)
print_bar(0, 100, 1)
print_bar(1, 100, 1)
print_bar(2, 100, 1)
print_bar(3, 100, 1)
print_bar(4, 100, 1)
print_bar(5, 100, 1)
print_bar(6, 100, 1)
print_bar(7, 100, 1)
print_bar(8, 100, 1)
print_bar(50, 100, 1)
print_bar(55, 100, 1)
print_bar(100, 100, 1)
print_bar(100, 200, 1)
print_bar(100, 200, 3)

450 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 22:53:43.67 ID:JXXlHdvc.net]
Ruby on Rails なら、VSCode, WSL2, Vagrant, Virtual Box でも出来るけど、
Python は依存モジュールが多いから、Docker が普通

自宅ではじめるDocker入門[改訂版]、浅居 尚、2021/4

この本が最も簡単



451 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 23:38:31.06 ID:hOJNeZde.net]
>>435
barだけだとやっぱり分かりにくいですね数字も必要だと思いました
もしくはbarの到達位置の表示が必要

452 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 23:59:09.30 ID:hOJNeZde.net]
>>436
Dockerの書籍でているのね、レビュー評価もメチャいいじゃん
でもネット上に公式?の日本語ドキュメントがあるからこれでいけるんじゃないかな??どうかな?w
ttps://matsuand.github.io/docs.docker.jp.onthefly/
ttps://docs.docker.jp/index.html

453 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 01:17:04.66 ID:dz51dLzk.net]
>>437
値、開始位置、最大到達位置を表示しました

def print_bar(n, max, expansion):
____box = "█ ▏▎▍▌▋▊▉"
____rate = (n * expansion * 200) // max
____bar = "" + box[0] * (rate//8)
____if rate%8 != 0:
________bar += box[rate%8]
____print(f"{n:{len(str(max))}d} | {bar:{expansion*25}s} |\n")
print_bar(8, 100, 4)
print_bar(50, 100, 4)
print_bar(90, 100, 4)
print_bar(100, 100, 4)

454 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 03:59:00 ID:c34Fgnuj.net]
PythonでAI作り始めてから電気代が2000円以上高くなった

455 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 08:50:46 ID:nja0E+A7.net]
>>439
すばらしい全部入っている! けども200とか25とかなんだろう?ああ小数点がイヤだから2倍しているのか
となったので、計算式が分かるようにした方が可読性とメンテナンス性があがると思いました
以下計算式を明示した改良版

import math
def print_bar(n, max, expansion):
____box = "█ ▏▎▍▌▋▊▉"
____rate = (n * expansion * 100) // max
____bar = "" + box[0] * (rate//8)
____if rate%8 != 0:
________bar += box[rate%8]
____print(f"{n:{len(str(max))}d} |{bar:{math.ceil(expansion*100/8)}s}|\n")

456 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 11:05:44.45 ID:nja0E+A7.net]
さらに良くなった
import math
def print_bar(n, max=100, expansion=1):
____box = "█ ▏▎▍▌▋▊▉"
____rate = (n * expansion * 100) // max
____bar = box[0] * (rate//8)
____if rate%8 != 0:
________bar += box[rate%8]
____print(f"{n:{len(str(max))}d} |{bar:{math.ceil(expansion*100/8)}s}|\n")

457 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 19:29:07 ID:dz51dLzk.net]
やっぱりmath.ceil使ったほうがいいよな
importを減らしたがる癖が抜けず2倍してしまった

458 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 20:09:26.68 ID:dz51dLzk.net]
最終型
import math
def print_bar(n, max=100, expansion=1, *, cr=2, sep="|", prefix="", suffix="", unit=""):
____box = "█ ▏▎▍▌▋▊▉"
____rate = (n * expansion * 100) // max
____bar = box[0] * (rate//8) + box[rate%8] * bool(rate%8)
____print(f"{prefix}{n:{len(str(max))}d}{unit} {sep}{bar:{math.ceil(expansion*100/8)}s}{sep}{suffix}" + "\n"*cr, end="")

459 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 21:25:09.45 ID:nja0E+A7.net]
>>444
すんごーい! crの初期値は1が良いかな、それ以外は全部気に入りました

460 名前:デフォルトの名無しさん [2022/07/22(金) 00:46:45.54 ID:LN4IvGf8.net]
>>444
ありがとうございます



461 名前:デフォルトの名無しさん [2022/07/22(金) 11:32:26.12 ID:emgmw9dd.net]
>>421-422
runas

462 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 14:53:38.79 ID:hAgOKfi8.net]
>>444
数値を非表示にするオプションつけ忘れた

463 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 17:03:59.46 ID:t+dBeaSp.net]
>>448
そのオプション名を何にするかでセンスが問われる
num, display_num, meter, bar_value, ..etc
さあ、キミのセンスを見せてくれ!

464 名前:デフォルトの名無しさん [2022/07/22(金) 17:47:22.62 ID:iaUAG8EO.net]
ここはきみの日記帳じゃない

465 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 19:07:18.92 ID:t+dBeaSp.net]
>>450
関数や変数の命名はとても重要だよ? 端的で分かりやすくする必要がある
それが可読性やメンテナンス性をあげるわけなのだよ
プログラミングは名前付けであると言われる所以はそういうことなのだよ

今回の数値の非表示オプション名は非常に難しい、私的にはdisplay_valueがベストかな?
と考えつつも彼の意見も参考にしたいわけだ、もちろんtqdmではどうしているのかな?
と調べたりもした、tqdmではbar_formatで書式を指定できるみたいだね
その中で数値部分はpercentageという変数名のようだ
print_barはunit指定ができるわけで%表示固定ではないから、percentageは適切ではない
と考えると・・ね?難しいでしょ? 皆の意見も聞きたいじゃん!

466 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 19:43:18.38 ID:bpOnuI9e.net]
名前は重要。
開発が終わった後でも、コードを見る事があるから

プログラミングの3割の時間は、分かりやすい名前を考えること

簡潔に説明されている名前なら、
処理を詳しく見なくても理解が進むので、バグも減って高品質になる

リファクタリング・メソッド化などは、Rubyist の基本

467 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 19:52:25.71 ID:PdYjn4LX.net]
メソッドが長すぎると名付けが難しいから結局は短く作るのがいいのか?
でもそれだと分割しすぎとか言われそうだし

「汎用的、抽象的」な名前がいいのか「汎用的な名前を避けて具体的」にすべきなのか

468 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 19:52:35.56 ID:t+dBeaSp.net]
>>448
でけた! tqdmのbar_formatを採用
これで数値の表示/非表示はもちろん色々柔軟に対応できる

def print_bar(n, max=100, expansion=1, *, bar_format="{prefix}{num}{sep}{bar}{sep}{suffix}",
____________ unit="%", sep="|", prefix="", suffix="", cr=1):
____box = "█ ▏▎▍▌▋▊▉"
____rate = (n * expansion * 100) // max
____bar = box[0] * (rate//8) + box[rate%8] * bool(rate%8)
____bar = f"{bar:{math.ceil(expansion*100/8)}s}"
____num = f"{n:{len(str(max))}d}{unit}"
____print(bar_format.format(**locals()) + "\n"*cr, end="")

469 名前:452 mailto:sage [2022/07/22(金) 21:05:54.53 ID:bpOnuI9e.net]
例えば、Ruby のモジュール関数の名前なら、
cancel_button_label_text
apply_or_cancel_button

インスタンスメソッド名なら、
obj.suspended?

末尾の? で、戻り値がbool 型だと表現できる

470 名前:デフォルトの名無しさん [2022/07/22(金) 21:06:08.18 ID:aVBkeTN2.net]
>454
print_bar.update ってできない?



471 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 21:29:43.19 ID:t+dBeaSp.net]
>>456
tqdmのupdateみたいなことができるかってこと? クラス化すればできるよ
ああ、bar_formatとか呼び出すごとに変数指定するのはアホだよね
クラス化してインスタンス生成時にbar_format指定した方がいいよね

472 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 22:27:04.77 ID:t+dBeaSp.net]
クラス化できたけど、関数バージョン(>>444)の方が好きかも

class print_bar:
____def __init__(self, max=100, num_format="{num:{max_digit}d}{unit}",
____________ bar_format="{prefix}{num_format}{sep}{bar}{sep}{suffix}",
____________ unit="%", sep="|", prefix="", suffix="", cr=1):
________self.box = "█ ▏▎▍▌▋▊▉"
________self.max = max
________self.max_digit = len(str(max))
________self.num_format = num_format
________self.bar_format = bar_format
________self.unit = unit
________self.sep = sep
________self.prefix = prefix
________self.suffix = suffix

____def update(self, num, expansion=1, cr=1):
________rate = (num * expansion * 100) // self.max
________num_format = self.num_format.format(num=num, **self.__dict__)
________bar = f"{self.box[0] * (rate//8) + self.box[rate%8] * bool(rate%8):{math.ceil(expansion*100/8)}s}"
________print(self.bar_format.format(bar=bar, **dict(self.__dict__, num_format=num_format)) + "\n"*cr, end="")

p = print_bar()
p.update(70)

473 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 22:57:55 ID:oFTCo3Qt.net]
日記帳で試行錯誤して、結論が出てから書き込んでください

474 名前:デフォルトの名無しさん [2022/07/22(金) 23:49:56.07 ID:XYg2RZCf.net]
boxサーバーに上がっているExcelやcsvのデータってpythonで読み取ることできるのでしょうか?
https://app.box.com/file/xxxxxxxxxxxxxのようなURLを指定して
ファイル内のデータを読み込みたいのですがうまくいきませんでした。

475 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 06:43:50.22 ID:NAv7kQq5.net]
beautifulsoupでいったんダウンロードすれば?

476 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 06:53:36.23 ID:DC0Z ]
[ここ壊れてます]

477 名前:GSft.net mailto: ども、print_barの作者です。こんな短いプログラムに作者もくそもないですが・・・
上記コードを参考させてもらい考えました。私ならこうします
import math
def print_bar(num, max=100, expansion=1, *, prefix="", display_num=True, unit="", sep="|", suffix="", cr=1):
____box = "█ ▏▎▍▌▋▊▉"
____rate = (num * expansion * 100) // max
____bar = f"{box[0] * (rate // 8 ) + box[rate % 8] * bool(rate % 8):{math.ceil(expansion * 100 / 8)}s}"
____num_formated = f"{num:{len(str(max))}d}" * display_num
____print(f"{prefix}{num_formated}{unit} {sep}{bar}{sep}{suffix}" + "\n"*cr, end="")
display_valueのほうがわかりやすいけど長いから好きじゃない。何度も書く名前ならdisp_numに短縮するかも。
bar_formatは付けたい人が自分でつければいい
最低限の機能が付いていて、可読性・カスタマイズの容易性を考えるとこんなところでしょうか
[]
[ここ壊れてます]

478 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 07:10:57.00 ID:DC0ZGSft.net]
>>462
formattedです。恥ずかしいミス

479 名前:デフォルトの名無しさん [2022/07/23(土) 07:22:10.22 ID:ytdxYh/D.net]
なんか昨日のアップデートでWindows TerminalがIME勝手にON(英字入力)になる。とっても面倒くさい。
OFFにする方法ない?

480 名前:デフォルトの名無しさん [2022/07/23(土) 09:23:17.53 ID:bR39w9BX.net]
>>459
++
ほんそれ



481 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 09:48:06.05 ID:lkZCuVJ2.net]
>>462
おつかれちゃーん、なかなか楽しめたし勉強になったわ
日記帳とか言ってる奴等も参加すれば良かったのに、実際にコード書かないと勉強にならないぞっ!w

482 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 10:20:26.06 ID:zqWGCIwO.net]
コード出してあれこれやるのはいいと思うけどここまで引っ張るのはさすがにスレチだわな
こっちへ行けよ

Pythonのお勉強 Part67
https://mevius.5ch.net/test/read.cgi/tech/1653540315/

483 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 10:32:50.67 ID:lkZCuVJ2.net]
>>467
引っ張るとスレチって意味が分からんw そっちのスレも同じじゃん何が違うのよ?
うーん、、もしかして自分が質問したレスが埋もれちゃったとか?
それは関係ないよ、単に答えられるor答える人が居なかっただけで我々のせいではない

484 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 10:41:14.21 ID:iHVC6bwv.net]
我々…

485 名前:デフォルトの名無しさん [2022/07/23(土) 10:43:44.38 ID:bR39w9BX.net]
自演で自分のレス褒めてるレスとか観ると
他人事乍ら哀しくなるな

486 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 10:59:03 ID:zqWGCIwO.net]
>>468
スレタイも読めないのか?
ここは超初心者用な
>>430はスレタイに沿ってるけどその後print_bar でグダグダ書くのは違うだろ

487 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 11:09:30 ID:QCnlUATD.net]
スレタイに日記帳って書いてあるスレで試行錯誤すべきだったよな

488 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 11:18:41.28 ID:lkZCuVJ2.net]
>>471
うん?>>433からすでにスレチってこと?
コード出してあれこれは良いとか>>467に書いてるし
何が言いたいのか意味が分からん、どこからスレチなのかレス番号かけや

489 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 11:21:00.46 ID:Q9mI3iQv.net]
しつこい

490 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 11:29:25.91 ID:zqWGCIwO.net]
>>473
スレチかどうかの閾値なんて人によって違うからここからスレチなんて言うことはできない
それでも「ここまで引っ張ったら」多くの人がスレチって感じるだろって話



491 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 11:31:58.41 ID:lkZCuVJ2.net]
>>475
ほえぇぇぇぇえぇぇええええええええ〜〜〜〜〜〜〜〜!!
ボクちゃんが気に食わなかったからスレチですってことですかぁああああ???
びっくりしましたぁぁああああああwwww

492 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 11:38:20.58 ID:3Ek+JvxJ.net]
3回までよくて4回目がだめなんてことはない
3回でだめな人もいるし、4回はアウトだろうという人もいる
だが10回までくるとさすがに全員がアウトと感じる
そういう状況

493 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 11:49:34.23 ID:lkZCuVJ2.net]
>>477
うん?10回は全然良いよ、っていうかスレに沿っているなら何回でもええがな
全員がアウトと感じるとかウソつくなよw 君たちのお気持ちの表明がまさにスレチw
なぜならPythonと全く関係ございません!これが完璧なスレチの指摘というものだよ
お気持ちとか何だよww 脳みそ付いてんのか?w

494 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 11:49:41.79 ID:Py93vpAm.net]
>>476
> ボクちゃんが気に食わなかったからスレチですってことですかぁああああ???
ダメな理由は前に書いてあるだろ...

> スレタイも読めないのか?
> ここは超初心者用な

> びっくりしましたぁぁああああああwwww
お前の無能さにこっちがびっくりだよw

495 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 11:51:51.55 ID:NAv7kQq5.net]
>>478
そう、君たち、この言葉がすべて
おまえだけだよいいと思ってんのは

496 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 11:52:41.39 ID:lkZCuVJ2.net]
>>479
ダメな理由は>>475に書いてあんだろ、スレに沿っていたけど途中で彼の閾値を超えたんだってww
10回はダメでちゅ〜〜ww

497 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 11:53:42.77 ID:lkZCuVJ2.net]
>>480
はい、じゃあ全員じゃないね、答え合わせありがとうw

498 名前:デフォルトの名無しさん [2022/07/23(土) 12:01:36.99 ID:LCkddkGN.net]
>>460
460です。beautifulsoupも初めて聞いたレベルなのですが、
チャレンジさせていただきます。
ありがとうございました。

499 名前:デフォルトの名無しさん [2022/07/23(土) 12:01:47.65 ID:LCkddkGN.net]
>>461
460です。beautifulsoupも初めて聞いたレベルなのですが、
チャレンジさせていただきます。
ありがとうございました。

500 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 12:02:11.20 ID:cx+wDCne.net]
>>482
そうだね
一人だけ空気読めないやつがいる
これが正確な言い方



501 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 12:12:16.70 ID:zqWGCIwO.net]
今日の様に暑いとID:lkZCuVJ2みたいな奴が犯罪にはしらないか心配になるw

502 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 12:12:53 ID:DC0ZGSft.net]
462です。
スレ見なおしたけど反省するようなレスしていない
449で予想外のツッコミ受けて驚いたが。
自治厨の相手はしたくないので、この件のコメントはこれが最初で最後

503 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 12:13:10 ID:Sr9KJy9/.net]
絶望的に適性ないやつがいるな
そんな無駄なことは今すぐやめろ
限りある人生をもっと有意義なことに使え

504 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 12:16:15 ID:cx+wDCne.net]
まあ反省できるようなやつだったら最初からこんなことしないわな

505 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 12:39:52 ID:zqWGCIwO.net]
コード出して色々言うのはいいけど適切なスレでやってねって話なんだけど自治厨とか言い出してる時点で反省なんてしてないわなw

506 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 12:46:43 ID:b3gXMMo0.net]
自己中なんだろ
自分以外見えてない

507 名前:デフォルトの名無しさん [2022/07/23(土) 15:41:49.42 ID:FAO+OpS7.net]
ネオ麦茶

508 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 17:14:17.68 ID:QCnlUATD.net]
>>492
犯罪示唆ですね
通報しました

509 名前:デフォルトの名無しさん [2022/07/23(土) 18:06:21.74 ID:KR63qUqp.net]
随分とハイコンテクストな犯罪教唆だな

510 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 21:20:29.07 ID:MqDru3I9.net]
>>460
例えばRuby では、input.csv が以下の内容として、
a
b,c

require 'csv'
require 'open-uri'

url = "localhost:8000/input.csv"

CSV.parse( open( url ).string ).each do | row | # 1行ずつ処理する
p row
end

出力
["a"]
["b", "c"]

または、curl コマンドを使う事もできる。
input_csv = `curl #{ url }`



511 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 22:54:21.58 ID:jIlcufBL.net]
完全自殺なんチャラって本も流行ったなぁ

512 名前:デフォルトの名無しさん [2022/07/24(日) 05:32:21 ID:or5HZl/v.net]
1.適性がない、というその適性を定義してください。
2.適性がない、となぜ判断

513 名前:したのか 1. をもとに詳しく記述してください
3.1.2.が出来ないのではないのならば、あなたこそ、あなたのいう適性をもちあわせていない、と私は判断します
以上
[]
[ここ壊れてます]

514 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 10:18:49.14 ID:VDm4wods.net]
>>497
非論理的だね
著しく論理的思考能力の低い人はプログラミングの適性がないと言われても仕方ない

515 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 12:33:12 ID:DlP0Pw4T.net]
>>498
1.自民党と統一教会の関係を説明してください
2.公明党と政教分離の関係を説明してください
3.おまえは馬鹿

516 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 13:48:43.90 ID:Kadg5L8P.net]
>>499
ここで政治の話は止めて頂きたい

517 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 14:03:28.06 ID:s7YMPwIQ.net]
>>500
おまえは馬鹿

518 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 14:09:01.48 ID:nqGRTr2S.net]
プログラミングしてると、
Delete、Enter、BackSpace、半角全角、home、end
ここらへんがホームポジションから遠すぎて困るな
半角、全角は無変換と変換に割り当てたんだけど

みんなはキーマップカスタマイズとかしてるの?

519 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 14:12:13.07 ID:s7YMPwIQ.net]
それはPythonと関係のある話題ですか?

520 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 14:14:56.30 ID:QkJUlhBv.net]
手を叩いて大きくすると良い感じになるよ。



521 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 14:20:46.38 ID:VlRFcd7U.net]
>>499
メンバシップ関数を定義するのけ?

522 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 14:43:22.46 ID:Kadg5L8P.net]
>>502
ctrl<->capsの入れ替えくらい

523 名前:デフォルトの名無しさん [2022/07/24(日) 16:12:15.26 ID:ydeGY7xn.net]
>>502
親指活用できるエルゴノミクスキーボード使ってる
詳しくはハードウェア板のエルゴノミクスキーボードスレへ
kinesis, ergodox, teckあたりかねその辺打ちやすいの

524 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 16:23:06.62 ID:oKMHGzT9.net]
集団自決したはずなのに生きていた人が死去

525 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 19:45:11 ID:e/hljxBO.net]
スクレイピングの練習中でリスト内包表記とre.search()について教えてください
seleniumとlxmlで取得したデータの変換がうまく行かないです

url_list = ['https://www.tekitou'+re.search(r'[^0-9A-Z]dp[^0-9A-Z]([0-9A-Z]{10})([^0-9A-Z]|$)',a.get('href')).group() for a in html.cssselect('#tekitou > div > div > a:nth-child(1)')]

html.cssselect('#tekitou > div > div > a:nth-child(1)').get('href')の時点で取得できてるurlは下記のような感じです。

https://www.tekitou/%〇〇%〇〇/dp/(10桁の英数字 英は半角大文字)/ref=zg_bs_10桁の数字_2桁の数字/3桁の数字-7桁の数字-7桁の数字?pd_rd_i=(10桁の英数字 英は半角大文字)&psc=1

https://www.tekitou/music/player/ref=zg_bs_10桁の数字_2桁の数字/3桁の数字-7桁の数字-7桁の数字?pd_rd_i=(10桁の英数字 英は半角大文字)&psc=1


re.search().group()する前のurlが/dp/ありのurlと/dp/なしのurlに分かれるのですが、
re.search(r'[^0-9A-Z]dp[^0-9A-Z]([0-9A-Z]{10})([^0-9A-Z]|$)',a.get('href')).group()の作業の際にエラーがでてしまうため
/dp/なしのurlを削除するようにするか、
pd_rd_i=(10桁の英数字 英は半角大文字)&psc=1の(10桁の英数字 英は半角大文字)を取得するようにしたいです。

なにかうまい表記があれば教えてください

526 名前:デフォルトの名無しさん [2022/07/24(日) 19:55:36 ID:IZxLU3+7.net]
秀丸最強

527 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 20:08:14.75 ID:JBPZyDq1.net]
アマゾンのURLくらいググったら色々出てきそうだけどクソ見にくい正規表現で無理せずにスラッシュでsplitでifにlengthとアスキー確認くらいでいいんじゃないの?

528 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 23:38:55 ID:GhBFnIe8.net]
プログラミングって直感じゃね?
論理は直感を説明するの

529 名前:ノ用いることに有効だけど
プログラム書くのにいちいち考えないっしょ
考えるのは設計とテストだけだし
[]
[ここ壊れてます]

530 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 23:39:26 ID:GhBFnIe8.net]
それ以外にもあるかもしれんけど



531 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 23:43:50 ID:nVQ6Xq/p.net]
>>509
pd_rd_iから取得
url_list = ['https://www.tekitou/dp/{0}/'.format(re.findall(r'\?pd_rd_i=(\w+)', a.get('href'))[0]) for a in html.cssselect('#tekitou > div > div > a:nth-child(1)')]

532 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 00:22:12.12 ID:kwIPZDW5.net]
argparse使って、たとえば1つ目の位置引数(スイッチのようなもの)の違いで、それ以降は全く異なる引数ルールになるような場合はどのような指定をすればよいでしょうか?
それともそれぞれ別のルールを定義してパースする必要がありますか?

すごく簡単な例ですが、addの場合とlistの場合で指定する引数が違うようなものとか
user.py
-add name [--prop property]
-list [--group group]

533 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 00:41:00.73 ID:YiCqNPeZ.net]
>>515
1つめの位置引数を読んでから残りをargparseにかければいいんでないの?

それかサブコマンド対応してるライブラリを使うか

534 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 00:57:12.30 ID:kwIPZDW5.net]
>>516
なるほど。argparseで一度にまとめてできればと思ったんですが、できないってことですね…

535 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 01:00:15.74 ID:gTrk2zFk.net]
>>509
例えば、Ruby なら、

URI.split で、URL のパス部分だけを抜き出して、
その文字列内に、/dp/ が含まれているかで条件分岐する

require 'uri'

dp_url = "example.com/%E3%81%82/dp/a" # あ = %E3%81%82
non_dp_url = "example.com/%E3%81%82/a"

p dp_ary = URI.split( dp_url )
p non_dp_ary = URI.split( non_dp_url )
#=> ["http", nil, "example.com", nil, nil, "/%E3%81%82/dp/a", nil, nil, nil]
#=> ["http", nil, "example.com", nil, nil, "/%E3%81%82/a", nil, nil, nil]

# パス部分
p dp_ary[ 5 ]
p non_dp_ary[ 5 ]
#=> "/%E3%81%82/dp/a"
#=> "/%E3%81%82/a"

p dp_ary[ 5 ].match( '/dp/' )
p non_dp_ary[ 5 ].match( '/dp/' )
#=> <MatchData "/dp/"> : 一致する
#=> nil : 一致しない

536 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 01:03:04.79 ID:oCKr0yXR.net]
add_subparsersでやればいいんじゃない

537 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 09:00:21.95 ID:9Mfr9nvz.net]
>>512
うう……設計がプログラミングに含まれてない……うそやろ……

538 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 09:35:32.16 ID:Tcjxae6G.net]
>>509
/dp/(10桁の英数字 英は半角大文字)があれば、その(10桁の英数字 英は半角大文字)を取得
?pd_rd_i=(10桁の英数字 英は半角大文字)があれば、その(10桁の英数字 英は半角大文字)を取得
どちらも無ければ空文字を返しエラーとはならない方法

url_list = ['https://www.tekitou/dp/{0}/'.format(re.search(r'(?<=/dp/)(\w+)|(?<=\?pd_rd_i=)(\w+)|$', a.get('href')).group()) for a in html.cssselect('#tekitou > div > div > a:nth-child(1)')]

539 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 09:43:03 ID:VgpbHR93.net]
>>520
Don't think. Feeeel!!

540 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 10:25:41.85 ID:kwIPZDW5.net]
>>519
add_subparsers使えばできますね!
ありがとうございます。



541 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 12:52:01.49 ID:gFjrq6Gs.net]
>>520
設計は人が考えたものを具現化するプロセスまでの事でプログラミングに含まれないよね

プログラミングは優秀な言語と開発支援ツールに頼って直感のままに組み立てる作業

人が本来やることは自身の進化とソフトウエアのアップデート対応に強い設計する事と作業を減らす工夫と世界が前進することへの貢献

542 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 12:57:49.15 ID:gFjrq6Gs.net]
簡単そうに言ってる

543 名前:けど
かなり時間かけて様々なことを知らないといけないし知らない未知のことへの挑戦もしてかなきゃいけない
そーゆー志を持った人がこのスレの中に居てくれたら俺は嬉しい
[]
[ここ壊れてます]

544 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 13:20:20.14 ID:9Mfr9nvz.net]
>>524
(それコーディングじゃない?)

545 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 14:36:18.33 ID:evu7R6rH.net]
docker入れてみたけどやっぱ仮想環境だからGB単位でメモリそこそこつかうんだよな
アイドル状態で8GB、vscodeで1〜2GB、dockerで2GB、Chromeで動画見ながら作業したら2〜3GBぐらい使うからギリギリで困る
やっぱメモリ32GBは入れないとだめか

546 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 15:07:03.89 ID:fmU0SO/o.net]
>>526
(ちんこかゆい)

547 名前:デフォルトの名無しさん [2022/07/25(月) 16:14:04.12 ID:GOtCNvAE.net]
https://www.youtube.com/watch?v=B5tSZr_QqXw

548 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 19:47:19 ID:GWKUHzSt.net]
>>514
>>521
ありがとうございます
行けました!

549 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 19:49:50 ID:GWKUHzSt.net]
seleniumで複数ブラウザ立てて並列処理してみたいけど難しそう
scrapyで楽天からスクレイピングしてみたら非同期処理?のせいで早すぎて速攻アク禁くらった

550 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 20:11:37.41 ID:NlibKZuA.net]
>>531
プロファイルを別にすればいけるよ
高速化目的で同じサイトに並列アクセスするのはやめた方がいい



551 名前:デフォルトの名無しさん [2022/07/25(月) 20:20:18.30 ID:mO6SEFWJ.net]
流石にもういきなり逮捕はされないと思うけど、librahackみたいなことが起こらないとは言えないから怖いよねー。
アクセスログで見ても、ギリギリ人間がアクセスしてるって言い訳できるぐらいの間隔を乱数で作ってsleepしてるわ。

552 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 21:11:33.84 ID:Tcjxae6G.net]
>>511
フハハハハハハハハ、>>521を刮目せよ! 賞賛の声(>>530)を聞け!
正規表現はクソ見にくいわけはなく、むしろ簡潔であり完璧であり完全無欠なのである
正規表現にできないことはなく、正規表現に代わるものはなし
正規表現はまさに人類の叡智なのである

553 名前:デフォルトの名無しさん [2022/07/25(月) 21:14:45 ID:GF1rw+EH.net]
イヤイヤイヤイヤ、普通にクソ見にくいでしょ。
他人が理解できないものを書くほうが偉いって風潮何とかならんの?

554 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 21:44:24 ID:Tcjxae6G.net]
>>535
偉いとかじゃなくて便利なんだよ
>>521の正規表現は別に難しい部類じゃない、\wは単語文字という意味で英数字も含まれる
\w+で単語文字が1個以上という意味になる、その前の(?<=...)は後読みアサーションで
これにマッチした後の\w+をサーチしているわけで基本というか、ちょっと勉強すれば、というか
正規表現の仕様に例が載ってるから、例みたらすぐ理解できるよ
https://docs.python.org/ja/3/library/re.html

自分的には最後の|$が工夫した点で、コレでサーチできなかった場合に空文字を取得させることができる
正規表現使わずにスラッシュでsplitでifにlengthとアスキー確認なんかの方が見にくいだろうし
面倒すぎてやっとれんよ

555 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 22:07:08.94 ID:5m9dN2FM.net]
(超初心者用)

556 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 22:50:49 ID:Tcjxae6G.net]
>>529
最新動画の@cacheがマジ感動した、最後のフィボナッチの高速化がマジ良かった
マジでマジでマジだから

557 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 23:03:45 ID:gTrk2zFk.net]
WSL2, Docker は、8GB メモリじゃキツイ

16〜3

558 名前:2GBは欲しい []
[ここ壊れてます]

559 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 23:56:34.13 ID:XTViXxR/.net]
>>536
スラッシュでsplitでアスキー確認って
[i for i in ○.split('/') if len(i) == 10 and i.isascii()]
で終わりでしょ
それ自体に難しさも見にくさも感じないが

560 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 01:23:31.22 ID:HcfNtCqI.net]
正規表現学びたいけど複雑すぎて訳分かんねえよ
なんか練習できるところないの?
ゲームっぽく遊べたりする所どっかあるだろ?



561 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 03:23:25.62 ID:fUa59wf/.net]
ターミナル

562 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 08:00:48.09 ID:hxnsYVU0.net]
>>540
これはアカンでしょ、ifってそんなけ? /dp/の判定が無いし
/dp/が無かった場合にpd_rd_iから取得する処理が無いし
これでいいなら正規表現ならこうじゃわいな
re.search(r'\w{10}|$', ○).group()

563 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 08:23:18 ID:hxnsYVU0.net]
findall使った方がいいか、こっちの方が>>540と処理結果同じだわ
re.findall(r'\w{10}', ○)

564 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 09:42:11.06 ID:28W+mdVQ.net]
10桁英数のチェックが必要ないならこれでいけるんじゃね
([i[:10] for i in url.split("/dp/") + url.split("pd_rd_i=") if not i.startswith("https:")] + [""])[0]
チェック必要なら1行ではきびしいか

565 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 10:10:32.06 ID:2F7nQnXP.net]
pd_rd_iは必須じゃないからなあ

566 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 11:04:25.18 ID:hxnsYVU0.net]
>>545 を抽象化+10桁チェック+isasciiチェック追加(10桁チェックは不要だとは思うけども・・)
[i[:10] for i in url.split("/dp/")[1:] or url.split("pd_rd_i=")[1:] if len(i[:10])==10 and i[:10].isascii()]
気づいたんですけどこのisascii()でのチェックはasciiのチェックであって、ascii文字のチェックじゃないから
英数字だけじゃなくて/やtabやらもTrue判定しちゃいますからダメですね

ちなみに>>521も10桁チェックは入っていないのですが、入れた場合は以下のようになりまして
その場合もやはり分かりやすい、可読性が良い、簡潔、何をしているかすぐ分かる
正規表現スキになっちゃったって方はgoodボタン押してください^^
re.search(r'(?<=/dp/)(\w{10})|(?<=\?pd_rd_i=)(\w{10})|$', url).group()

567 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 11:06:35.56 ID:Uy4U9BVa.net]
goodボタンってどこにあるの?

568 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 11:37:39.45 ID:PhJ4pIjK.net]
精神病になるとそういうボタンが見えるらしいよ

569 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 12:16:00.10 ID:k5BnME6W.net]
こいつ上の方にいた日記帳キチガイだな

570 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 12:21:32.78 ID:r5zklFsb.net]
ハッタツしょう害なんじゃねえの



571 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 12:37:44 ID:28W+mdVQ.net]
>>547

英数字チェック完全版+セイウチ
[x for i in url.split("/dp/")[1:] or url.split("pd_rd_i=")[1:] if len(x:=i[:10])==10 and x.isascii() and x.isalnum()]

572 名前:デフォルトの名無しさん [2022/07/26(火) 12:44:17 ID:IrL7txwd.net]
・フリーランスに立ちはだかる「常駐」の壁。慣例を打ち壊し、
“テレワーク”案件3割→8割へと成長を遂げた「クラウドテック」の軌跡
・リモートワーク求人専門サイト「プロリモート」がリニューアルオープン、
 業務委託契約の求職者と企業をマッチング 
・1/3以上が採用につながる高マッチング率、リモートワーク×エンジニア・デザイナー専門の
 人材紹介サービス「ReworkerAgent」正式リリース場所からも時間からも自由な働き方を実現!
・『ReWorks(リワークス)』リモートワーク特化型

573 名前:]職サイトとして 3月5日 リニューアル
・副業・兼業マッチングサービス「クラウドリンクス」登録者数2万人突破
 中小企業で進む副業人材の採用、96%が継続採用を希望
・フリーランスが活用できる「最大1,000〜3,000万円・補助率50%〜75%」の
『ものづくり・商業・サービス補助金』とは?概要や条件を解説
・茨城県日立市、県外からの「テレワーク移住者」に最大151万円の助成金
・長野市、市内に移転・事業所設置し、移住することで最大550万円の支援金を支給
[]
[ここ壊れてます]

574 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 12:59:25.55 ID:hxnsYVU0.net]
>>552
すばらしい! これ以上は良くなりそうにないね
こうして見るとやはり正規表現の方がいい、仕様変更にもすぐ対応できるし

575 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 13:07:45.08 ID:563vGs1S.net]
ではこの話はこれで終わりです

576 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 13:15:56.15 ID:hxnsYVU0.net]
へ? ここで>>552が「実行速度では負けてないもんね!」つって速度勝負をしかけてきて
それならre.compileじゃぁあああって応戦してからの、やっぱ「速度じゃreは不利じゃわい」
つって、「いやいや、やはり正規表現さんの勝ちですわ、メンテナンス性では完敗ですもん」
ってお互いが歩み寄ってからの熱い握手で終幕やろうが! まあええわ次の話題もってこいや

577 名前:デフォルトの名無しさん [2022/07/26(火) 13:30:39.77 ID:P5K5X/wN.net]
ID:t+dBeaSp
ID:lkZCuVJ2
ID:Tcjxae6G
ID:hxnsYVU0

578 名前:デフォルトの名無しさん [2022/07/26(火) 16:43:34.40 ID:gc9s0ohk.net]
以上
今日の自演でした

579 名前:デフォルトの名無しさん [2022/07/26(火) 17:59:35.79 ID:gc9s0ohk.net]
>>492-494
秋葉で暴走した加藤は死刑完了したそうだ

580 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 18:59:47.50 ID:aND0EYYo.net]
python使いやすくていいわーって思ってたけど
json使ったら面倒だなと思った…
これ自分で辞書にしたり戻したりしないといけないわけ?
pickleちゃんはバイナリになるからやだ



581 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 19:06:35.62 ID:QBs9x9BG.net]
>>559
あの事件で大学の同級生死んじゃったよー……。執行まで長かったなー

582 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 19:40:58.02 ID:Uy4U9BVa.net]
まじかよ
東大近いもんな
優秀な人を亡くすのは実に惜しい

583 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 19:44:17.06 ID:QBs9x9BG.net]
>>562
は?東大生死んでないが?

584 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 19:44:58.50 ID:Sr1olQPp.net]
while True:
 わーいPython便利だなー
 あれ?このXを扱うのってめんどくさくね?
 他の言語にしよっと
 X以外がめんどくさすぎる!

585 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 19:57:04.85 ID:hxnsYVU0.net]
>>560
じゃあyamlちゃんは?
https://www.youtube.com/watch?v=rpbq6vXcNbM

586 名前:デフォルトの名無しさん [2022/07/26(火) 20:47:35.71 ID:GQvz79KS.net]
Jsonって殺人鬼だったのに。

587 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 21:16:10.07 ID:OUnIdkcH.net]
全損

588 名前:デフォルトの名無しさん [2022/07/26(火) 22:30:48.06 ID:Rgm2Z23r.net]
>>560
これってどういうこと?Pythonのオブジェクトに変換せずに何かをやりたいっていうこと?

589 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 23:43:27.38 ID:wQrOnGuH.net]
yamlの仕様を学ばないままcomposeやk8sを使ってる

590 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 03:54:50.01 ID:PQGmIH2y.net]
パスの\を/にかえなきゃいけないのが面倒すぎるんだがなんか方法ないのか?
\\にかえるのもめんどう

で調べたらRつけるだけでいいらしい……
だったら最初から\読み込めるようにしろよ!



591 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 09:00:44 ]
[ここ壊れてます]

592 名前:.94 ID:pyuUgR41.net mailto: >>560
jsとpythonでしかjson使ったことないけど、どちらも使い勝手は変わらんと思うが。
[]
[ここ壊れてます]

593 名前:デフォルトの名無しさん [2022/07/27(水) 10:05:16 ID:elZrgoJK.net]
>>560
があほすぎなすれ

594 名前:デフォルトの名無しさん [2022/07/27(水) 13:08:32.87 ID:B7vnAx8k.net]
>>570
その文句は、エスケープ文字を勉強したほうしたほうがいい
あといちいち手動でreplaceするよりPathlib使った方がかかいもよ

https://pystyle.info/python-pathlib/

595 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 13:27:46.89 ID:aU47T/gU.net]
パースするだけなのにそんなに面倒か?

596 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 13:28:56 ID:aU47T/gU.net]
すまん、jsonの話な

597 名前:デフォルトの名無しさん [2022/07/27(水) 15:26:57.56 ID:B7vnAx8k.net]
PythonでJSONの取り扱いは、JS以外の他の言語と比べたらめちゃくちゃ楽な方だと思うけどな。ほとんどJSと変わらない。
CはともかくC++だって全然簡単じゃないからねえ。CだとPythonの5倍、C++でも2.5倍ぐらいの記述量になる気がする。

598 名前:デフォルトの名無しさん [2022/07/27(水) 16:26:23.72 ID:G6wuTkcd.net]
何年前の話よ
https://github.com/nlohmann/json

599 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 16:52:22.09 ID:aU47T/gU.net]
jsonはpythonのビルトインパーサーでなんとかなるな
使えないhtmlパーサーとは大違い

600 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 19:30:05 ID:xJ8anoa4.net]
python に限った話じゃないけどなぜか html パーサーっこれって言う奴ないよね



601 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 20:20:11.22 ID:aU47T/gU.net]
>>579
htmlが、sgml/xmlを簡略化した派生で
文法があまりに自由でゆるゆるだったから、
もともとデータ処理には向いていなかったということなんだと思うよ

602 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 20:28:14.33 ID:xJ8anoa4.net]
>>580
そうは言っても html で公開されてるデータもあるんだからねぇ

603 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 20:42:25.68 ID:aU47T/gU.net]
>>581
現状では、外部モジュールに頼るか、力づくでなんとかするかしかないものねw

最近はhtmlに組み込まれたjsonデータ形式(json-ld)が多くなって、
データを探るくらいならあまり悩まずにすむので助かってるわ

604 名前:デフォルトの名無しさん [2022/07/27(水) 22:42:50.60 ID:+MHO4Y86.net]
君ら二人が思ってるほどそういう需要がないんじゃない
結局やりたいのはスクレイピングでしょ

605 名前:デフォルトの名無しさん [2022/07/27(水) 23:00:58.07 ID:+MHO4Y86.net]
スクレイピングできるようなライブラリを標準ライブラリに組み込んで欲しくはないよね
html.parseは確かにシンプルだとは思うけど、どこまでってなると難しい
html自体がかなり緩いから、サービス依存とか流行に依存してしまうんだよね
まぁ、Beautiful Soupもあるしいいじゃないすか

606 名前:デフォルトの名無しさん mailto:sage [2022/07/28(木) 00:22:28 ID:nqLen+JC.net]
yieldって初めて見た

ジェネレーター関数?を作るときに使うのか
正直使い道がわからんな
ジェネレーターとかイテレーターとかはだいたいわかるけど

607 名前:デフォルトの名無しさん mailto:sage [2022/07/28(木) 05:13:59.70 ID:mvZe9xm4.net]
>>585
> ジェネレーターとかイテレーターとかはだいたいわかるけど
わかってたらyieldの使いどころがわからんとかないと思うが...

608 名前:デフォルトの名無しさん mailto:sage [2022/07/28(木) 05:40:55.75 ID:8YG1K1uV.net]
>>586
こういうやつって結局何聞かれても説明できないやつだよな

609 名前:デフォルトの名無しさん mailto:sage [2022/07/28(木) 05:45:38.18 ID:yBjc1Rgi.net]
国債取引してればyieldなんてしょっちゅう見るけどな

610 名前:デフォルトの名無しさん [2022/07/28(木) 16:20:58.93 ID:m8z1CQHY.net]
教えてください。
Wordpressに記事投稿する際に閲覧パスワードをつけたい場合
‘status’=‘publish’,
‘contents’=‘記事本文



611 名前:’,,
‘password’=‘閲覧パスワード,
‘tag’=1
….
と指定しています。
投稿自体は成功しているのですがパスワード付きの記事になりません。
どなたか解決策をお願いします。
[]
[ここ壊れてます]

612 名前:デフォルトの名無しさん [2022/07/28(木) 20:16:12.08 ID:Hv8PyQaz.net]
>>585
馬鹿には無理

613 名前:デフォルトの名無しさん [2022/07/28(木) 22:51:57.42 ID:9hZjKw0t.net]
>>585
リスト返すよりよりジェネレータ―の方がコスト低いからでは解決しない質問?

614 名前:デフォルトの名無しさん mailto:sage [2022/07/28(木) 22:58:58.42 ID:cRsx7yDk.net]
リスト作成のコストと比べても意味ないやろ
yield使わずにジェネレーターを作ればありがたみが分かる

615 名前:デフォルトの名無しさん mailto:sage [2022/07/29(金) 00:22:32.77 ID:fEBZH37g.net]
リストをfilter()使ってlambda式ではなく外部関数を呼び出して抽出する場合、外部関数に追加の引数を渡すことってできますか?
リストの要素に加えてさらに判定用の引数を与えて外部関数で処理させたいです

616 名前:デフォルトの名無しさん mailto:sage [2022/07/29(金) 01:28:35.66 ID:8gcFFgPp.net]
>>593
部分適用した関数を用意すればできるよ
partialとか関数を返す関数を書くとかで
リストを[(要素, 追加引数)]の形にzipするのでもてきる

ただlambda使って外部関数に引数渡すのが一番よく使われてる印象

617 名前:デフォルトの名無しさん mailto:sage [2022/07/29(金) 02:05:51.08 ID:sW6reep3.net]
>>593
functools. partial

618 名前:デフォルトの名無しさん mailto:sage [2022/07/29(金) 02:28:02.24 ID:fEBZH37g.net]
>>594,595
functools.partialもlmbdaもできました。ありがとうございます。
確かにlambdaのほうがすぐに書けるのと、パッと見て分かりやすいかもですね

619 名前:デフォルトの名無しさん mailto:sage [2022/07/29(金) 16:36:15.82 ID:0LOpWdsN.net]
ある変数に対してifまたはelseで値を代入するとき「未定義の可能性があります」という警告が出てしまいます。
この警告は無視して構わないのでしょうか?
実際はifかelseが必ず実行されるため、未定義になることは無いと思います。

620 名前:デフォルトの名無しさん mailto:sage [2022/07/29(金) 18:15:50.48 ID:APedJzV4.net]
両方でちゃんと定義があれば問題ないんじゃないの



621 名前:デフォルトの名無しさん [2022/07/29(金) 18:30:32.97 ID:XaB7Y5c2.net]
>>597
その部分のコード書いてみ
たぶん未定義になるパターンがある

622 名前:デフォルトの名無しさん mailto:sage [2022/07/29(金) 19:07:07.88 ID:GzwVbssN.net]
ifとelse両方で定義してあれば未定義にはならんと思うけどな
定義してないから警告出るのかね

623 名前:デフォルトの名無しさん mailto:sage [2022/07/29(金) 19:10:09.40 ID:WG/TpH2M.net]
>>597
無視しない方がいい

624 名前:デフォルトの名無しさん mailto:sage [2022/07/29(金) 19:58:02.11 ID:47SIIXKm.net]
て言うか未定義の「可能性」なんて普通の処理系ではでないだろ
なんかツール使ってるならそのツールの名前書きなよ

625 名前:デフォルトの名無しさん mailto:sage [2022/07/29(金) 20:45:46 ID:IOBifLpO.net]
どこかに未定義ルート有るんだ
そこらへんを探すのが楽しい

626 名前:デフォルトの名無しさん mailto:sage [2022/07/29(金) 21:51:50.81 ID:a1Tgek7B.net]
Ruby では、条件分岐で初期化されるはずの変数が、
初期化されなかった場合に、nil・未定義になる

if false
n = 1
end

p n #=> nil

627 名前:デフォルトの名無しさん mailto:sage [2022/07/29(金) 23:03:00.11 ID:jDexz6tX.net]
翔泳社のスラスラわかるPythonを読み終えて、
次にソフトバンクのPython完全入門を買おうか迷ってるんですが、
どなたか読んだ方いましたら感想を教えて下さい
よろしくお願いします

628 名前:デフォルトの名無しさん mailto:sage [2022/07/30(土) 02:27:49.30 ID:z4LSWTQO.net]
入門書は1冊で充分なのでは?

629 名前:デフォルトの名無しさん mailto:sage [2022/07/30(土) 02:27:58.30 ID:z4LSWTQO.net]
入門書は1冊で充分なのでは?

630 名前:デフォルトの名無しさん mailto:sage [2022/07/30(土) 02:34:45.44 ID:f1hyBgWY.net]
レスは1回で充分なのでは?



631 名前:デフォルトの名無しさん [2022/07/30(土) 09:23:55.07 ID:azT7AVAA.net]
webアプリ作って内部サーバーから使ってみよう、みたいな本読んでるんだが

コマンドプロンプトに
python -m http.server

632 名前:--cgi 8080
と書いてwebサーバー立ち上げて
ブラウザで
htttp://localhost:8080
開くまではできたんだ

ここから
htttp://localhost:8080/開きたいwebアプリ.py
へ移動しても、中身がテキストとして表示されるだけでwebアプリとしては機能しない
これはなにか手順間違えてるかな?

pythonコード自体は以下
https://techiedelight.com/compiler/?MN5F
[]
[ここ壊れてます]

633 名前:デフォルトの名無しさん [2022/07/30(土) 09:27:36.20 ID:paa5jUiA.net]
●未定義ルートがある
●typoを見落とし

634 名前:デフォルトの名無しさん [2022/07/30(土) 09:28:23.25 ID:paa5jUiA.net]
>>606-607
レスは一回で充分

635 名前:デフォルトの名無しさん [2022/07/30(土) 09:29:27.96 ID:paa5jUiA.net]
>>609
flask使え

636 名前:デフォルトの名無しさん mailto:sage [2022/07/30(土) 13:25:48 ID:OlgNXvPr.net]
呼ばれたクラスのメソッド実行やインスタンスの参照はできますでしょうか?
RubyのBinding_of_caller gemのようなことをやりたいです。

637 名前:デフォルトの名無しさん mailto:sage [2022/07/30(土) 15:23:09.66 ID:8gKCOMRQ.net]
>>609
例えば、Ruby では、

コンソールで、ウェブサーバー・WEBrick を起動する
ruby -run -e httpd . -p 8080

ブラウザで、
localhost:8080/a.html
とすると、HTML が表示される

例えば、これが、
localhost:8080/a.csv

a.csv, a.txt など、ブラウザが解釈できない拡張子の場合は、ダウンロードされる

638 名前:デフォルトの名無しさん mailto:sage [2022/07/30(土) 15:41:57.89 ID:cxvuT0Ap.net]
>>609
cgi_directoriesで定義されてるディレクトリの中にあるソースコードじゃないとじっこうできないかも

>>614
csvじゃなくてcgiの話な、チンカス

639 名前:デフォルトの名無しさん mailto:sage [2022/07/30(土) 15:55:32 ID:lN6AqJ/F.net]
>>609
/cgi-binに配置して
localhost:8080/cgi-bin/xxx.pyでアクセス

640 名前:デフォルトの名無しさん mailto:sage [2022/07/30(土) 15:56:01 ID:lN6AqJ/F.net]
あ、被ったね



641 名前:デフォルトの名無しさん mailto:sage [2022/07/30(土) 16:15:20.28 ID:t64/Q8Lh.net]
14分差でかぶるとかすごいな

642 名前:605 mailto:sage [2022/07/30(土) 17:33:25 ID:opcLftHA.net]
レスありがとうございます

実は最初にソフトバンクの本を買おうと思ったのですが、アマゾンレビューを見たら
少しわかりにくい箇所もある、という感想があったのでワンクッション入れました

今となっては独習Pythonなどの中級書に進んだ方がいいですか?

643 名前:デフォルトの名無しさん mailto:sage [2022/07/30(土) 17:49:27 ID:6SJJiflx.net]
手段が目的になってるパターン

644 名前:デフォルトの名無しさん [2022/07/30(土) 19:25:46.15 ID:EI1U6qjF.net]
民明書房の「結局あんたはpythonで何がしたいの?」とか読むといい

645 名前:605 mailto:sage [2022/07/31(日) 08:22:18.53 ID:V2xTXw/0.net]
辛口ですね

646 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 08:43:12.47 ID:bF6WKikK.net]
bool([])がFalseなのに
all([])がTrueになる理屈を教えてください

647 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 08:56:05 ID:IhfjCb0y.net]
イテラブルの要素の探索中にFalseでリターンされなければTrueをリターンされるようにallが実装されてるから
https://github.com/satwikkansal/wtfpython#-all-true-ation-

設計思想的な話しなら分からん

648 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 09:01:11 ID:qkw0CgkT.net]
数学的にそれが自然
Wikipediaの論理包含とかVacuous truthを読め

649 名前:デフォルトの名無しさん [2022/07/31(日) 09:35:16.42 ID:qvc5fIgv.net]
test

650 名前:デフォルトの名無しさん [2022/07/31(日) 09:36:51.24 ID:qvc5fIgv.net]
r = True
for e in S:
r = r and e
return r

S が空の場合,for文の中は1度も実行されない.
返されるのは,rの初期値であるTrue



651 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 09:37:12.57 ID:bF6WKikK.net]
>>624
理屈はわかりました
その実装にした人を小一時間問い詰めたい気分でいっぱいです
all([])の結果にTrueを求める

652 名前:ーザーが世の中に一人でもいるのでしょうか…

>>625
数学はよくわからんのですごめんなさい
[]
[ここ壊れてます]

653 名前:デフォルトの名無しさん [2022/07/31(日) 09:39:03.02 ID:qvc5fIgv.net]
似たような例として,Sの要素の和を計算することを考える.

r = 0
for e in S:
 r = r + e
return r

Sが空の場合,rの初期値である0が返される.

654 名前:デフォルトの名無しさん [2022/07/31(日) 09:45:32.68 ID:qvc5fIgv.net]
似たような例として,Sの要素の積を計算することを考える.

r = 1
for e in S:
 r = r * e
return r

S が空の場合,返されるのはrの初期値である1

655 名前:デフォルトの名無しさん [2022/07/31(日) 09:48:34.65 ID:qvc5fIgv.net]
sum, prodという関数がPythonにあるのならば,

sum([]) == 0

とするのが自然だし,

prod([]) == 1

とするのが自然.

prodのほうは不自然に感じる人がいるかもしれないが,sumが自然なのと同じ理由でprodも自然.

656 名前:デフォルトの名無しさん [2022/07/31(日) 10:26:40.61 ID:qvc5fIgv.net]
0! := 1と定義するのも同じ理由.

657 名前:デフォルトの名無しさん [2022/07/31(日) 12:12:56.03 ID:eQtf7hMi.net]
anyとかallは評価できるものがある場合にのみ使うべきだと思うんだ。空打ちしたら「何だこりゃ」ってなる
つまり
all([]) ではなくall([''])と使いたい。これなら正しく(評価がなされて)falseが返る
つかall([]) ってどういう状況よ

658 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 12:23:51.14 ID:1z9jykhy.net]
リテラルを渡すわけじゃないだろ

659 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 12:55:33.13 ID:VBdofYjo.net]
論理包含、Vacuous truthを読めと言ってる人は理由を知っているだけで理解できていない

660 名前:デフォルトの名無しさん [2022/07/31(日) 13:14:04.77 ID:aNbLKyix.net]
>>635
言葉足らずは役立たず



661 名前:デフォルトの名無しさん [2022/07/31(日) 13:25:03.81 ID:qvc5fIgv.net]
any([]) == False
all([]) == True

こうだと何が問題になるのかが分からない.

662 名前:デフォルトの名無しさん [2022/07/31(日) 13:32:01.26 ID:qvc5fIgv.net]
all(S)は∀x(x∈S ⇒ x==True)が真であるときに,Trueになり,偽であるとき,Falseになる.

Sが空なら∀x(x∈S)は偽だから,∀x(x∈S ⇒ x==True)は真である.

any(S)は∃x(x∈S and x==True)が真であるときに,Trueになり,偽であるとき,Falseになる.

Sが空なら∃x(x∈S)は偽だから,∃x(x∈S and x==True)は偽である.

663 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 14:16:45.61 ID:WKv/EkLm.net]
お勉強スレで403がでる

664 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 14:23:06.73 ID:VBdofYjo.net]
allとanyのあるある言いたい TrueとFalseのあるある早く言いたい

665 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 15:56:07.05 ID:KzJjN0dA.net]
聞いてねえ黙っとけマザコン男

666 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 16:39:23.51 ID:6uU1oN4W.net]
突然マザコンという単語が出てきた
普通の人はすぐに思い浮かぶ単語ではない
つまり、自分がそうだとよく言われたから頭に浮かびやすいと自己紹介しているわけだ

667 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 17:10:58.62 ID:a1qLKfui.net]
vscでインタープリターが設定出来ずエラーになる
なんでぇ…検索しても出てこない…

668 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 17:19:39.16 ID:WKv/EkLm.net]
vscスレあるからそっちで聞いたら?

669 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 17:40:03.84 ID:VBdofYjo.net]
>>623の疑問にバッチリ明快にお答えしましょう
all([1,2,3]) -> True
all([1,2,3]+[]) -> True
all([1,2,3]) and all([]) -> True
よって、all([]) -> True

同様にanyの場合は
any([1,2,3]) -> True
any([]+[1,2,3]) -> True
any([]) or any([1,2,3]) -> True
よって、any([]) -> False

Vacuous truthとか言われても分かんないでしょ、wiki見ても分かんない
>>638の取って付けた数式見ても分かんない、でもコードで書くとあら不思議一目瞭然

670 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 18:21:17.32 ID:vZudoVRF.net]
全く疑問に答えてなくて草生えるwwwww



671 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 18:30:32.80 ID:IhfjCb0y.net]
>>645
空リストに分解するのはいいね
ただanyはFalse側で示さないといけないな

672 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 18:42:16.99 ID:1IXOln4s.net]
1. [True, True]
2. [True, False]
3. [False, False]
4. []

この4つから
1種類だけ処理したい場合と2種類だけ処理したい場合を
all, any, notで各listにつき1回走査するだけで書けるか

673 名前:どうか
もしall([])がFalseだとしたらどうか
[]
[ここ壊れてます]

674 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 19:03:02.60 ID:VBdofYjo.net]
>>647
配列例を一緒にしようとしたんだけど、こっちの方が分かりやすいか

any([0,0,0]) -> False
any([0,0,0]+[]) -> False
any([0,0,0]) or any([]) -> False
よって、any([]) -> False

675 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 19:10:05.63 ID:SPHl3eVE.net]
こう決めてるからといって準備してあるものから答えを持ってくるのではない
あくまでデジタル計算の答えがそうなっているだけ
それをわかってないみたいね

676 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 20:42:04.88 ID:nQONknSe.net]
ID:VBdofYjo
ルビーガイジと別のベクトルで頭おかしいね

677 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 22:11:23.00 ID:NZWDJWM/.net]
単なる慣習でしかなくて合理的な理由はない
プログラミングではall([])がFalseだったほうが楽になるケースの方が圧倒的に多い

残念ながらempty listだけ別途チェックするのが無難

678 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 22:46:03.58 ID:MJo3DzqX.net]
all()は論理積のロジックなので初期値True
any()は論理和のロジックなので初期値False
そうしないと成り立たない

679 名前:デフォルトの名無しさん [2022/07/31(日) 23:10:20.11 ID:Q3Sy7AQw.net]
ドキュメントのallの説明で、(or if the iterable is empty)が加えられたのは2009年か2010年ぐらいから

680 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 23:18:11.45 ID:CM+nxrXh.net]
>>653
それ使う側の視点じゃなくて
内部実装上の都合でしょ?



681 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 23:50:52.02 ID:MJo3DzqX.net]
>>655
これ以上に自然な定義はあるのか?
引数が空の時に余計な評価を挟む方がよっぽど不自然だと思うが

682 名前:デフォルトの名無しさん mailto:sage [2022/08/01(月) 01:15:16.60 ID:NO37bZGb.net]
>>656
実装の都合上は自然かもね
使う側の視点からは全くもって自然じゃないよ

683 名前:デフォルトの名無しさん mailto:sage [2022/08/01(月) 01:55:03.33 ID:wljefKG6.net]
>>657
all()とany()の動作を文章にして書いてみたら分かる
関数の仕様自体が気に入らないなら自分で書くしかない

684 名前:デフォルトの名無しさん mailto:sage [2022/08/01(月) 02:13:06.07 ID:4h+jHRsn.net]
>>652
> プログラミングではall([])がFalseだったほうが楽になるケースの方が圧倒的に多い
具体的にコードで示して欲しい

685 名前:デフォルトの名無しさん mailto:sage [2022/08/01(月) 04:29:53.53 ID:rSGUMJSi.net]
まあ5×0=0で5^0=1なのも実装した人にとって自然なだけだし言いたいことはわかる

686 名前:デフォルトの名無しさん mailto:sage [2022/08/01(月) 09:45:47 ID:hJhRRxUQ.net]
やっとバカにも理解できたようですが、>>660を見る限り理解できていませんw 残念

687 名前:デフォルトの名無しさん mailto:sage [2022/08/01(月) 16:21:23.81 ID:Vk1tQ6YT.net]
Eric Matthesの「python crash course」(和名:最短コースでゼロからしっかり学ぶpython入門)を完了して次にデータ解析をやりたいんです
そこで
オレイリーの「pythonによるデータ分析入門」を読んだのですがまだ私にはレベルが高いようです
橋渡しになるレベルの本はありませんでしょうか?

688 名前:デフォルトの名無しさん mailto:sage [2022/08/01(月) 17:14:07.64 ID:WOhHaybL.net]
>>662
『Pythonによるあたらしいデータ分析の教科書』辺りで
Jupyter Notebookとか分析の基本覚えてから
『Python実践データ分析100本ノック』でデータの前処理とかを本格的に勉強してから
オライリー本読んだ方がええかもね

689 名前:デフォルトの名無しさん mailto:sage [2022/08/01(月) 18:05:15.09 ID:BgE8bCyg.net]
型ヒント(num: int = 1など)って普通に使われてますか?
私も常に使った方がいいですか?

690 名前:デフォルトの名無しさん mailto:sage [2022/08/01(月) 20:36:49.60 ID:Vk1tQ6YT.net]
>>663
ありがとうございます
ポチりました



691 名前:デフォルトの名無しさん mailto:sage [2022/08/01(月) 23:46:48.65 ID:It4OEKpF.net]
使われてると思うし使えた方がいい
PyCharmとかVSCodeで書いてると型を判断してくれるので書きやすくなるしミスも判明しやすくなる

692 名前:デフォルトの名無しさん mailto:sage [2022/08/02(火) 00:20:43.20 ID:R2oSGNsV.net]
>>653
配列の全ての要素が5以上かをチェックするcheck関数を作りました
def check(lst):
return all(i >= 5 for i in lst)
空リストが入力された場合Falseを返したいのですが
論理積のロジックなのでFalseを返すと成り立たなくなります
空リストのチェックはどうすれば良いでしょうか

693 名前:デフォルトの名無しさん [2022/08/02(火) 03:57:40.09 ID:AJvhpMFc.net]
def check(l):
__if l:
____return all(map(lambda i: i>5, l))
__else:
____return False

すべて5以上か みたいな関数名にして使う
checkはダメ。論外

694 名前:デフォルトの名無しさん mailto:sage [2022/08/02(火) 04:03:59.45 ID:KlfR+zxP.net]
>>667
return bool(lst) and all(i >= 5 for i in lst)

695 名前:デフォルトの名無しさん mailto:sage [2022/08/02(火) 07:10:05.89 ID:R2oSGNsV.net]
>>668
>>669
これはいけません 論理積のロジックなので空リストが入力された場合はTrueを返す必要があります
Vacuous truthを知らないのですか? 論外です

696 名前:デフォルトの名無しさん mailto:sage [2022/08/02(火) 07:19:05 ID:Qu9LGAtZ.net]
空listはfalseなのでbool()は不要
もしくは lst or [0] とすれば空listチェック不要

697 名前:デフォルトの名無しさん mailto:sage [2022/08/02(火) 08:36:47.08 ID:KlfR+zxP.net]
>>670
ああそういうことか
667の質問の意味が今わかった
変な質問だなと思いながら適当に答えちゃった

698 名前:デフォルトの名無しさん [2022/08/02(火) 08:45:25.83 ID:UYHD5f/y.net]
>>670
空のリストでtrue返したいならall([i for i in lst if i>5])で返るが

699 名前:デフォルトの名無しさん mailto:sage [2022/08/02(火) 08:56:18.05 ID:KlfR+zxP.net]
>>671
bool()は不要のほうは、戻りが True,False,[]の3種類になるから個人的にいや。
lst or [0]のほうは、i >= 5 とかの場合使えなくなるからよろしくないかと。

700 名前:デフォルトの名無しさん mailto:sage [2022/08/02(火) 08:57:08.71 ID:KlfR+zxP.net]
>>674
訂正
lst or [0]のほうは、i >= 0 とかの場合使えなくなるからよろしくないかと。



701 名前:デフォルトの名無しさん mailto:sage [2022/08/02(火) 12:52:45.59 ID:7OOUBMB7.net]
>>668
配列じゃなくiterableだと詰むよ

702 名前:デフォルトの名無しさん mailto:sage [2022/08/02(火) 13:36:46.22 ID:R2oSGNsV.net]
>>672
そうなんッス >>667のcheck関数は完璧ッス 論理積のロジックでVacuous truthで数学的に自然なんッス
check(a+b+c) と check(a) and check(b) and check(c) が等価になると理解できるッス
でも空リストは弾きたいじゃないッスか しかし空リストの場合にFalseで返すと数学的に不完全になるッス
つまり空リストを弾きたいならcheck関数外の前後どちらかで引数のチェック処理が必要というわけッス
メッチャ不便じゃないッスか これが>>659の回答ッス
メッチャ不便なんで数学的に不完全な>>668-669 のようなコードになるッス これが自然ッス
でもその場合 check(a) and check(b) and check(c) みたいな使い方はできなくなるッスよね 空リストが来たらアウトッスから
つーわけでどっちもOKな解決策はあるのかなという質問ッス
同じようなcheck関数を書く場合に空リストの扱いはどうするのかって話ッス
もしそれが>>668-669のようなコードになるのならオイラの勝ちということッス
もちろんall([])がTrueになる理由は理解してるッスよ 5×0=0で5^0=1ってことッスもんね 分かってるッス そこは大丈夫ッス

703 名前:デフォルトの名無しさん [2022/08/02(火) 13:57:06 ID:AJvhpMFc.net]
>>676
要件は配列の要素をチェックする関数の作成だけど。

704 名前:デフォルトの名無しさん [2022/08/02(火) 14:10:48 ID:3RqJykXJ.net]
>>677
そもそも数学的な計算がしたいとき、空のリストが来たら不自然になる って
そりゃ空のリストは数学的じゃねーんだから不自然になって当然だろ

空のリストとかいう非数学を数学化する関数を実装しろよ。それはお前の好きにしろ

705 名前:デフォルトの名無しさん [2022/08/02(火) 14:25:29.34 ID:UYHD5f/y.net]
そういえばBytesIOがイテレーターなのはなんでなの?
配列じゃあかんのか?

706 名前:デフォルトの名無しさん mailto:sage [2022/08/02(火) 14:44:44.43 ID:PAwGL3nC.net]
>>677
全然意味わからん
空リストを弾きたいならcheckの中で例外発生させるなりすればいいだけじゃねーの?

707 名前:デフォルトの名無しさん [2022/08/02(火) 14:58:23.12 ID:4vAniN45.net]
>>681
こいつはネチョネチョ言葉遊びしたいだけのゴミ野郎だから無視でいいよ
上の方でも暴れとる。rubyキチガイと同列の泥人形

708 名前:デフォルトの名無しさん mailto:sage [2022/08/02(火) 15:02:37.40 ID:3/XF33uC.net]
どうせ発生しないような例外的なやつの対応ばかり考えている無能

709 名前:デフォルトの名無しさん mailto:sage [2022/08/02(火) 15:21:43.17 ID:GXJqSimc.net]
>>677
100%同意する

710 名前:デフォルトの名無しさん mailto:sage [2022/08/02(火) 15:24:08.55 ID:uvL1JwEu.net]
>>678
all([]) == Trueはデメリットが大きい例として>>667が書かれてるという文脈を理解してから書いてね



711 名前:デフォルトの名無しさん [2022/08/02(火) 15:36:16.40 ID:4vAniN45.net]
>>684-685
バレてるぞ恥晒し

712 名前:デフォルトの名無しさん [2022/08/02(火) 15:44:30.79 ID:aYPyq7OS.net]
all([]) == True
any([]) == False

であると困る例を教えてください.

713 名前:デフォルトの名無しさん mailto:sage [2022/08/02(火) 17:37:12.67 ID:PAwGL3nC.net]
>>685
それ all([ ]) = False でも何も解決しないだろw
True / False しか返せないのに空リストかどうかの情報欲しいなら別の方法で返すしかない

714 名前:デフォルトの名無しさん mailto:sage [2022/08/02(火) 19:22:29 ID:R2oSGNsV.net]
実は空リストの場合Noneを返すという手を考えたッスけど 数学的完全性を保つことはできなかったッス
しかしたった今思いついたッス 空リストの場合は2を返せばいいッス 2はTrueッス
我ながら自分の才能が恐ろしいッス

715 名前:デフォルトの名無しさん mailto:sage [2022/08/02(火) 19:46:15 ID:R2oSGNsV.net]
>>689
訂正するッス 2じゃなくて1.0を返せばいいッス 空リストの場合は1.0を返すッス
1.0なら check(a+b+c) == (check(a) and check(b) and check(c)) が成立するッス

716 名前:デフォルトの名無しさん mailto:sage [2022/08/02(火) 20:00:27.12 ID:rqWYIp9A.net]
それで最初に言ってた
> 空リストが入力された場合Falseを返したいのですが
これは満たせるの?

717 名前:デフォルトの名無しさん mailto:sage [2022/08/02(火) 20:07:03.39 ID:R2oSGNsV.net]
>>691
・・・満たせないッスね 判別ができるようになるだけで その判別方法もrepr()=='True'とかで煩雑 だめッスね

718 名前:デフォルトの名無しさん mailto:sage [2022/08/02(火) 20:21:40.29 ID:KlfR+zxP.net]
>>690
1.0が返ってくると
if check(lst) == 1.0: と if check(lst) == True: のどちらもTrueになるけど
if type(check(lst)) == float: で判定するの?
副作用は少ないけど美しくない
1.0じゃなくて1のほうがさらに副作用なくていいとおもうけどね

719 名前:デフォルトの名無しさん mailto:sage [2022/08/02(火) 20:44:31.40 ID:H9/akC1Y.net]
元になってる数学の考え方自体の限界
使う側がバグらないよう注意するしかない

python特有の問題じゃないのが救い

720 名前:デフォルトの名無しさん mailto:sage [2022/08/02(火) 20:48:40.69 ID:R2oSGNsV.net]
>>693
美しくないッスね そもそも空リストチェックは言うほど不便じゃないッスよね
if lst and check(lst): ってするだけッスもんね
オイラの中で結論が出たッス やはりallにならってcheck関数も空リストのときはTrueを返すべきッス
必要に応じて空リストチェック( lst and check(lst) )をする こんだけッス シンプルで美しいッス
ビギナーズトラップかもしれないけどそんなの知らないッス



721 名前:デフォルトの名無しさん mailto:sage [2022/08/02(火) 21:07:06 ID:rqWYIp9A.net]
初心者すぎて、これでいいのか分からんけど
boolとandあたりをオーバーライドしたクラスを返却するとか?
空リストかどうかの情報まで持たせたクラス

って、最初の仕様を捻じ曲げていいのか・・・

722 名前:デフォルトの名無しさん [2022/08/02(火) 22:23:57.41 ID:XEhMcRRQ.net]
超初心者なんですが、
社内LANの共有ストレージ内のExcelファイルを操作して作業自動化をしたいと思っています。
社用PCへのインストール申請が面倒なのでGoogle Colabでやってみたら、ストレージ内のファイルが読めないということで渋々インストール申請しようとしているところです。
JupyterLab Desktopで社内LANの共有ストレージのファイルは操作できますか?
環境構築から躓いてます…

723 名前:デフォルトの名無しさん mailto:sage [2022/08/02(火) 23:17:59.15 ID:Z18rEo5s.net]
浮動小数点数を==比較すると言うとヒステリック

724 名前:ネ反応する奴いるよな []
[ここ壊れてます]

725 名前:664 mailto:sage [2022/08/03(水) 00:27:23.50 ID:Ce9Xia0b.net]
>>666
レスが遅くなってしまってすいません

ありがとうございました
なるべく使っていこうと思います

726 名前:デフォルトの名無しさん [2022/08/03(水) 02:48:22.00 ID:HUfXY4jl.net]
>>697
インストール申請いる会社だとpythonは厳しい
外部ライブラリをいくつもインストールすることになるから、そのたびに申請申請…

727 名前:デフォルトの名無しさん mailto:sage [2022/08/03(水) 03:03:39.79 ID:OfDGteUO.net]
自分自身が会社にアンインストールされちゃうよなw

728 名前:デフォルトの名無しさん mailto:sage [2022/08/03(水) 06:34:50.12 ID:NNzHRQEi.net]
>>697
環境はWindowsだと思うが元からあるExcel VBA、VBScript、PowerShellあたりでできないか考えた方がいいかと

729 名前:デフォルトの名無しさん mailto:sage [2022/08/03(水) 06:44:43.69 ID:SAIeW7L3.net]
>>697
インストール申請云々の縛りあるなら普通にVBAでやれよ

730 名前:デフォルトの名無しさん mailto:sage [2022/08/03(水) 06:55:06.47 ID:6v79gKr9.net]
インストール申請あるところならVBA/VBS禁止とかありそうだけどな



731 名前:デフォルトの名無しさん mailto:sage [2022/08/03(水) 09:06:23.71 ID:7qOk9bFG.net]
大半のライブラリはインストールじゃなくダウンロード

732 名前:デフォルトの名無しさん [2022/08/03(水) 09:20:26 ID:6HJ5FZxO.net]
P ⇒ QはPが偽のとき真です。

733 名前:デフォルトの名無しさん mailto:sage [2022/08/03(水) 12:49:46 ID:s6+jOjkc.net]
pythonのパッケージ管理ってどうやってる?
初心者だから本とかウェブ記事とか読みながらそのまま適当にpipしてたんだけど
このままだとめんどくさいことになりそうな気がしてきた

734 名前:デフォルトの名無しさん mailto:sage [2022/08/03(水) 13:06:03 ID:jXa2B14I.net]
poetryで作った環境にインストールしてグローバルに使いたい奴だけリンク張ってる
poetry使ってるのはライブラリ開発するのに使ってるついで
環境分けたいだけならvenvそのまま使えばいい

735 名前:デフォルトの名無しさん mailto:sage [2022/08/04(木) 03:46:24 ID:BBoT8RMz.net]
プログラミングなんて大してSSDの容量使わねーだろ、と思ってたらanacondaが10GBぐらい使ってきて泣いた

736 名前:デフォルトの名無しさん [2022/08/06(土) 09:34:49.25 ID:80xJcjdY.net]
pyinstallerで.pyファイルのexe化を試みています。
opencvがエラーを吐いて正常に動作しません。

ImportError: ERROR: recursion is detected during loading of "cv2" binary extensions. Check OpenCV installation.

google検索してやったこと。
paths=でモジュールの場所を指定
opencvのバージョンを4.5.3.56まで落とす(インストールエラー)

python: 3.10.6
altgraph==0.17.2
future==0.18.2
numpy==1.23.1
opencv-python==4.6.0.66
pefile==2022.5.30
Pillow==9.2.0
pillow-avif-plugin==1.2.2
pyinstaller==5.3
pyinstaller-hooks-contrib==2022.8
pywin32-ctypes==0.2.0
Send2Trash==1.8.0

737 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 10:40:10.54 ID:XSn5nlI0.net]
nuitkaを使う

738 名前:デフォルトの名無しさん [2022/08/06(土) 15:50:19.67 ID:eSBCWCwI.net]
>>709
Anacondaはぶっ太い糞

739 名前:デフォルトの名無しさん [2022/08/06(土) 15:51:47.59 ID:eSBCWCwI.net]
>>710
opencv-python-headless

740 名前:デフォルトの名無しさん [2022/08/06(土) 16:30:43.76 ID:80xJcjdY.net]
>>710 レスありがとうございます。
nuitka、使ってみました。やはりopencv周りは色々問題があるようです。うまく動作しませんでした。

>>713 レスありがとうございます。
opencv-python の代わりに opencv-python-headless を使ってみましたが、全く同じエラーでした。

やはり opencv は難しいのでしょうか…



741 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 17:26:48.46 ID:PSjXEZOE.net]
GoogleはGoなんて作る暇があったらPythonコンパイラを作るべきだった

742 名前:デフォルトの名無しさん mailto: []
[ここ壊れてます]

743 名前:sage mailto:2022/08/06(土) 19:16:19.27 ID:kORMtiG2.net [ pycodestyleの機能って便利ですね ]
[ここ壊れてます]

744 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 19:22:52.36 ID:Cy8sVH5p.net]
お気づきになられましたか

745 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 19:54:32.19 ID:Tb2OU3Zj.net]
impor requests
ってやると
Library stubs not installed for "requests" (or incompatible with python 3.9)
とでてくるんだが
リクエスト "用のライブラリスタブがインストールされていない(またはpython 3.9と非互換)。

よくわからん

746 名前:710 [2022/08/06(土) 20:04:04.35 ID:80xJcjdY.net]
結局、ネット上で実績ありそうな、

Python 3.8.5
altgraph==0.17.2
future==0.18.2
numpy==1.23.1
opencv-python-headless==4.5.3.56
pefile==2022.5.30
Pillow==9.2.0
pillow-avif-plugin==1.2.2
pyinstaller==5.3
pyinstaller-hooks-contrib==2022.8
pywin32-ctypes==0.2.0
Send2Trash==1.8.0

で実行ファイルからエラーが消えたようです。
アドバイスくださった方、どうもありがとうございました。

バージョン管理って大変ですね。

747 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 20:29:16.15 ID:7+clXBwJ.net]
>>718
そのまんまじゃねーか

748 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 20:49:02.89 ID:XxOEvUoc.net]
pytorch入れた時の悪夢が蘇って来た。orz

749 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 21:42:16.91 ID:PGZhucx9.net]
>>718
何使ってるか知らんがmypyが有効になってるんじゃないの?

750 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 21:47:15.58 ID:PQ7gBqNg.net]
ディレクトリがcase-sensitiveかどうか調べる方法ありますか?
環境はWindows10です
やり方がわからないので対象のディレクトリ内にcase-sensitiveなディレクトリ名やファイル名が存在するか調べることでなんとかしようとしたけど
pathlibのglobではcase-sensitiveなディレクトリ名やファイル名では読み抜け発生
os.walkならいけるかもと思い実験中



751 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 22:42:37.85 ID:IJoLUcj8.net]
>>723
abc でディレクトリ作って ABC で存在確認するとかかな
恐ろしいことにOSXではパス毎にCase Sensitiveかどうかを設定出来るらしい...
https://stackoverflow.com/questions/7870041/check-if-file-system-is-case-insensitive-in-python

752 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 23:10:23.53 ID:PQ7gBqNg.net]
>>724
最近のWindowsもフォルダ毎にCase Sensitiveかどうかを設定出来るんですよ
対象のパスの下のサブディレクトリも個別に調べなきゃいけない

753 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 01:53:51.53 ID:HkpslvdA.net]
pylintというのを知った
俺の作ったコード
pylintしたら4点だった
きびしすぎん?

754 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 04:45:52.49 ID:qW86g0dh.net]
つ Flake8

755 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 09:31:21.46 ID:7cQO/w5k.net]
pip installでインストールしたモジュールがどのフォルダ(ディレクトリ)に
入ってるか確認する方法ってありませんか?
エクスプローラーで見てもありません…

756 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 09:51:04.57 ID:qW86g0dh.net]
pip show パッケージ名

757 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 09:51:59.31 ID:wF6HChc5.net]
隠しファイル、隠しフォルダー、および隠しドライブを表示する

758 名前:デフォルトの名無しさん [2022/08/07(日) 11:38:08.36 ID:H7AA9Gyj.net]
>>728
__file__ でわかる。
例えばopencvなら
>import cv2
>print(cv2.__file__)

759 名前:728 mailto:sage [2022/08/07(日) 15:47:17.43 ID:7cQO/w5k.net]
答えてくれた方、ありがとうございました

pip show requests を実行したらパスが表示されました
pythonの処理系があるフォルダの近くにあるみたいなんですが、
VSCodeのどのフォルダにいる状態でインストールしても、
インストールされる場所は同じなんでしょうか?

760 名前:デフォルトの名無しさん [2022/08/07(日) 16:25:21 ID:qancDJyG.net]
class A(text:str, value:int)
class B(A)

VSCodeだとマウスオーバーで引数が確認できますが
上記のような継承があるとき
b = B()
マウスオーバーでAの引数を確認したいのですが、どうすればいいですか?



761 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 16:29:37 ID:wx1/uok7.net]
今のデフォルトはpylanceだっけか

762 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 16:31:40 ID:Iy538lTc.net]
>>733
>class A(text:str, value:int)

今ってこんな定義方法があるの?

763 名前:デフォルトの名無しさん [2022/08/07(日) 17:18:29.82 ID:PNBshUzP.net]
__init__か?
クラスBでオーバーライドしてなきゃAの引数が表示される

764 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 18:29:09.72 ID:J7BfdoVn.net]
pipよりもpypl

765 名前:デフォルトの名無しさん [2022/08/07(日) 18:37:37 ID:qancDJyG.net]
素で間違えた
いまこうです
Bじゃなくて継承元のAの引数が見たいです
https://imgur.com/PkQnHo3.png

vscodeはpylanceですね

766 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 18:41:34 ID:k9D8AutH.net]
え・・・・・

767 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 18:50:58.51 ID:ZjeWku4d.net]
Bの__init__を消そう

768 名前:デフォルトの名無しさん [2022/08/07(日) 19:08:00.18 ID:qancDJyG.net]
>>740
おーありがとう
そういうことk

769 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 21:07:17.99 ID:uhtWaMBb.net]
>>710
specファイルに、

pathex=['C:\........\site-packages\\cv2']
(パスは環境次第)
とcv2のフルパス入れてますか?

770 名前:デフォルトの名無しさん mailto:sage [2022/08/08(月) 10:00:21.56 ID:RWKMU7OX.net]
numpy配列をopencvで扱う画像にする時って
cv2.imdecodeとnumpy.reshapeの二通りのやり方があるみたいだけどどう使い分けるんです?



771 名前:毛の生えたブリーフ [2022/08/08(月) 10:56:42.38 ID:nUMoT9LF.net]
2003年 当時荒れていたdelphiスレッドの緊急避難先で作った「くだすれDelphi 」

ヘッダーを各言語用に改変してPythonのスレッドが出来ていたのか・・・・
あれから20年近く・・・俺も還暦になるわけだ。

プログラム板にきたのは13年ぶり。 いつのまにか2chが5chになって
ひろゆきがメジャーになってた。

772 名前:デフォルトの名無しさん [2022/08/08(月) 10:57:33.77 ID:nUMoT9LF.net]
いやん誤爆してごめんくさい

773 名前:デフォルトの名無しさん [2022/08/08(月) 11:17:06.38 ID:AUtZ1mrn.net]
>>742
はい。specファイルの pathx に入力する方法も試したのですが、同じエラーです。

その後色々組み合わせをためしているのですが、3.10系では成功したことがありません。
3.8, 3.9系では opencv のバージョン次第で正常に動作します。

あと>>711 が教えてくださった nuitka ですが、アンチウィルスが過剰に反応するので諦めました。

774 名前:デフォルトの名無しさん mailto:sage [2022/08/08(月) 16:30:56.98 ID:ej7caoJh.net]
ショートサーキットについてお聞きしたいです

本によるとandやorの両側には関数も取ることができ、
1 < 2 and print('right')
1 > 2 or print('right')
をインタラクティブシェルで実行すると
それぞれ'right'が表示されるみたいですが、釈然としません

そういうものだと覚えておくしかないでしょうか?

775 名前:デフォルトの名無しさん mailto:sage [2022/08/08(月) 16:37:01.79 ID:GNjKAHJ2.net]
なにがわからないの?
x and y === if x then y else x
x or y === if x then x else y

776 名前:デフォルトの名無しさん mailto:sage [2022/08/08(月) 17:05:06 ID:Rerux/uK.net]
>>747
それ
True and print('right')
False or print('right')
と同じで両方共に print('right') の値を見ないと全体の値は確定しないから 'right' が表示されるのは当たり前
1 > 2 and print('right')
ってやればどうなる?

777 名前:デフォルトの名無しさん mailto:sage [2022/08/08(月) 17:15:18.30 ID:w9crSB+N.net]
andは左側が真の場合、右側を評価する
andは左側が偽の場合、右側を評価しない
orは左側が真の場合、右側を評価しない
orは左側が偽の場合、右側を評価する
左側だけで真か偽か判明してる場合は右側を評価しない

778 名前:デフォルトの名無しさん mailto:sage [2022/08/08(月) 18:30:45.48 ID:VXkV51Mv.net]
>>746
そうですね。書いてありましたね。
あとやったとすれば、
a.datas += [('習済みデータ.xml','

779 名前:.\\習済みデータ.xml', 'DATA'),]
※学習済みデータは「haarcascade_frontalface_default.xml」等
を記述したことと、1つのファイルにしたときに、Temporaryの実行パスを取得を工夫したことくらい…

あ、できたファイルを実行時にウィルスとして検知されるので、
pyinstallerの中のファイルの再コンパイルも必要です。
[]
[ここ壊れてます]

780 名前:747 mailto:sage [2022/08/08(月) 19:28:04.38 ID:ej7caoJh.net]
>>748-750
ありがとうございます

すいません、聞き方が悪かったです
ショートサーキットの機構については分かります
bool型を返すわけではないprint()関数が右端に「使える」ことが不可解です
print()は確かNoneを返す関数だったはず



781 名前:デフォルトの名無しさん mailto:sage [2022/08/08(月) 19:40:14.54 ID:Rerux/uK.net]
>>752
None を bool として評価すると False になる

782 名前:デフォルトの名無しさん [2022/08/08(月) 19:41:18.38 ID:wsYAfPSE.net]
>>752
NoneはFalse
bool()で非ブール型もブールに変換した上で解釈される

783 名前:デフォルトの名無しさん mailto:sage [2022/08/08(月) 20:06:39.11 ID:UzajzKaJ.net]
右辺はboolとしてなんて評価されません
適当なことを言うな
https://wandbox.org/permlink/gk6gdiVzpzvoPWfI

784 名前:デフォルトの名無しさん mailto:sage [2022/08/08(月) 20:15:13.65 ID:EDIALeRU.net]
>>755
評価時に__bool__が呼ばれます。if とかで使うと出力される。

785 名前:デフォルトの名無しさん mailto:sage [2022/08/08(月) 20:33:20.93 ID:EDIALeRU.net]
左だとすぐに呼ばれるのに対して違うんですね理解しました

786 名前:デフォルトの名無しさん mailto:sage [2022/08/08(月) 21:21:18.46 ID:icSMNlYR.net]
文字列の置換って
translate()とreplace()のいいとこ取りの置換方法ないの?

translate()は
"aa"→"b"
にできないんだよね?

あと
AAA = kansuu(AAA)
BBB = kansuu(BBB)
CCC = kansuu(CCC)
DDD = kansuu(DDD)
みたいな感じになってるときって
for文で入れていく以外思いつかないんだけど、他に見やすい書き方あるかな?

787 名前:デフォルトの名無しさん mailto:sage [2022/08/08(月) 22:27:42.98 ID:GdyVfCQX.net]
>>758
文字列をmappingベースで置換したいならflashtext使うといいかも

2つ目のはAAA, BBB, CCC, DDDをコレクション(dict, list, tuple等)にする

788 名前:デフォルトの名無しさん [2022/08/09(火) 11:17:14.43 ID:6xBGELHM.net]
フォルダパスとファイル名とURLを書くと画像を保存してくるコードを書いたんだけど
https://techiedelight.com/compiler/?BQkA

エラーの対処はわかったんだけど、もっと別の書き方があるのではと思ってしまう
他の人はこれをどう書きますか?

789 名前:デフォルトの名無しさん mailto:sage [2022/08/09(火) 13:25:52.34 ID:804xd0t9.net]
raw文字列

790 名前:デフォルトの名無しさん mailto:sage [2022/08/09(火) 14:13:10.80 ID:6cdAV71K.net]
バックスラッシュの代わりに、スラッシュを使う
でもいい



791 名前:デフォルトの名無しさん mailto:sage [2022/08/09(火) 14:27:14.68 ID:reKZbZGW.net]
raw文字列、joinpath、with_suffix

792 名前:デフォルトの名無しさん mailto:sage [2022/08/09(火) 16:46:37.99 ID:904t2Z05.net]
pathlib一択でしょうね

793 名前:デフォルトの名無しさん mailto:sage [2022/08/09(火) 17:34:17.89 ID:VX/MyXfz.net]
HTTPErrorやIOErrorのハンドリングもやったほうがいいよ

794 名前:デフォルトの名無しさん [2022/08/09(火) 17:48:28.39 ID:/U/bpI39.net]
外部からの入力系は全部
try:
req
except:
クソ
するな俺は。ユーザーは信用しない
あとダウンロード系も
try:
down
except:
失敗
する。どんなわけわからんエラーくるかしらんし

795 名前:デフォルトの名無しさん mailto:sage [2022/08/09(火) 18:07:25.22 ID:RasYFqXo.net]
外部とのやり取りは一筋縄ではいかないからねえ
ついでにリトライも入れておきたい
requestsには頼らずビルトインで頑張るw

796 名前:デフォルトの名無しさん mailto:sage [2022/08/09(火) 18:28:07.98 ID:Lt/MnBA ]
[ここ壊れてます]

797 名前:v.net mailto: >>766
それ普通じゃね?
[]
[ここ壊れてます]

798 名前:デフォルトの名無しさん mailto:sage [2022/08/09(火) 21:17:15.16 ID:DxAePLof.net]
わざわざtryしなくても例外が起きると止まるっしょ

799 名前:デフォルトの名無しさん mailto:sage [2022/08/09(火) 22:15:13.78 ID:v2aJaQdL.net]
わざわざブレーキつけなくても事故れば止まるっしょ

800 名前:デフォルトの名無しさん mailto:sage [2022/08/09(火) 23:22:34.01 ID:xxgft6hm.net]
>>760
Windows で、path = "C:\a\b"
みたいに、\ を使わなければならないの?

Ruby では、
path = "C:/Users/Owner/Documents/a"
みたいに、/ を使うけど



801 名前:デフォルトの名無しさん [2022/08/09(火) 23:25:51.13 ID:KqAyUORM.net]
>>771
前半、バックスラッシュを使わなくてもアクセスできる。
後半、スレチ。いちいち書くな。

802 名前:デフォルトの名無しさん [2022/08/09(火) 23:34:41.82 ID:oM0lzHLp.net]
合わせてバックストレッチ。

803 名前:747 mailto:sage [2022/08/09(火) 23:46:35.97 ID:8UDvOyKH.net]
レスが遅くなってすいません
答えてくれた方ありがとうございました
ああいった書き方もあるんだと頭の片隅に留めておきます

804 名前:デフォルトの名無しさん [2022/08/10(水) 00:02:07.83 ID:DjE5xMJT.net]
>>769
普通はエラー処理系にraiseするからtry節置くと思うが

805 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 02:29:00.47 ID:kx7L/9BB.net]
なにが普通かは人による

806 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 03:50:21.12 ID:obfeaPUq.net]
なぜこの関数が作られたのかを考えながらプログラム書くとすっきりする

807 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 10:26:29.49 ID:rR8/AFmc.net]
Enum 列挙型という概念を初めて知ったが
使い所がよくわからない

808 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 12:53:32.14 ID:vnHVeG1e.net]
関数をローカル変数に代入するメリットって何でしょうか?

809 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 13:19:15.14 ID:8RUvvZbB.net]
何度も同じ計算をしないで結果だけ繰り返し使える

810 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 13:33:33.79 ID:bGy3yklD.net]
場合によるけど、処理前半でローカル変数に関数を代入しておくことで、処理後半の分岐が消えて見通しが良くなる可能性はあるかも。
何らかの理由でリネームしたかったとか?



811 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 15:00:50.94 ID:vnHVeG1e.net]
ありがとうございます

812 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 15:59:42.31 ID:WlLD55gQ.net]
>>779
同じコードで呼び出す関数だけ違うパターンって結構あるから
ソートとか

813 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 17:43:12.15 ID:YLnkT8Qt.net]
>>779
ループ内で毎回foo.bar()するよりも
ループの外でbar = foo.barして
ループ内ではbar()だけにすると微妙に速くなる

814 名前:デフォルトの名無しさん [2022/08/10(水) 21:48:18.68 ID:5JgNVH0W.net]
かけるかな

815 名前:デフォルトの名無しさん [2022/08/11(木) 07:13:22.60 ID:HPSk7Pik.net]
https://i.imgur.com/FBcOaIq.png
質問です。WindowsでColabでやってます。
1024×768のサイズの画像のみを収集したいのですが、
違うサイズの画像が入ってきます。どうすればいいですか?

816 名前:デフォルトの名無しさん mailto:sage [2022/08/11(木) 07:56:07.13 ID:X31RE6bn.net]
>>786
設定したfiltersがcrawlに設定されていない
google_crawler.crawl(keyword='流星', filters=filters, max_num=10)

817 名前:101 mailto:sage [2022/08/11(木) 09:45:20.53 ID:fCiqpa8j.net]
英語って本当にプログラムに適してるのか?
isspace()
って何かと思ったらis spaceかよ
空白ないと判別しにくいのはプログラミングにおいてどうかと思うわ

818 名前:デフォルトの名無しさん mailto:sage [2022/08/11(木) 10:00:41.98 ID:nadsErGw.net]
キャメルケースとかスネークケース使えよ

819 名前:デフォルトの名無しさん [2022/08/11(木) 10:13:40.52 ID:ECrQVbq4.net]
atoi

820 名前:デフォルトの名無しさん [2022/08/11(木) 11:12:03.43 ID:m7iYSaV1.net]
>>788
少なくともあんたはプログラムに向いてないな



821 名前:デフォルトの名無しさん [2022/08/11(木) 12:26:10.60 ID:fKEJQx+N.net]
https://i.imgur.com/HJTruLr.png


822 名前:>>787
ありがとうございます。早速、記入してみたのですが、
画像が収集できなくなりました!
AssertionError となりましたが、どうすればいいですか?
[]
[ここ壊れてます]

823 名前:デフォルトの名無しさん mailto:sage [2022/08/11(木) 12:46:20.99 ID:7cUH/Z7I.net]
×(かける)じゃなくて x(エックス)じゃねーの?
=1024x768
てか、コードはスクショじゃなくてコピペしてくれ

824 名前:デフォルトの名無しさん [2022/08/11(木) 13:47:35.08 ID:fKEJQx+N.net]
>>793
ありがとうございます。早速、修正してみたのですが、
TypeError となりました!どうすればいいですか?
コードのコピペ↓
from icrawler.builtin import GoogleImageCrawler

google_crawler = GoogleImageCrawler(storage={'root_dir': '流星フォルダ'})
filters = dict(size='=1024x768')
google_crawler.crawl(keyword='流星', filters=filters, max_num=10)

825 名前:デフォルトの名無しさん mailto:sage [2022/08/11(木) 13:58:15.94 ID:7cUH/Z7I.net]
エラーもコピペしてくれよ...

826 名前:デフォルトの名無しさん [2022/08/11(木) 14:07:01.78 ID:fKEJQx+N.net]
>>795
このようなエラーとなっています。
エラー↓
Exception in thread parser-001:
Traceback (most recent call last):
File "/usr/lib/python3.7/threading.py", line 926, in _bootstrap_inner
self.run()
File "/usr/lib/python3.7/threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "/usr/local/lib/python3.7/dist-packages/icrawler/parser.py", line 104, in worker_exec
for task in self.parse(response, **kwargs):
TypeError: 'NoneType' object is not iterable

827 名前:デフォルトの名無しさん mailto:sage [2022/08/11(木) 15:00:05.18 ID:7cUH/Z7I.net]
>>796
バグかも...
https://github.com/hellock/icrawler/issues/107

828 名前:デフォルトの名無しさん [2022/08/11(木) 15:15:10.72 ID:fKEJQx+N.net]
>>797
バグですか...ありがとうございます。
他のコード、1024×768のサイズの画像のみを収集するには、
どうすればいいですか?

829 名前:デフォルトの名無しさん mailto:sage [2022/08/11(木) 15:27:49.52 ID:JwgkCgjA.net]
めちゃ無駄だけど1024x768以外の画像は捨てちゃうぐらいしか思いつかん...

830 名前:デフォルトの名無しさん mailto:sage [2022/08/11(木) 16:47:42.06 ID:X31RE6bn.net]
>>798
できました、min_sizeとmax_sizeも指定する必要があるみたいです
Python3.10でやりました、TypeErrorにはなりませんでした

google_crawler = GoogleImageCrawler(storage={'root_dir': '流星フォルダ'})
filters = dict(size='=1024x768')
google_crawler.crawl(keyword='流星', filters=filters, max_num=10, min_size=(1024, 768), max_size=(1024, 768))



831 名前:デフォルトの名無しさん [2022/08/11(木) 18:48:40.17 ID:fKEJQx+N.net]
>>800
ありがとうございます。早速、試してみましたが、
バージョン違いのためかNameError となりました。
現在、Python 3.9.12 のバージョンなのですが、
ColabでPython3.10にするにはどうすればいいですか?

832 名前:デフォルトの名無しさん mailto:sage [2022/08/11(木) 18:56:22.30 ID:X31RE6bn.net]
エラーもコピペしてくれよ...

833 名前:デフォルトの名無しさん mailto:sage [2022/08/11(木) 19:26:39.81 ID:L6VcpDZr.net]
バージョン違いって断定してるんだからそれでいいだろ
他の可能性を検討しようとするなよ

834 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
そんな能力あるのになんでColabのバージョンは変えられないの?

835 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
>>801
Python 3.9.7が残っていたからicrawlerインストールして>>800実行したら
問題無くできたのでPython3.9.12でもできるハズ
Colabが悪いのではないでしょうか?

836 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
windowsの3.9.13でも問題ないな
ちゃんとgoogleの検索結果取得できてないか、htmlパースに使ってるbeautifulsoup4かlxmlがおかしいかかな

837 名前:デフォルトの名無しさん mailto:sage [2022/08/11(木) 20:01:15.15 ID:X31RE6bn.net]
>>801
まさかだけどNameErrorって、NameError: name 'GoogleImageCrawler' is not defined じゃないよね?
>>800の前にfrom icrawler.builtin import GoogleImageCrawler してるよね?

838 名前:デフォルトの名無しさん [2022/08/11(木) 20:18:34.40 ID:fKEJQx+N.net]
>>807
ありがとうございます。早速、試してみましたが、
見事に解決しました。
>>800
改めてありがとうございます。
お陰さまで、1024×768のサイズの画像のみを収集することができるようになりました。

839 名前:デフォルトの名無しさん mailto:sage [2022/08/11(木) 20:24:18.19 ID:7cUH/Z7I.net]
>>807
せめて>>794ぐらいは見てから書きなよ...
まあエラーのコピペ待ちでいいかと

840 名前:デフォルトの名無しさん mailto:sage [2022/08/11(木) 20:25:02.29 ID:7cUH/Z7I.net]
>>808
えっ、まじで>>807だったの?...



841 名前:デフォルトの名無しさん mailto:sage [2022/08/12(金) 05:55:29.63 ID:vrgQH6RZ.net]
(超初心者用

842 名前:) []
[ここ壊れてます]

843 名前:デフォルトの名無しさん [[ここ壊れてます] .net]
jupyternotebookでセル内のコードが長くなるため,
defで定義した関数を同一ディレクトリ内のmy_func.pyに保存し
メインのコードmain.py 内でimportすることにしました.

my_func.pyに保存した関数内では,numpyを使っているのですが,numpyが認識されません.
main.py でnumpyをインポートしていますが,その効果をmy_func.py内に待避した関数に及ばせるためには
どうすればよいでしょうか.

844 名前:デフォルトの名無しさん [2022/08/12(金) 11:54:38.42 ID:V16IFZ6j.net]
my_func.pyでnumpyをインポート

845 名前:デフォルトの名無しさん mailto:sage [2022/08/12(金) 13:39:22.16 ID:f9Pn84YJ.net]
>>813
ありがとうございます。早速、記入してみたのですが、
my_func.pyでnumpyが認識されました。
main.py内にインポートしているnumpyどうすればいいですか?

846 名前:デフォルトの名無しさん [2022/08/12(金) 14:10:01.68 ID:AKRIAlbQ.net]
main.pyでnumpyを使っていなければいらない

847 名前:デフォルトの名無しさん [2022/08/12(金) 15:01:37.64 ID:P/MIlql5.net]
そのライブラリを直接呼ぶコードがあるファイル毎にimportする。直接呼ばないなら不要

main.py
__import funcs

__funcs.test()


funcs.py
__import numpy

__def test():
____print(numpy.random.randint(0, 10))

848 名前:デフォルトの名無しさん mailto:sage [2022/08/12(金) 15:14:18.69 ID:f9Pn84YJ.net]
>>815
>>816
ありがとうございます。早速、試してみましたが、
見事に解決しました。

849 名前:101 mailto:sage [2022/08/12(金) 16:36:29.89 ID:SBMPsz73.net]
普通、FunctionalをFucって略すか?


幻塔というゲームのテスト用のサーバーネームが
JP Fuc Test Server
だったらしく炎上してた

850 名前:デフォルトの名無しさん mailto:sage [2022/08/13(土) 03:28:02.47 ID:nuG2c1c/.net]
mypyでエラーにならないように pathlib.Path の型を示したいんだが、これはどうすりゃいいのかね?
type()でチェックすると
<class 'pathlib.WindowsPath'>
となるんだが pathlib.WindowsPath と指定してもエラー出るし



851 名前:デフォルトの名無しさん mailto:sage [2022/08/13(土) 03:32:04.91 ID:nuG2c1c/.net]
動的な基底クラスはmypyでチェックできないって言ってる人がいたわ
そういうことなのか?

852 名前:デフォルトの名無しさん [2022/08/13(土) 03:54:53.99 ID:xLCZiP8v.net]
pylanceだとpathlib.Pathでいけるけどmypyあかんか?

853 名前:デフォルトの名無しさん mailto:sage [2022/08/13(土) 07:30:43.65 ID:nuG2c1c/.net]
>>821
お、いけたわ
さんくす

854 名前:デフォルトの名無しさん [2022/08/14(日) 04:23:42.79 ID:aYzApZcG.net]
pythonでcuda使いたいが、お勧めのサイトありますか?
ちなみにcudaは3090とかの方がいいですか?

855 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
にほんごでおk

856 名前:デフォルトの名無しさん [2022/08/14(日) 10:12:56.20 ID:A6qxvdf0.net]
[python cuda]🔍

857 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 11:25:05.75 ID:Gnb69e0i.net]
Noneの比較はis を使うべきで==を使うべき"でない"なんて記述を見かけるのですが、

if dictData.get('key') == 'hogehoge':
__echo 'OK'

例として辞書のgetメソッドのようにキーが無ければNoneを返すような場合で上記のような判定もすべき"でない"のでしょうか?
この場合dictData.get('key', '')のように、キーが見つからない場合の値を明示的に書くべき?
(ただdict.get()のようにコントロールできないのもありますよね)

858 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 12:06:39.34 ID:KzxSNF0d.net]
if hoge is None:
こんな風に定数Noneと比較する場合の話だよ

859 名前:デフォルトの名無しさん [2022/08/14(日) 12:18:23.17 ID:T9w5rPHY.net]
Noneを==すると稀にNone==None ->Falseあるから避けよう。バグのもと。これはググれば解説あるから読んで

で、普通は
if dic.get('key') == 'foo':
__func()
だけでしょう。あればする、なければ終わり

if dic.get('key') == 'foo':
__func()
else:
__func_b()
でもいいけど。

基本的にNoneやFalseを判定しにいかない。まずTrue判定をして、その反対をelse (if)で受ける

ただまあNone / Falseだけを知りたい場合があって
そのときは
if dic.get('key') is None:


860 名前:__func()
などと書く。英文として読みやすいからよい

つか辞書から無い可能性あるkeyのgetは避けたい
db検索的に書きたいならget使わずtry節書いてKeyError専用処理作ろう
[]
[ここ壊れてます]



861 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 12:29:39.79 ID:Gnb69e0i.net]
>>827,828
なるほど、明示的にNoneであることの比較の場合はということですね。ありがとうございます。
>>828さんの最後の件も承知しました。

862 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 12:34:40.20 ID:Gnb69e0i.net]
>>828
あ、やっぱりすみません、最後のget使うべきでない理由って簡単に教えていただけますか?
今回、API等の応答で、辞書の目的のキーがあったりなかったりするような応答で、キーがあれば拾う、無ければ無視、という単純なものなのですが、それでもgetは使わないほうが良かったりしますか?

863 名前:デフォルトの名無しさん [2022/08/14(日) 12:41:52.12 ID:VI2zLni0.net]
>>682
1000%同意する

864 名前:デフォルトの名無しさん [2022/08/14(日) 12:45:09.72 ID:Xz0meKRj.net]
>>830
dict['key']が存在してvalueがNoneの場合にTrueになっちゃうから、キーの不存在判定だけしたいなら'key' in dictの方がいいんじゃないかな

865 名前:デフォルトの名無しさん [2022/08/14(日) 12:50:22.70 ID:T9w5rPHY.net]
>>830
エラーは出ていいんよ
逆に握りつぶしちゃいけない
というかgetってなんのためにあるんだ?

try:
__dic[input()]:
____print('ある')

except KeyError:
__print('ねえわ')

except Exception as e:
__print(e.__class__.__name__)

外部入力受け付けるのって鬼門なんでこういう感じで書きたい
keyerrorは想定できるし、別の意図してないエラーも拾いたいだしょ

866 名前:デフォルトの名無しさん [2022/08/14(日) 12:51:39.01 ID:T9w5rPHY.net]
>>833
しつれい
try:
dic[input()]
print(1)

867 名前:デフォルトの名無しさん [2022/08/14(日) 12:53:45.52 ID:A6qxvdf0.net]
>>830
その用途なら、getでもいいんじゃない?
>>832が言う様な違いはあるけれど、キーが不存在でNoneが返る場合と、キーが存在するが値がNoneの場合とを、区別する必要があるかどうか、考えて決めれば良いよ

868 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 15:22:06.37 ID:nJs5efs8.net]
キーに階層があって、途中のキーがなかったりすることがある場合なんかだと、
区別する実益はあるかもしれんね
一応、.get('key', {}) なんて方法もあるけど

869 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 15:22:39.42 ID:Gnb69e0i.net]
>>832
失礼しました。最初の例ですとおっしゃるとおりですね。内容まで取得するケースも想定してました。

>>833-835
ありがとうございます。要件などふまえ考えてみます

870 名前:デフォルトの名無しさん [2022/08/14(日) 16:52:51.09 ID:T9w5rPHY.net]
ああわかった

db['key1': 0, 'key2':0,,,]
if key1:
__print('ある')
else:
__print('ない')

こんときgetじゃないといかんのだな
あるいは

try:
__value = db[a'']
__print('ある')
except KeyError:
__print('ない')
except:
__print('未定義エラー')



871 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 22:47:50.08 ID:549c+n4K.net]
Ruby の偽は、nil, false だけ。
これ以外は真

でも、Python, PHP, JavaScript などは、
各型に偽値がある。空文字列・空配列・空辞書など

だから、とんでもなくバグるし難しい。
すべての型の可能性を考えないといけない

文字列型・配列型・辞書型ならとか。
だから、TypeScript みたいな型チェックツールが作られた

872 名前:デフォルトの名無しさん [2022/08/14(日) 22:57 ]
[ここ壊れてます]

873 名前::22.86 ID:I2sSNpX6.net mailto: >>839
死ね
[]
[ここ壊れてます]

874 名前:デフォルトの名無しさん [2022/08/15(月) 09:22:07.96 ID:c1YCm0IS.net]
>>838
どういうこと?

875 名前:デフォルトの名無しさん [2022/08/15(月) 13:07:09.65 ID:RvdaGkLE.net]
>>841

dict['key'] = value

dict.get('key') = value

取得したvalueがFalseになるとき、つまり0とかNoneとか空白のとき
if dict['key'] is not True になる。値はあるにも関わらず
一方
if dict.get('key') is Ture なので、期待する挙動としてはgetのが正しい

値がダミー(0など)の辞書の用意とかありうるので

876 名前:デフォルトの名無しさん [2022/08/15(月) 14:06:42.23 ID:0GtlIRwB.net]
ああそういうことか
re.matchとかre.searchみたいなことをやりたいのか

辞書のキーがあるかないかbooleanの判定と値への処理は別の方がいいと思う
if 'key' in dでもKeyError処理はどっちでもいいけど

877 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 15:15:52.94 ID:gMKahu5b.net]
>>842
keyに対するvalueが0やNoneの時に
dict.get(key) is Trueにはならんやろ

dict.get(key, [default])を使うのは
keyに対応する値がデフォルト値の場合と
keyに対応する値が無くてデフォルト値が返される場合を同じように処理したい時だけ

bool判定したいならin演算子
KeyError使うのはkeyが存在しない状況が例外的な場合

878 名前:デフォルトの名無しさん [2022/08/15(月) 15:38:01.56 ID:RvdaGkLE.net]
>>844
ありゃならんな
これはすまん。なんか勘違いしとった。

stackoverflow why dict.get(key) instead of dict[key]?
参照

879 名前:デフォルトの名無しさん [2022/08/15(月) 19:52:08.21 ID:KlKo2Eqq.net]
わざわざメソッドとして用意されるほどの価値がないんだよなあ
2時代は重宝したのかな

880 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 20:37:42.59 ID:Xxg2cjph.net]
if (val := dic.get(key)) is not None:
は使うけどな



881 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 04:15:40.22 ID:MkpTU7zo.net]
次のコードがあります
h=[[[]]]*10
h[0].append([0,0])
理想としては
>[[[], [0, 0]], [[]], [[]], [[]], [[]], [[]], [[]], [[]], [[]], [[]]]
となってほしいのですが、現実は
>[[[], [0, 0]], [[], [0, 0]], [[], [0, 0]], [[], [0, 0]], [[], [0, 0]], [[], [0, 0]], [[], [0, 0]], [[], [0, 0]], [[], [0, 0]], [[], [0, 0]]]
となってしまいます
どうしたら理想の形になるでしょうか?

882 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 07:26:37.30 ID:GKkpSlmU.net]
内包表記使って初期化

883 名前:デフォルトの名無しさん [2022/08/16(火) 08:04:39.39 ID:9vnyTUy7.net]
[[[], [0, 0]] if i == 0 else [[]] for i in range(10)]

884 名前:デフォルトの名無しさん [2022/08/16(火) 08:06:35.47 ID:9vnyTUy7.net]
h=[[[]] for i in range(10)]
h[0].append([0,0])

885 名前:デフォルトの名無しさん [2022/08/16(火) 11:31:22.44 ID:2x3mrzZQ.net]
要件後出しまくりとか
ゴールポスト移動させまくりとか
チョンメンタルの香具師とは付き合いたくないな

886 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 13:20:06.97 ID:5W303LUa.net]
差別主義者で今どき香具師とか使ってるジジイとか逆に誰も付き合いたくないだろ

887 名前:デフォルトの名無しさん [2022/08/17(水) 16:37:01.73 ID:tMNGLQPx.net]
pandas のread_excelで式が入っている箇所の値を計算値ではなく、
整形されたテキスト値の方を取りたい場合はどうしたら良いのでしょうか?

数値で6.6がテキスト値として”7”として表示されている”7”の方の値をとりたいです。

888 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 18:19:41.22 ID:8E4xUz8+.net]
>>854
Excelファイル内のデータとしてあるのは数値の6.6だけで
文字列の7という値はデータとしてファイルには存在しないので
直接読み取るのは無理

read_excelでdtypeやconverterを指定して数値の6.6を文字列の7に変換するか
一旦dfに読んでから変換するか

889 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 04:13:52.58 ID:OEqoy/Kx.net]
0.00000001から10000.xxxxくらいまで取り得るfloatの変数を、数字の表記で文字列に

890 名前:変えたいのですが、
str()だと、0.0001未満の値が"1e-05"のような指数表記になってしまいます
一方f-string(format)だと、".8f"等で全桁表記はできますが、小数点以下が常に8桁で0で埋められてしまいます
(例 0.00001→0.00001000)
末尾には余計なゼロは付けず、かつ指数表記にならない形でfloatを文字列にする簡単な方法はありますか?
rstrip('0')など使って余計なゼロを処理するしかないでしょうか?(この場合、100.0などのゼロは削除できないので判定が必要そうで単純にはいかなそうですが)
[]
[ここ壊れてます]



891 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 08:18:05.71 ID:cEC5FUVy.net]
>>856
numpy.format_float_positional
ググったらすぐ出て来た

892 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 08:58:00.71 ID:8X5QyRnM.net]
>>855
ありがとうございます。やはりできないのですね。
オプション探してみましたがそれらしいものがなかったので。
場所ごとに与えられた式が同じとは限らないので、
エクセル側で読み込み用の文字列を作成することにしました。

893 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 16:36:53.18 ID:Sofq2Da+.net]
条件分岐について質問です
3の倍数であるかどうかを判定する関数func1()とfunc2()を書いたのですが、
どちらの書き方のほうが良いでしょうか?
https://paiza.io/projects/mbEoYGp5wy7cU2oqpoTLbA

894 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 16:40:44.96 ID:s/eA3jUD.net]
当然1

895 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 16:48:56.73 ID:X/mZUHYK.net]
>>859
3の倍数が例外的な事象と言う事を表現したいならワンチャン2の可能性もあるかも

896 名前:859 mailto:sage [[ここ壊れてます] .net]
回答ありがとうございます

なぜfunc2()の書き方はあまり良くないのでしょうか?
よろしければ理由も教えて貰えるとありがたいです

897 名前:デフォルトの名無しさん [2022/08/18(木) 17:56:26.08 ID:GYRCxwaB.net]
すべてのnumは3の倍数かそうでないかのどちらかである、つまり必ずどちらかの処理が実行される事が一目で理解できる点ではfunc1がベター
一方で3の倍数の時は処理を行わず早期リターン、3の倍数でない時は長い処理を行う、といった場合はfunc2

898 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 18:55:31.69 ID:Rcho8+Nh.net]
いや、return入れるならelseのときもreturnしろよ
両方入ってるなら2でもいいと思うけど、片方だけ終わらせるために入れるなら関数なのかサブルーチンなのかわからんからダメだろ

899 名前:859 mailto:sage [2022/08/18(木) 19:10:48.59 ID:Sofq2Da+.net]
>>863
なのでこの場合はfunc1()なんですね
ありがとうございました

900 名前:859 mailto:sage [2022/08/18(木) 19:15:55.23 ID:Sofq2Da+.net]
>>864
コードはなるべく短い方がいいと思ったので使わなくて済むところでは使いませんでした
関数なのかサブルーチンなのか分からないと駄目とはどういうことですか?



901 名前:デフォルトの名無しさん [2022/08/18(木) 20:03:27.19 ID:Ly249j22.net]
こっちのが好き

def is_multiple(num): return num%3 == 0

902 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 21:14:57.76 ID:uWlfhjm8.net]
>>864
アラカン先輩ちぃーすっ

903 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 21:32:20.64 ID:49aIw1a5.net]
>>867
判定処理と判定結果を表示する処理を分離しましょうという意味では同意する

けどis_multipleという関数名で3の倍数かどうか判定されるのは違和感しかない

じゃどういう名前にするのがいいかと考えると判定処理をわざわざ関数化するほどではないんじゃないかという気がする

904 名前:デフォルトの名無しさん [2022/08/19(金) 03:09:01.80 ID:FK1lT4BX.net]
def b_is_multiple_of_a(a: int, b:int): return bool(b % a == 0)

if b_is_multiple_of_a(a=5, b=10):
__print('可読性低すぎる')

905 名前:デフォルトの名無しさん [2022/08/19(金) 11:27:50.19 ID:scgMDta4.net]
アーリーリターンは何も珍しい

906 名前:アと時や無い []
[ここ壊れてます]

907 名前:デフォルトの名無しさん [2022/08/19(金) 11:28:55.77 ID:scgMDta4.net]
>>870
関数改行すんならifも改行すんなよ

908 名前:デフォルトの名無しさん [2022/08/19(金) 11:30:34.29 ID:scgMDta4.net]
しないなら

909 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 18:24:24.93 ID:opjWCie4.net]
def func3(n):
p = 0
while n > 0:
p += n % 10
n //= 10
return not (p % 3)

910 名前:デフォルトの名無しさん mailto:sage [2022/08/20(土) 10:11:04.26 ID:FuR2a/w3.net]
>>710
https://github.com/opencv/opencv/issues/22088

4.6.xは色々ダメポ



911 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
a = [1,2,3,4,5]
b = [2,3,4,5,6]
c = []

for i in range(5):
c.append(a[i] + 2*b[i])

こういうのをリスト内包表記で書くのは無理でしょうか

912 名前:デフォルトの名無しさん mailto:sage [2022/08/20(土) 23:35:43.31 ID:mymTDVML.net]
aとbの要素数が同じだったら[i+2*j for i,j in zip(a,b)]でいけね?

913 名前:デフォルトの名無しさん [2022/08/20(土) 23:38:46.37 ID:cHNXWuBU.net]
c=[x+2*y for x,y in zip(a,b)]

914 名前:デフォルトの名無しさん mailto:sage [2022/08/20(土) 23:39:36.80 ID:mymTDVML.net]
普通にrangeでも
c=[a[i]+b[i] in i for range(5)]でできるかな

915 名前:デフォルトの名無しさん [2022/08/21(日) 01:03:28.95 ID:uqbZs7r8.net]
どうでもいいけど
c = [i + (j * 2) for i, j in zip(a, b)]
と書きたいな俺は
# (1*i) + (2*j) のようなときのみ(2*j)でも可
# 計算スタックは()でくくる
初心者のうちは特に気をつけたい。動けばいいやんは動かなくなる原因になる

916 名前:デフォルトの名無しさん [2022/08/21(日) 01:23:15.12 ID:m1bd5huk.net]
>>876
好きなのを選び多摩へ
c = [(a+1) + (b+2)*2 for a,b in enumerate([i for i in range(5)])]
c = [(a+1) + b*2 for a,b in enumerate([i for i in range(2, 7)])]
c = [a + 2*b for a,b in zip([i for i in range(1,6)],[j for j in range(2,7)])]

917 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 01:38:11.30 ID:X34OpE8X.net]
ありがとうございます!

918 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 06:47:07.90 ID:SCvvVl9f.net]
def main(argv: Sequence[str]) -> None:


これってどういう意味というか、なにがやりたいんですか?

def main(argv):
ならmainにargvを渡すだけで分かりやすいんですが

919 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 10:46:46.24 ID:1U/+Hx4a.net]
>>883
型ヒントっていうヤツでしょ
おじさんはもう新しいこと覚える気力ないから
どういう機能かは自分でググってくれ

920 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 10:59:40.26 ID:LqJQ4HOS.net]
>>883
argvの型がstrのシーケンスで戻り値の型がNoneってこと
シーケンスはlistやtupleのように長さが事前に分かってて各要素にインデックスで直接アクセスできるようなコレクションの総称



921 名前:デフォルトの名無しさん [2022/08/21(日) 13:04:30.41 ID:j3ukytx2.net]
そこまで型ゴリゴリにするならpythonじゃなくても(じゃない方がむしろ)良いと思うから
放置してる

922 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 13:07:09.50 ID:JM/HSGoB.net]
>>884
型ヒントでググりました
注釈だそうですね
要するにいらないんじゃないか!

923 名前:デフォルトの名無しさん [2022/08/21(日) 14:03:22.39 ID:uqbZs7r8.net]
型ヒント(と開発環境)があると作業効率がずっと上がる
https://imgur.com/jtSAuu4.png
型ヒントのない世界は無
https://imgur.com/BuL77EC.png

オジジでもない限り、初学者は型ヒントつけるクセつけてったほうが
大きいコード書くようになったときなんかに助かるで

924 名前:デフォルトの名無しさん [2022/08/21(日) 14:29:46.94 ID:j3ukytx2.net]
そこでハンガリアンですよωωω=2πf

925 名前:デフォルトの名無しさん [2022/08/21(日) 14:38:59.74 ID:jAGl7lqb.net]
実際使ってみると、版画リアンはものすごく楽。
名前というものは被るように出来てるものらしい。
とはいえ推奨はしない。

926 名前:デフォルトの名無しさん [2022/08/21(日) 14:45:29. ]
[ここ壊れてます]

927 名前:71 ID:HDFqY1eo.net mailto: Pythonでローカルサーバーを立ててhtmlの確認をしたいのですが、SSIを使いたいため、以下のスクリプトを使用しています。
https://github.com/danvk/ssi-server/blob/master/ssi_server.py
GITからクローニングして、MacOS + python 3.10.5で動作確認させたところ問題なく動きました。
Windows10 + Python 3.10.5で実行すると、localhostへのアクセス時に文末のエラーが出て動きません。
同一のクラウド上のファイルを参照して実行しています。GITからはMacで落としましたが、改めてwindowsで落としても同じでした。
MacOSでは動いているのでWindowsの環境なのかと思いつつ、何が原因かわからずにいます。
アドバイスください。

------エラー文章--------
Exception occurred during processing of request from ('::1', 58693, 0, 0)
Traceback (most recent call last):
File "C:\Users\UserName\AppData\Local\Programs\Python\Python310\lib\socketserver.py", line 683, in process_request_thread
self.finish_request(request, client_address)
File "C:\Users\UserName\AppData\Local\Programs\Python\Python310\lib\socketserver.py", line 360, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "C:\Users\UserName\iCloudDrive\web\ssi_server.py", line 37, in __init__
SimpleHTTPRequestHandler.__init__(self, request, client_address, server)
File "C:\Users\UserName\AppData\Local\Programs\Python\Python310\lib\http\server.py", line 651, in __init__
super().__init__(*args, **kwargs)
File "C:\Users\UserName\AppData\Local\Programs\Python\Python310\lib\socketserver.py", line 747, in __init__
self.handle()
File "C:\Users\UserName\AppData\Local\Programs\Python\Python310\lib\http\server.py", line 425, in handle
self.handle_one_request()
File "C:\Users\UserName\AppData\Local\Programs\Python\Python310\lib\http\server.py", line 413, in handle_one_request
method()
本文長すぎの為続きは次に書きます
[]
[ここ壊れてます]

928 名前:デフォルトの名無しさん [2022/08/21(日) 14:46:16.53 ID:HDFqY1eo.net]
続きです。


File "C:\Users\UserName\iCloudDrive\web\ssi_server.py", line 40, in do_GET
SimpleHTTPRequestHandler.do_GET(self)
File "C:\Users\UserName\AppData\Local\Programs\Python\Python310\lib\http\server.py", line 655, in do_GET
f = self.send_head()
File "C:\Users\UserName\AppData\Local\Programs\Python\Python310\lib\http\server.py", line 679, in send_head
path = self.translate_path(self.path)
File "C:\Users\UserName\iCloudDrive\web\ssi_server.py", line 57, in translate_path
content = ssi.InlineIncludes(fs_path, path)
File "C:\Users\UserName\iCloudDrive\web\ssi.py", line 31, in InlineIncludes
content = open(path).read()
UnicodeDecodeError: 'cp932' codec can't decode byte 0x84 in position 1163: illegal multibyte sequence
----------------------------------------

929 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
GITって何て読むの?
じっと?ぎっと?

930 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 15:41:28.40 ID:gzL+j7A8.net]
kit
git



931 名前:デフォルトの名無しさん [2022/08/21(日) 15:50:29.96 ID:Tt3lkFsn.net]
>>888
え、上が当たり前の感覚なんだけど
昔の人は下の状況でどうやってコード書いてたの? 引数とかオプションとかメソッドとか
ソースあたったりdir連打?

932 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 15:50:38.42 ID:tAy7F/Zf.net]
>>892
たぶんこれでいけるんじゃね
content = open(path, encoding = "utf-8").read()

933 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
>>888
その比較は型ヒント関係ないやろ

934 名前:デフォルトの名無しさん [[ここ壊れてます] .net]
>>895
help

935 名前:デフォルトの名無しさん [[ここ壊れてます] .net]
>>896
ありがとうございます。
まだ上手く直せていないのですが、試していたらindex.htmlに日本語があるとWindowsではエラーが出ることがわかりました。
ssi_server.py、ssi.pyで正しく日本語を読むようにすればいいということでしょうか。

936 名前:デフォルトの名無しさん [[ここ壊れてます] .net]
>>896
ssi.pyの31行目を教えていただいたものに書き換えても駄目でした。。。
他に試してみることがあればぜひ教えてください。お願いします。

937 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
tensorflow Liteというのがあって、int8とかでTPU使うと計算が速いらしいのですが、調べても使い方が複雑すぎていまいちよくわかりません
初心者にもわかりやすくまとまってるサイトはありま

938 名前:ケんか?
もしくはどなたかが簡潔にまとめていただけると助かります
[]
[ここ壊れてます]

939 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
どこまで分かってるか分かってないか書いたほうがいいです

940 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 17:32:33.39 ID:4RZQsnIa.net]
>>902
converter = tensorflow.lite.TFLiteConverter.from_saved_model(export_dir)
tflite_model = converter.convert()
とすれば変換できるみたいですが、まずtensorflow.lite.TFLiteConverterがありません
私の環境ではtensorflow.python.lite.TFLiteConverterかなと思いましたが、ありません
tensorflow.lite.pythonにTFLiteConverterではなくtflite_convertがあるのを見つけました
tflite_convert.dtypes.int8というのが存在するので、これを設定すればいいのかなとは思うのですが
あと何したらいいのか見当がつきません



941 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 17:50:14.70 ID:y+zMOwhn.net]
>>899
index.htmlは何の文字コードで保存されてるの?
Linuxで動いてるのと同じならUTF-8だと思うけど、Windows側で弄った時に文字コード変わってると
ややこしいから確認したい

942 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 17:56:00.04 ID:y+zMOwhn.net]
>>900でもそうだけど
ダメだった時に同じエラーが出たのか、違うエラーが出たのかははっきり書いた方が良い
エンコーディング指定をこれにしても同じ結果になる?
content = open(path,encoding='utf-8_sig').read()

943 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 18:09:49.63 ID:YEW47Y5U.net]
ウェブ系など、すべてのシステムはUTF-8

でも、Windows だけは、CP932(shift-jis)。
5ch も、sjis だけどw

こういうシステムは普通はない

944 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 18:14:09.27 ID:YEW47Y5U.net]
>>892
の最後の行に書いてある

>UnicodeDecodeError: 'cp932' codec can't decode byte 0x84 in position 1163: illegal multibyte sequence

UnicodeDecodeError: 'cp932'
cp932 でしょ?

945 名前:デフォルトの名無しさん [2022/08/21(日) 18:17:56.59 ID:HDFqY1eo.net]
>>904-905
content = open(path,encoding='utf-8_sig').read()
で解決しました!
index.htmlはUTF-8で保存されていました。
後学のために単にutf-8だったときのエラーメッセージと元のエラーメッセージの比較をしようと思ったのですが、
utf-8指定でも動作するようになってしまって、その点はよくわからずでした。
(最初のときは違う行に書いてしまったかもしれません)

レベルが低くせっかく即答いただいたのに手間取ってすみませんでした。ありがとうございました。

946 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
今日初めてPython落としました!
何からやったらいいのかな?

947 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
まずは交番に問い合わせ

948 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
ニシキヘビ属(Python)は、爬虫綱有鱗目ニシキヘビ科(ボア科ニシキヘビ亜科とする説もあり)に属する属。ニシキヘビ科の模式属。

949 名前:デフォルトの名無しさん [2022/08/21(日) 21:56:34.82 ID:uqbZs7r8.net]
class Foo():
__def __init__(self, bar:Bar):
____self.bar = bar

他のクラスのインスタンスをselfで受けるのって慣習ですか?
特に必要なければしなくてもよい?

950 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 22:08:55.27 ID:pxrRhRxl.net]
>>912
質問の意図がよく分からない

FooのインスタンスがBarのインスタンスに依存してて
コンストラクタで依存するインスタンスを受け取って参照を保持しておきたいというのがそのコードの意味



951 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 22:36:44.36 ID:m1bd5huk.net]
ちんちんシュッシユ

952 名前:デフォルトの名無しさん [2022/08/21(日) 22:37:39.35 ID:uqbZs7r8.net]
>>913
fooはインスタンス生成時点のbarのインスタンス情報が要るけど
生成後は要らない、他のメソッドで使わないとき、self.barで保持する必要がないと思うんだけど、そういうコードあんまり見たことないなーと思って

def Foo():
__init(self, bar):
____x = bar.baz[0] * 2
____self.calc(bar.data)

とかでいいときもあると思うんだけど
だいたいインスタンス変数にするだしょ
なんか理由あんのかなっていう

def Foo():
__init(self, bar):
____self.bar = bar
____x = self.bar.baz[0] * 2
____self.calc(self.bar.data)

953 名前:デフォルトの名無しさん [2022/08/21(日) 23:00:36.99 ID:sTNlugjb.net]
何見たのか知らないけど保持する必要がない

954 名前:ならインスタンス変数にする必要ないね []
[ここ壊れてます]

955 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 23:15:46.41 ID:YEW47Y5U.net]
is-a・継承・一種じゃなくて、has-a・包含・部品化でしょ

Foo は、Bar という部品を持っている

956 名前:デフォルトの名無しさん mailto:sage [2022/08/22(月) 07:03:46.35 ID:nh7qwDlg.net]
どなたか>>903わかりませんか?

957 名前:デフォルトの名無しさん mailto:sage [2022/08/22(月) 08:53:29.31 ID:/DEJsMLY.net]
>>915
> とかでいいときもあると思うんだけど
だいたいインスタンス変数にするだしょ

ルールも慣例もないから君がみた例がそうだっただけ
ただコンストラクタで受けるとき普通はクラス全体として依存するからインスタンス変数で受けることが多いね

まだはやいと思うけどコード設計レベルの話だと、依存しない型をコンストラクタ引数に持つのは余計な情報を含み生成コストが高くなるから、本当に必要な情報だけコンストラクタで渡すか、ファクトリメソッド(staticmethodかクラス外のただの関数)を経由すると良い

958 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
>>903
>まずtensorflow.lite.TFLiteConverterがありません
Python 3.10 にtensorflow入れて確認したけど、あるよ
ちなみにtensorflow のバージョンは2.9.1

959 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
統一教会は半島人の醜さを如実に表してる

960 名前:デフォルトの名無しさん [2022/08/22(月) 14:10:57.26 ID:KX6mg0Ol.net]
質問が既に触っちゃいけない人レベルだと答える気も起きない



961 名前:デフォルトの名無しさん mailto:sage [2022/08/22(月) 17:08:51.25 ID:vrjH2pLG.net]
>>920
こちらは2.11.0と出ました
こんな感じです
どっとup.org/uploda/どっとup.org2859768.png

962 名前:デフォルトの名無しさん mailto:sage [2022/08/22(月) 17:09:07.20 ID:vrjH2pLG.net]
あ、Pythonは3.10.6です

963 名前:デフォルトの名無しさん mailto:sage [2022/08/22(月) 18:48:00.04 ID:KAheMTvm.net]
ちなみに、tensorflow.kerasも、tensorflow.python.kerasになってます

964 名前:デフォルトの名無しさん mailto:sage [2022/08/22(月) 19:13:09.43 ID:YpfCjhrS.net]
>>924
こちらはIDLEでやってるけど、そちらは何でやってるの?

>>>import tensorflow as tf
>>>tf.lite.TFLiteConverter
<class 'tensorflow.lite.python.lite.TFLiteConverterV2'>

と出るから、あなたの環境?ではtensorflow.lite.python.lite.TFLiteConverterV2 でできるかも?

965 名前:デフォルトの名無しさん mailto:sage [2022/08/22(月) 19:19:54.92 ID:mGTda2af.net]
>>926
おおお、なんか出ました!!!
ちなみにVSCodeです
これをTFLiteConverterだと思って使えばいいんですね
ありがとうございます

966 名前:デフォルトの名無しさん mailto:sage [2022/08/22(月) 19:38:48.82 ID:YpfCjhrS.net]
ふぅ〜〜、、また迷える子羊を救ってしまったオレはメシア! >>922はウンコ!!

967 名前:デフォルトの名無しさん mailto:sage [2022/08/22(月) 19:44:46.61 ID:7dOE9g6n.net]
×触っちゃいけない
〇自分のレベルでは触れない

968 名前:デフォルトの名無しさん mailto:sage [2022/08/22(月) 20:41:16.68 ID:xuCaDQYT.net]
(悪い)

969 名前:デフォルトの名無しさん mailto:sage [2022/08/23(火) 07:46:45.41 ID:AXaElLrn.net]
かっこ悪い

970 名前:デフォルトの名無しさん mailto:sage [2022/08/23(火) 11:45:38.02 ID:C7QGzGi8.net]
(インテグラ)



971 名前:デフォルトの名無しさん mailto:sage [2022/08/23(火) 15:21:34.49 ID:VG0bs36n.net]
Python的にはタプル

972 名前:デフォルトの名無しさん [2022/08/23(火) 18:20:21.00 ID:QvfGPIA0.net]
スクレイピングの勉強でも始めようと思って
FANZAから持ってるエロゲーのデータ取得しようと思ったけど「18歳以上ですか?」のページに飛ばされるからうまくいかないんだよな

それでぐぐってみたらちゃんと回避する方法も載っててさすがエロは人類の英知だなって

973 名前:デフォルトの名無しさん [2022/08/23(火) 18:21:32.45 ID:QvfGPIA0.net]
で、もしかして商品データのAPIとかあるんじゃないかと調べたら普通にあるじゃん
FANZAでAPIの使い方も学べてしまうわけだ

974 名前:デフォルトの名無しさん mailto:sage [2022/08/23(火) 21:00:11.70 ID:zoEAEgny.net]
プログラムが<b></b>で囲まれてるのがあるんですが、どういう意味がありますか?

975 名前:デフォルトの名無しさん mailto:sage [2022/08/24(水) 11:40:37.72 ID:GCuLQfVh.net]
def mySort(x):
_return x-n

ary=sorted(ary,key=mySort)

上記の様なソートで

976 名前:mySort関数に別の引数(n)を
与えたい場合はどのようにすれば良いのでしょうか?
[]
[ここ壊れてます]

977 名前:デフォルトの名無しさん [2022/08/24(水) 11:40:54.28 ID:GCuLQfVh.net]
age忘れたのでageます

978 名前:デフォルトの名無しさん mailto:sage [2022/08/24(水) 12:06:03.74 ID:nMDP5IX7.net]
>>936
<b></b> は、HTML のタグ。bold・太字

979 名前:デフォルトの名無しさん mailto:sage [2022/08/24(水) 13:10:02.55 ID:Q8Mi5AsJ.net]
>>937
functoolのpartialとか
lambdaでclosureとか

980 名前:デフォルトの名無しさん mailto:sage [2022/08/24(水) 13:42:19.22 ID:GCuLQfVh.net]
>>940 ありがとうございます。以下のような感じでいけました。
def sortX(n):
_def sub(x):
__return x-n
_return sub
ary=sorted(ary,key=mySort(5))



981 名前:デフォルトの名無しさん mailto:sage [2022/08/24(水) 13:44:20.36 ID:GCuLQfVh.net]
どうでもいいけど、sortX(n)はmySort(n)でした

982 名前:デフォルトの名無しさん mailto:sage [2022/08/24(水) 17:14:42.06 ID:MmGWx16i.net]
比較関数の名前はmyCmp()とかの方がよくないか

983 名前:デフォルトの名無しさん mailto:sage [2022/08/24(水) 18:49:27.66 ID:9+/sji0l.net]
比較関数そのものじゃないのでgen_my_cmpとかに死体

984 名前:デフォルトの名無しさん mailto:sage [2022/08/25(木) 11:52:57.48 ID:fZ4fACWe.net]
floor が「切り捨て」なのはどういう意味なんだろう?
建物の「階」において、たとえば「2.5階」の高さがあったとしてもそれは2階の範疇、という理解でいいのか?

985 名前:デフォルトの名無しさん mailto:sage [2022/08/25(木) 12:17:01.44 ID:t8dBENVC.net]
>>945
まぁ…ある意味?floorは床(底)、ceilは天井。金融でも
動詞だと倒す、床に押しつける的な意味合いも持つようだね

986 名前:デフォルトの名無しさん mailto:sage [2022/08/25(木) 12:18:32.67 ID:07FV37Yy.net]
>>945
ガウス記号って学校で習わなかったのか?

987 名前:デフォルトの名無しさん mailto:sage [2022/08/25(木) 12:35:27.45 ID:T8QO1Ud9.net]
習ったかもしんないけど、習った時以外に使ったことないな

988 名前:デフォルトの名無しさん mailto:sage [2022/08/25(木) 19:50:52.48 ID:JQLsrPvi.net]
フレームワークスレ動いてないのでここで

jinja2のmacroって1つのmacroにつき1ファイル必要ですか?
便利だけど結構なファイル量になりそう

989 名前:デフォルトの名無しさん mailto:sage [2022/08/25(木) 19:53:38.52 ID:JQLsrPvi.net]
できそうですね
自決しましたすみません

990 名前:デフォルトの名無しさん mailto:sage [2022/08/25(木) 22:12:05.52 ID:onQDGrDv.net]
潔い最期であった



991 名前:デフォルトの名無しさん mailto:sage [2022/08/25(木) 23:23:20.07 ID:11s99DpV.net]
ヒットアンドブローを書いてみました
ここは直した方がいい、って箇所がありましたら教えて頂きたいです
よろしくお願いします

https://paiza.io/projects/V9PHgwFh2EAyhgA2PxxUbQ

992 名前:デフォルトの名無しさん [2022/08/25(木) 23:48:36.58 ID:C7eFIied.net]
3文字以下を入力したらエラー

993 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 04:59:27.97 ID:8E2pwf5q.net]
>>952
数値チェック、桁数チェック、重複チェック追加
blowの計算が違う
2重ループの変数がすべてiなのはややこしい
answer_list、input_list、リストにするメリットを感じない

994 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 05:00:05.01 ID:8E2pwf5q.net]
import random
answer_list_int = []
while len(answer_list_int) < 4:
____random_number = random.randint(0, 9)
____if random_number not in answer_list_int:
________answer_list_int.append(random_number)
answer_str = "".join(map(str, answer_list_int))
print('''\
数当てゲームをします!
4桁の重複しない数字を当てて下さい!
入力のチャンスは7回までです
'終了する場合はexitと入力して下さい
''')
for i in range(7):
____while True:
________input_number_str = input(f'{i + 1}回目 4桁の重複しない数字を入力して下さい->')
________if input_number_str == 'exit' or (len(input_number_str) == 4 and input_number_str.isdecimal() and len(set(input_number_str)) == 4):
____________break
____hit = len([j for j in zip(input_number_str, answer_str) if j[0] == j[1]])
____if

995 名前:input_number_str == 'exit':
________break
____print(f'hitは{hit}です!')
____if hit == 4:
________print('クリアです!おめでとう!')
________break
____print(f'blowは{len(set(input_number_str) & set(answer_str)) - hit}です!\n')
if hit != 4:
____print(f'残念!当たりは{answer_str}でした!')
[]
[ここ壊れてます]

996 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 07:33:07.60 ID:90ir5d7g.net]
また人形遊びか

997 名前:デフォルトの名無しさん [2022/08/26(金) 10:37:48.28 ID:i2SIEm4o.net]
つまらんな
人間が出題してPC(または鯖)に解かせるhit&blowを描け

998 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 14:03:10.97 ID:b48ovCTY.net]
重複しないならシャッフルして作る方が好み
こんな感じの
answer_list_int = random.sample(range(10),10)[:4]

>>955
細かい事だけど
isdecimal()って全角数字もTrueになりそうな

999 名前:952 mailto:sage [2022/08/26(金) 15:53:44.20 ID:YT1F4ulB.net]
レスありがとうございました!
いろいろ改善してみたいと思います

1000 名前:952 mailto:sage [2022/08/26(金) 18:09:23.80 ID:YT1F4ulB.net]
修正しました
ややネストが深くなってしまいましたが

https://paiza.io/projects/nUxI-yeQLIlZSBGA4dmcKA



1001 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 19:10:15.58 ID:8E2pwf5q.net]
>>960
自分のスタイルで書けばいいと思うけど最終行はいかがなものか
print(f'\n残念!当たりは{"".join(answer_list)}でした!')

1002 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 21:56:17.10 ID:qaneYf7D.net]
標準ライブラリだけで、ローカルタイムゾーンのoffset値だけ取得したい(日本なら+9みたいな)のですが、直接取得できる方法などありますか?

1003 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 22:05:56.45 ID:Iy9DcYfZ.net]
マニュアル読め

1004 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 22:40:57.28 ID:qaneYf7D.net]
time.timezone / 3600
(→Asia/Tokyoだと -9 になる)
が一番簡素ですかね

1005 名前:952 mailto:sage [2022/08/26(金) 22:50:13.39 ID:YT1F4ulB.net]
>>961
ありがとうございます

もう1つだけどうしても気になる箇所があるのですが、
>>960の21行目で定義しているinput_number_strを、無意識のうちに
for文の外で使っちゃってるのですが、なぜエラーにならないのですかね?
Pythonではブロックは無視していい仕様なんですか?

1006 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 23:41:59.18 ID:8E2pwf5q.net]
>>965
関数ブロック(def/lambda)だけ考えればいい

1007 名前:952 mailto:sage [2022/08/27(土) 00:45:11.54 ID:eQp61XjW.net]
>>966
すごい仕様ですね、ちょっと受け入れるのに時間かかりそうです
ありがとうございました

1008 名前:デフォルトの名無しさん mailto:sage [2022/08/27(土) 10:36:29.81 ID:iQeLdPnf.net]
SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in the documentation:
えいちちーぴーえす://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy

これはどうしろとおっしゃっているのですか?
data['column'][i]=(2**x)
こういう式に文句言われたんですが

1009 名前:デフォルトの名無しさん [2022/08/27(土) 11:13:27.05 ID:WyESGIww.net]
その警告文で検索したら秒で解決するけど、しなかった?

1010 名前:デフォルトの名無しさん mailto:sage [2022/08/27(土) 11:33:42.24 ID:z31K+Zx9.net]
pd.set_option('mode.chained_assignment', None)



1011 名前:デフォルトの名無しさん mailto:sage [2022/08/27(土) 13:32:06.26 ID:BTzbpX5q.net]
よくまとまってる
https://www.dataquest.io/blog/settingwithcopywarning/
https://linus-mk.はてぶろ.com/えんとり/2019/02/02/200000
https://linus-mk.はてぶろ.com/えんとり/2019/03/14/235402
https://linus-mk.はてぶろ.com/えんとり/2019/05/18/161328

1012 名前:デフォルトの名無しさん [2022/08/27(土) 14:42:22.60 ID:n5VuK+5f.net]
奥が深い


1013 名前:タズブズブ []
[ここ壊れてます]

1014 名前:ややや mailto:vision_xxx@icloud.com [2022/08/27(土) 20:00:28.28 ID:IQqR6XHY.net]
https://qiita.com/mimuro_syunya/items/2464cd2404b67ea5da56

上のサイトを参考にしてジュピターノートブックからサイトの最後の方にあるソースコードをコピペして最後の3行をGetメソッドで指定したURLに飛びませんでした。
最後の3行を変更せずにやっても出来ませんでした!

上記のサイトの実行コマンドをbotファイルにするくだりはやってます。

目立ったエラーなどは現在無いです。


ブラウザ立ち上げた後にそのまま処理を行うにはどうすれば良いでしょうか?

1015 名前:デフォルトの名無しさん mailto:sage [2022/08/27(土) 21:29:38.61 ID:RK2Xjm2V.net]
日時と得点からなる表Aがあったとします
最高得点が更新された履歴の表を作りたいです
Aの各要素にその日時より古い日時のAの全要素をouter joinかmergeでくっつけて、
くっつけた表の部分をgroupbyしてmaxを求め、
各要素の得点とmaxの得点が一致しているものだけをselectしたいのですが、
SQLならできるのにpandasではやり方がいまいちわかりません
普通にmergeしただけだと共通項があるものしかくっつけられないです
どう書けばいいか教えてください

1016 名前:デフォルトの名無しさん mailto:sage [2022/08/27(土) 22:11:52.80 ID:8j5Nb3+9.net]
>>974
日時の順にループで1行ずつ最高点を更新したかどうかを判定して
更新してれば新しい表に(日時, 得点)を追記していけばいいよ
O(n)なのでouter joinするやり方よりも断然効率的

1017 名前:デフォルトの名無しさん mailto:sage [2022/08/28(日) 09:44:53.82 ID:my7A80XW.net]
history=model.fit(x,t,epochs=epochnum,batch_size=batchnum,callbacks=[checkpoint,lr])
この行を実行すると、
Epoch 101/2000
1/1 [==============================] - ETA: 0s - loss: 0.11/1 [==============================] - 0s 3ms/step - loss: 0.1453 - mae: 0.2880
Epoch 102/2000
1/1 [==============================] - ETA: 0s - loss: 0.11/1 [==============================] - 0s 5ms/step - loss: 0.1452 - mae: 0.2888
などと出てきてしまいます
・完全に黙らせる場合
・Epoch数だけ表示させる場合
どうしたらいいでしょうか?

1018 名前:デフォルトの名無しさん mailto:sage [2022/08/28(日) 16:01:50.37 ID:kZD7TOdo.net]
自己解決しました
失礼しました

1019 名前:デフォルトの名無しさん [2022/08/28(日) 16:36:09.29 ID:q65Nt2bT.net]
解決法も書いてってや
後輩のために

1020 名前:デフォルトの名無しさん mailto:sage [2022/08/28(日) 17:39:31.88 ID:ULmp/dD0.net]
失礼します
class内のメソッド宣言の際に、1つ目の引数にselfを必ず入れなければならない
理由や背景が何となくしか分かりません
それと、selfはJavaで言う所のthisと同じようなものと考えてよいですか?



1021 名前:デフォルトの名無しさん [2022/08/28(日) 17:47:12.52 ID:q65Nt2bT.net]
そう
別にthisでもいいよ。selfでなく

1022 名前:デフォルトの名無しさん mailto:sage [2022/08/28(日) 18:48:06.80 ID:ScmkE54Q.net]
他のOSでの挙動は分からないけどWindows版Pythonで
socketのrecvで受信待機している時に他のpyファイルを動かすと動作が停止してしまいます
終了ではなく永遠に待機している感じ
recv中に例外エラーも出ないのですが対処法ありますか?

1023 名前:979 mailto:sage [2022/08/28(日) 19:22:25.55 ID:ULmp/dD0.net]
>>980
ありがとうございました

1024 名前:デフォルトの名無しさん mailto:sage [2022/08/28(日) 20:31:29.47 ID:A7P8ZEj/.net]
40代未経験だがPython覚えればプログラマとして就職できる?

1025 名前:デフォルトの名無しさん mailto:sage [2022/08/28(日) 20:42:53.44 ID:5PlXdxXB.net]
他の業務知識があれば出来るんじゃね?

研究者は無理やろ

1026 名前:デフォルトの名無しさん mailto:sage [2022/08/28(日) 21:04:51.02 ID:K7gdf/So.net]
求人数はJavaとJavaScriptとPHPの方が多いのだわ
PythonはM

1027 名前:L系の求人が多いことを考えると
未経験から最初に業界に首をねじ込むための言語としては
あんまりおすすめせんのだわ
[]
[ここ壊れてます]

1028 名前:デフォルトの名無しさん mailto:sage [2022/08/28(日) 21:05:19.00 ID:K7gdf/So.net]
あ、985が立てるのか…

1029 名前:デフォルトの名無しさん [2022/08/28(日) 21:25:02.87 ID:0hsZj3lg.net]
cudaで処理速度が20万倍っていうデータがあるんだけど
みんなはどれくらいの速度が適性だと思う?

1030 名前:デフォルトの名無しさん mailto:sage [2022/08/28(日) 22:33:49.95 ID:gOapjWvD.net]
>>983
文系で未経験者の王道は、Ruby on Rails でポートフォリオを作って転職する

YouTube で有名な雑食系エンジニア・KENTA の初心者向けRailsサロンとか、
RUNTEQ、東京フリーランスのデイトラなど

かよちんchannel

【半年間使ってわかった】PythonのwebフレームワークDjangoを学ぶメリット・デメリット
www.youtube.com/watch?v=783JIyyyxMk

かよちんは未経験の大学生で、Railsでポートフォリオを作って就職した。
1年運用で働いたが、開発したかったので転職した。
転職先では、Django で開発している

彼女は、初心者にはDjangoよりも、Railsを勧めている

理系なら大学院数学科とか、
AWS Certified Machine Learning(機械学習) - Specialty の資格があれば強い



1031 名前:デフォルトの名無しさん mailto:sage [2022/08/28(日) 23:01:16.78 ID:Uxqu4oWF.net]
>>970 はアカン例やろ

1032 名前:デフォルトの名無しさん mailto:sage [2022/08/28(日) 23:04:54.48 ID:n2t07jCF.net]
速ければ速いほどよい

1033 名前:デフォルトの名無しさん [2022/08/29(月) 14:20:05.87 ID:HM6f0MF8.net]
q="太郎君の年齢は?"
ans=12
ans2="十二"


while True:
try:
text=int(input(q))
if text==ans:
print("正解")
elif text==ans2:
print("正解")
break
except:
print("不正解")

これで12、十二とinputで入力すると正解と
それ以外だったら不正解で最初に戻ると進行するようにしたいのですが
12以外だと全部不正解になってしまいます

1034 名前:デフォルトの名無しさん mailto:sage [2022/08/29(月) 14:31:09.09 ID:IoynIqHg.net]
>>991
text=int(input(q))
でint型にキャストしようしてるんだから、例えば十二とか入れたら
文字列⇒数値へキャストできずに例外が発生してexcept:のルートに入っちゃうだろ

1035 名前:デフォルトの名無しさん mailto:sage [2022/08/29(月) 14:31:14.78 ID:lEy6aHnj.net]
せめて質問文らしく書こうな。
text = int("十二")
の結果が0だからだよ。
int()をなくして12も"12"に変更して、全て文字列で扱うようにすれば

1036 名前:デフォルトの名無しさん [2022/08/29(月) 14:35:17.73 ID:SW+mNQvs.net]
慣れないうちは簡単な書き方しよう
ごちゃごちゃ詰め込まない

while True:
__print ('年齢は?')
__ret = input()
__if ret == 12:
____print('ok')
____break
__elif ret == '十二':
__else:
____print('no')

if ret in [12, 12, '十二']
でもよい

1037 名前:デフォルトの名無しさん [2022/08/29(月) 14:38:41.17 ID:HM6f0MF8.net]
>>992-993
ありがとうございます
自分の場合まずint()からしてよく理解してなかったです

1038 名前:デフォルトの名無しさん [2022/08/29(月) 14:42:50.09 ID:SW+mNQvs.net]
うそ
ret = input()
ret in ['12', '12', '十二']
だわ

漢数字や全角ありうるならint型に変換しないほうがよいぬ

1039 名前:デフォルトの名無しさん mailto:sage [2022/08/29(月) 14:44:38.06 ID:eTTKQ396.net]
>>994
慣れないうちは動作確認しよう
エラーは詰め込まない

1040 名前:デフォルトの名無しさん [2022/08/29(月) 15:21:46.13 ID:XtVEyX62.net]
9+9+980



1041 名前:デフォルトの名無しさん [2022/08/29(月) 15:22:51.65 ID:XtVEyX62.net]
うめ

1042 名前:デフォルトの名無しさん [2022/08/29(月) 15:23:06.50 ID:XtVEyX62.net]
https://mevius.5ch.net/test/read.cgi/tech/1653540315/

1043 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 98日 16時間 57分 58秒

1044 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<284KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef