X

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

レス数が1000を超えています。これ以上書き込みはできません。
2022/05/22(日) 22:25:08.74ID:/hGmbW/Z
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
派生言語はそれぞれ専スレがある(この板にあるとは限らない)ので、そっち池。
「Ruby」「Rails」「某言語では」「クソチョンw」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。

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

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

Pythonの★ソースコードをそのまま5ちゃんに貼るとインデントが崩れてチヌ★
【【【複数の連続半角スペースはなにもなかったことにされる&タブは普通には入れられない】】】掲示板の仕様なので、
プログラム文は↓等の、いわゆるコードうp用サイトに貼ってこいください。
ttps://techiedelight.com/compiler/  Run Code機能あり。
ttp://ideone.com/      デフォ設定はC用のため、言語選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。

◇Python公式◇ http://www.python.org/
◇まとめwiki◇ ttp://python.rdy.jp/wiki.cgi

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

次スレたては >>985 あたりが挑戦する。
### END OF TEMPLATE ###
2022/05/22(日) 22:37:38.56ID:jNpDIIz5
立て乙
3デフォルトの名無しさん
垢版 |
2022/05/24(火) 13:49:28.09ID:cQhl8P2i
かわいい女の子に上目遣いで拗ねたように「いじわる」と言われると興奮するんです
4デフォルトの名無しさん
垢版 |
2022/06/05(日) 08:46:24.02ID:Sg+yaBaV
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.32ID:ocueg4o5
よーしらんが、論理回路の問題なんだろ?
なら一時的にif(if(if))みたいなネストの深いクソコード書いて、細かくデバック通すか
関数宣言をさぼらずに、(df["PRICE1"]>0)や(df["P1(%)"]>25)に分かりやすい関数名付けたほうがいいんじゃねえかな
2022/06/05(日) 12:23:41.62ID:NOI2DZIw
datetime.datetimeクラスの順序比較に手を加えたくなって、モジュールのソースをみたら_cmp()メソッドが比較の本体だったので
ttps://techiedelight.com/compiler/?zbRJ というコードで試したのですが、そもそも_cmp()が呼ばれません
これって、私は何を間違えているのでしょう? (なお、当初やりたかったこと自体は__eq__, __gt__, __ge__, __le__, __lt__, __ne__を直接オーバーライドすることで達成できました)
7デフォルトの名無しさん
垢版 |
2022/06/05(日) 12:40:05.08ID:u0j22vIZ
条件に合うものを残すより
条件に合わないものを消していく方が効率が良い
8デフォルトの名無しさん
垢版 |
2022/06/05(日) 12:44:51.80ID:u0j22vIZ
>>6
https://qiita.com/nkennek/items/8c54365cb873cca8730a
https://www.delftstack.com/ja/howto/python/python-private-method/
https://blowup-bbs.com/python-class3/
2022/06/05(日) 14:26:03.02ID:NOI2DZIw
>>8
お返事ありがとうございます
しかし、_cmpのアンダースコアは一つですし、AttributeErrorが発生したりせず単に呼ばれないだけ(比較自体は出来ているので親クラスの_cmp()が呼ばれているはず)です
マングル化に関するページをご紹介いただいた意味がよく分かりません
10デフォルトの名無しさん
垢版 |
2022/06/05(日) 14:57:15.34ID:ocueg4o5
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関数の使い方覚えたほうがいいぞ
2022/06/05(日) 15:01:54.57ID:v/p+BagL
>>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]]
2022/06/05(日) 15:18:41.40ID:v/p+BagL
プロンプトが無くて入力と出力が分かりにくかったので、プロンプト追加

>>>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]]
2022/06/05(日) 15:20:27.82ID:joAjo/JZ
>>5>>10>>11
ありがとうございます!
家帰ったら内容目通していじってみます
2022/06/05(日) 15:21:54.55ID:joAjo/JZ
>>12
正直かなり助かりました。
まだ家帰れてないので試せてないけど、かなり行けそうなイメージです
15デフォルトの名無しさん
垢版 |
2022/06/05(日) 15:24:04.14ID:udiiYXiV
>>9
>親クラスの_cmp()が呼ばれているはず

確かめた?
2022/06/05(日) 15:33:26.33ID:NOI2DZIw
>>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行目で定義したメソッドが呼ばれる

と考えていたのですが……継承に関する理解がどっかで間違っているのでしょうね
2022/06/05(日) 15:56:02.34ID:U0Dsg58D
俺も気になる。何で_cmp呼ばれんの?
18デフォルトの名無しさん
垢版 |
2022/06/05(日) 18:26:33.72ID:NPpCVuaP
foo を造ってるのが now() なので
foo の型が datetime のままなんじゃね
2022/06/05(日) 19:36:27.49ID:NPpCVuaP
print(super(DatetimeTest, self)._cmp)

AttributeError: 'super' object has no attribute '_cmp'
20デフォルトの名無しさん
垢版 |
2022/06/05(日) 19:37:47.11ID:NPpCVuaP
こっちは動く
https://techiedelight.com/compiler/?Jmnq
2022/06/05(日) 19:39:44.56ID:v/p+BagL
>>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
2022/06/05(日) 20:20:03.24ID:x6+Exssm
ジェネレーター式まで学習が進んだが
ちゃんと慣れないと突然でてきたとき「なんだこれ!?」ってなるとおもうわ

見やすくするためのものだからそんな複雑な構造で出てくることはないと思うが
2022/06/05(日) 21:55:46.01ID:NOI2DZIw
ID:NPpCVuaPさん、ありがとうございます

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

で、試していただいた ttps://techiedelight.com/compiler/?Jmnq ですと、>>16で私が考えたとおりの動作をしているように見えますね
となると、datetime.datetimeとHogeで何が違うのか……ちょっと脳味噌が煮えてきたので、一旦専ブラを閉じて頭を冷やします
2022/06/05(日) 23:10:11.97ID:v/p+BagL
>>23
dirで_cmpが見えるか見えないかの違いじゃないでしょうか

>>20 のdir(Hoge(0)), dir(Fuga(0))は伴に_cmpが見えますが
dir(datetime.datetime.now())は_cmpが表示されないのでアクセスできないんですよ
2022/06/06(月) 08:54:18.93ID:9r9DwyjN
見えないのはわかったけどその挙動を実現するための言語仕様ってあるんだっけ?
26デフォルトの名無しさん
垢版 |
2022/06/06(月) 09:18:43.10ID:Ug3DHjCK
本体はこっちじゃね
https://github.com/python/cpython/blob/main/Modules/_datetimemodule.c
27デフォルトの名無しさん
垢版 |
2022/06/06(月) 09:23:35.02ID:Ug3DHjCK
まずやるべきことは >15 だろ
2022/06/06(月) 09:43:37.49ID:zYl8ARh2
やりましたみなさん、分かりました!

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

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

したら_cmpが表示されましたよ、つまりdatetimeの本体は_datetimeで>>26のヤツじゃないでしょうか
2022/06/06(月) 09:50:52.59ID:PsDk58Y7
>>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で書かれたモジュールを読み込んで、未使用の名前を削除して、という工程の中になにかありそう、というあたりが今のところ私の限界です
2022/06/06(月) 09:54:12.32ID:Ug3DHjCK
なるほど _cmp は存在しなかったで FA
2022/06/06(月) 09:54:13.01ID:PsDk58Y7
皆さまいろいろとありがとうございます
やはり>>27さんのおっしゃるとおり、まず>>15さんの指摘を確かめなければならなかったようですね
2022/06/06(月) 09:56:28.25ID:9r9DwyjN
>>28
まじか
グローバルにも_cmpがあるからそれを消すためのコードと思いきや、datetime.datetime._cmpも消えるのね…
33デフォルトの名無しさん
垢版 |
2022/06/06(月) 10:03:42.68ID:Ug3DHjCK
>>29
そこで削除されてる _cmp は module のグローバルの _cmp であって
各クラス内の _cmp は削除されてないようにも観える
34デフォルトの名無しさん
垢版 |
2022/06/06(月) 10:05:27.81ID:Ug3DHjCK
>>32
かぶったが
解せぬ
2022/06/06(月) 10:13:54.31ID:zYl8ARh2
>>32
グローバルの_cmpを消す処理で合ってると思いますよ

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

_datetimeのimportに失敗したらdatetime.pyに書かれているdatetimeクラスが使われるし
グローバルの_cmpを消す処理が実行されないので
dir(datetime)でグローバルの_cmpが見えるし、dir(datetime.datetime)でself._cmpが見える
36デフォルトの名無しさん
垢版 |
2022/06/07(火) 17:25:02.03ID:NE4LVa9l
なんのための fake
2022/06/08(水) 06:15:05.14ID:8a3xVi5I
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 を先に実行させてもダメでした。
3837
垢版 |
2022/06/08(水) 07:56:30.16ID:Ty02xZw9
win環境なのですが2.x系では内部で
ANSI版のCreateProcessAを呼び出しているとのことで
そもそもダメということが分かりました
ctypesなど使ってCreateProcessWを直接呼び出すなどするしかないみたいです
39デフォルトの名無しさん
垢版 |
2022/06/08(水) 12:41:12.70ID:P10Nnex8
今のWindowsおすすめpython環境はなんですか?
教育用?にWindowsでのpython環境を作りたいです。
無印python、anaconda、PyCharmはどれがいいでしょうか。
エディタはVSCodeの利用を考えてます。

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

教えて下さい
2022/06/08(水) 13:17:16.31ID:Ylodbyzl
google colaboratry で十分
41デフォルトの名無しさん
垢版 |
2022/06/08(水) 13:42:31.40ID:rPUwIz8x
たとえば以下のようなリストが即興で欲しくなった場合ってどうしてます?
[[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())
42デフォルトの名無しさん
垢版 |
2022/06/08(水) 13:43:05.22ID:rPUwIz8x
0~12じゃねえわ11だった
43デフォルトの名無しさん
垢版 |
2022/06/08(水) 15:41:41.08ID:Mk/J73jd
>>39
前は素の python 入れて pip してた
Anaconda + conda 使ったこともある
Thonny + pip も良いと思う
44デフォルトの名無しさん
垢版 |
2022/06/08(水) 15:45:15.80ID:Mk/J73jd
np.arange(12).reshape((4, 3)).tolist()

[[y * 3 + x for x in range(3)] for y in range(4)]
2022/06/08(水) 15:50:39.30ID:WqwdOMp+
>>41
[list(range(i, i+3)) for i in range(12)[::3]]
2022/06/08(水) 15:55:39.94ID:SMHvnx3K
import more_itertools
list(more_itertools.chunked(range(12), 3))
47デフォルトの名無しさん
垢版 |
2022/06/08(水) 16:25:32.81ID:KT22GtKj
[np.array([0, 1, 2]) + 3*_ for _ in range(4)]
2022/06/08(水) 18:22:00.06ID:WqwdOMp+
>>41 さらに短くできた
[list(range(i, i+3)) for i in range(0,12,3)]

もう出尽くしたやろ、ワイのが一番やな、組み込みのみだし直感的だし
応用もきくし、ワイが一番やろw
2022/06/08(水) 18:40:08.42ID:3lPgPXCP
>>39
WinPython+VScodeが正解だぞ

anacondaは、Pythonを習得し、Pythonと外部ライブラリの境界を把握できるように
なった人のうち、anacondaを必要とする人だけが使うものだ
2022/06/08(水) 19:34:37.02ID:nVdli+zf
>>39
Pythonで何やりたいのかわかんねーからてきとーだけど
Dockerコンテナにanacodaとvscodeが正解
2022/06/08(水) 19:37:13.76ID:d7/kuIlk
dockerはdockerの勉強になるしwindowsだと安定しないから要らんな
52デフォルトの名無しさん
垢版 |
2022/06/08(水) 23:45:53.43ID:rPUwIz8x
>>44-48
ありがとう、勉強になった!
53デフォルトの名無しさん
垢版 |
2022/06/09(木) 03:35:46.64ID:aPNi5OBU
pythonのライブラリを調べているのですが
C言語で書かれている部分(cソースコード)には
どうやってたどり着けばいいのでしょうか?
例としてrandom.random()が0.0以上1.0未満の浮動小数点数を
かえしますが、どうゆう仕組みで返すのかを調べたいのです
2022/06/09(木) 04:32:16.69ID:FzQACe2i
>>53
コンパイル済みのを一般に調べるのは無理。標準ライブラリなら例えばcpython のリポジトリから探せる。https://github.com/python/cpython
2022/06/09(木) 05:11:23.67ID:aPNi5OBU
>>54
回答ありがとうございました
_randommodule.cまでたどりつきました
少しハードルが高いですが頑張って理解に努めようと思います。
2022/06/09(木) 05:17:33.48ID:FzQACe2i
>>55
蛇足かもですがpython の乱数はメルセンヌツイスタというアルゴリズムなので調べてみるといいかもしれません
2022/06/09(木) 05:44:46.90ID:aPNi5OBU
>>56
_randommodule.cの中に日本人の名前があったので
何故だろうと思いましたがメルセンヌツイスタで検索したら
つながりました。感謝です
2022/06/09(木) 18:02:41.85ID:i3H8tE1L
>>39
公式Python+PyCharmが便利
2022/06/09(木) 18:22:37.05ID:8SlPB6O/
教育用なら圧倒的シェアを獲得しているVSCodeの方が良いと思うよ
2022/06/09(木) 18:36:52.52ID:ZOUr8HN/
pycharmはなぁ…
61デフォルトの名無しさん
垢版 |
2022/06/09(木) 22:20:46.40ID:KIKA+I2C
>>39
教育に、環境構築の手間を含められるかどうかによるかな。
純粋にプログラムとは何かを知ってもらうだけだったらcolab
Pythonスクリプトをちゃんと動かせるようになることが目標だったらWindows用のPythonかなぁ。
2022/06/09(木) 22:22:21.55ID:1X1IjXim
ideoneでいいじゃん。
colabより高性能だよ。
公開されてしまうが。
2022/06/09(木) 23:14:03.21ID:gzzbtW8N
そいや親戚のとこの子供が学校でPythonのプログラムやっているというのだが、
ああいうのって、どういう仕様の実行環境なんだ?

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

Scratchだと思ってた
2022/06/09(木) 23:16:22.96ID:1tSt6fQl
ideoneとColab(Jupyter)だと機能がダンチだから土俵がちがう
2022/06/09(木) 23:20:50.91ID:1tSt6fQl
>>63
MakeCodeとかUI Flowのあたり?
ブロックプロラミングとPythonを行ったり来たりできる
66デフォルトの名無しさん
垢版 |
2022/06/10(金) 03:26:54.12ID:v7zmV4Lt
vscodeって途中のコードいじってると下記の折り畳み全部開いちゃうじゃん。あれ超鬱陶しい
2022/06/10(金) 12:08:03.84ID:sFhUkWJJ
関数の引数型説明(アノテーション?)をつけるとき、intやstr等の組込み型ではなく、クラスのインスタンスの場合どのように書けばよいでしょうか
2022/06/10(金) 12:38:18.30ID:Lq4KcKs2
https://docs.djangoproject.com/ja/3.2/intro/tutorial05/

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

ついでにいうとsettings.pyでuse_tz = Falseにすると逆に日本時間になってTrueにするとUTCになる
2022/06/10(金) 14:22:36.04ID:Lq4KcKs2
解決
from django.utils import timezone
じゃなくて from datetime import timezoneって書いてた
2022/06/11(土) 10:31:55.75ID:yOzdOwl+
超初心者です!古いMacでも出来ますか?
2022/06/11(土) 11:18:37.09ID:85fUpHB3
>>70
https://homepages.cwi.nl/~jack/macpython/index.html
これだとバージョン古いからMac-on-Linux化してLinux側で動かすか
リモートでもいいならWebブラウザのGoogle Colabやクラウド上のLinuxでやれる
2022/06/11(土) 11:20:32.01ID:IHQzlSUe
>>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
7367
垢版 |
2022/06/12(日) 06:48:37.19ID:0q70LBVd
>>72
ありがとうございます
74デフォルトの名無しさん
垢版 |
2022/06/12(日) 08:55:03.32ID:LQ+2P+LS
サポート期限すぎたMac使ってそう
2022/06/12(日) 18:06:38.20ID:9B8stwi/
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

とかになるんだよね
2022/06/12(日) 18:18:33.18ID:d5yVlq+K
そのくらいはimportしろよ
77デフォルトの名無しさん
垢版 |
2022/06/12(日) 18:22:48.72ID:V8Tt9ICP
エラー文も読めないのか
新しいpythonならlist[str]だバカタレ
2022/06/12(日) 18:23:08.52ID:fSdhUbKc
>>75
そこだけの話でいうと
from typing import *
だけど、問題のコードが古い
今はListをlistと書くようになったから
79デフォルトの名無しさん
垢版 |
2022/06/12(日) 18:42:58.91ID:w/rq6Our
nameErrorとかattributeErrorと最低限のエラーぐらい読めるようになろう
問題といてる場合じゃない
2022/06/12(日) 19:23:48.95ID:9B8stwi/
>>78
なるほどそういうことか
ありがとう
2022/06/17(金) 03:56:57.46ID:i0EppADi
>>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("_"))
82デフォルトの名無しさん
垢版 |
2022/06/17(金) 05:22:40.60ID:eircCDFG
>>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')
83デフォルトの名無しさん
垢版 |
2022/06/17(金) 08:29:57.19ID:doPvN/Dz
これを三項演算子で書くことってできますかね?

if a:
if b or c:
print("1")
else:
pring("2")
2022/06/17(金) 08:40:15.00ID:impPpfbo
インデントどこやった
2022/06/17(金) 09:16:26.10ID:b18JcTPN
5chはインデント未対応なので
pythonコードを貼るときは
行頭インデントを全角アンダーバーで
埋めてください
86デフォルトの名無しさん
垢版 |
2022/06/17(金) 09:26:11.91ID:doPvN/Dz
こんなかんじです
a b c は true か falseが入る変数です

if a:
_if b or c:
__print("1")
else:
_print("2")
87デフォルトの名無しさん
垢版 |
2022/06/17(金) 09:35:01.18ID:nb2nCyEf
>>86
print((1 if b or c else "") if a else 2)

三項演算子ならば全ケース対応する必要がある
a and not (b or c)の場合は空文字列とした
2022/06/17(金) 09:52:15.09ID:Ws3c1l54
回答になってないが
if not a:
__print(2)
elif b or c:
__print(1)
でよくない?
2022/06/17(金) 12:17:47.74ID:uqpMsu92
a = True, b = False, c = Falseのケースを見落としてるのか
意図して何もしてないのかが読み手にはわからないからすごく気持ち悪い
2022/06/17(金) 12:40:54.46ID:u2aqxJXf
テキストだと以下のようになるんだけど

# 整数(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')
2022/06/17(金) 13:02:51.91ID:sBNVv+WO
numpyのintはC言語のlong
あなたの環境はWindowsで本はLinuxなのだろう
92デフォルトの名無しさん
垢版 |
2022/06/17(金) 16:24:32.82ID:G79h5Zer
>>87
無駄な改行が増えるので仕様が異なる
93デフォルトの名無しさん
垢版 |
2022/06/17(金) 16:26:41.62ID:G79h5Zer
>>90
OSの32/64と
pythonの32/64と
それぞれどっちが動いてるかは意識するべき
2022/06/17(金) 17:59:15.20ID:JzEGKltv
>>93
それとは別の話なんやで
2022/06/17(金) 19:32:27.63ID:Ta4m0XWe
>>82
'stnemugra-gnikcapnu-tut#lmth.wolflortnoc/lairotut/3/aj/gro.nohtyp.scod//:sptth'[::-1]
2022/06/17(金) 20:07:00.23ID:IFnpw5My
jupyternotebook で実行中のセルからほかのセルを呼び出して実行できませんか?
マジックコマンドをみてもそれらしきものがないような
vbaでいえば、セルをプロシージャ、ノートブックをモジュールのように扱いたいのですが・・
97デフォルトの名無しさん
垢版 |
2022/06/17(金) 23:55:43.50ID:doPvN/Dz
86ですが回答ありがとうございました。

これでいけそうです
print("b") if not a else print("a") if b or c else print("c")
2022/06/18(土) 01:17:30.65ID:lHai4Yqe
>>96
モジュール化するのはだめなんか?
インポートしたらいいじゃまいか
99デフォルトの名無しさん
垢版 |
2022/06/18(土) 11:02:31.05ID:0BdDrqNN
>>90
気になるなら
x = np.array([1, 2, 3], dtype=np.float32)
2022/06/18(土) 17:19:34.23ID:AeKYwQGO
""と''の違いってある?
単に出力の違いとかじゃなくてコードを書く上での使い方の違いとか
2022/06/18(土) 18:19:13.17ID:HiXA4239
https://pep8-ja.readthedocs.io/ja/latest/#section-11
102デフォルトの名無しさん
垢版 |
2022/06/18(土) 18:53:41.89ID:U2ccem7m
>>100
英語キーボードなら''のほうが楽
2022/06/18(土) 19:06:28.02ID:H57335ve
>>98
ありがとうございます
検索すると、実行セルのipynbとは別のipynbファイルおよびセルをインポートする方法はあるのですが、
実行セルと同じipynbファイルにある別セル(例えば、実行セルの一つ上のセル)を呼び出したい
場合は、自分自身のipynbをインポートするということでしょうか?
インポートするipynbのセルすべてを実行するとあるので、素人感覚では無限ループになってしまうそうなのですが・・
呼び出される側のセルをpyファイルに出力してそのpyファイルをインポートすればいい話かもしれませんが、いちいち
pyファイルで書き出すのもなあ…と 理解が悪くてすみません
2022/06/18(土) 19:19:37.26ID:HiXA4239
普通に関数を作るのではだめなの
2022/06/18(土) 20:04:40.40ID:H57335ve
>>104
ありがとうございます
それでももちろんできるのですが、呼び出される側のセルを単体で実行することも多く、また同一ipynbのその他多くの
セルからも呼び出したいのです(処理が共通している 
vbaだと、publicsubプロシージャで独立させてしまえばいい話だったので同じことがしたいなと
106デフォルトの名無しさん
垢版 |
2022/06/18(土) 20:08:08.31ID:cOcEcivy
jupyterなんて池沼用だろ
107デフォルトの名無しさん
垢版 |
2022/06/18(土) 22:44:24.65ID:FjYCWDRz
blenderでpythonスクリプトを使ってキャラクターの目のまばたきの動きを制御してるんですがやってることをグラフで表すとこんな感じで

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

yにどのくらい目を動かすかの数値が入り
xにアニメーションの経過フレーム数が入るとして
xが0のときyは0 xが3のときyは6 という条件があるものとして
それをグラフで表すと増量が一定ならば一番左のグラフのようにyが2ずつ増えるグラフになると思いますけど
これだとまばたきが毎回同じ動きになってしまうので変化をつけたいんですが
たとえば真ん中や右のグラフのようにyの数値が不規則に増えていくグラフを計算するたびに作成するみたいなことをしてまばたきの動きに変化をつけたいんですが
それに使える関数とか計算式みたいのってないですかね
2022/06/18(土) 22:53:35.95ID:HiXA4239
この分野はド素人だが
CSSにはanimation-timing-functionってのがあって似てる
2022/06/19(日) 09:13:37.77ID:CQcbRoeX
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 ="部分ってやってること同じという認識でいいのかな?
110デフォルトの名無しさん
垢版 |
2022/06/19(日) 09:55:52.19ID:EfD69g8z
>>109
前者は遅い
2022/06/19(日) 11:42:39.18ID:Lvzk3izZ
速度はほぼ同じ

しかし今の時代に演算子にやらせる処理じゃないな
それも論理演算子を想起するものを使うとか正気と沙汰とは思えない
Guidoも演算子推してたけどセンスが悪すぎないか?
112デフォルトの名無しさん
垢版 |
2022/06/19(日) 12:37:09.83ID:sa8W0ZGX
論理演算自体、集合演算と切っても切れない関係だから、まるで違和感ないな
2022/06/19(日) 15:08:21.20ID:mFXr9uBN
dictを拡張するPEPは、setに準じた挙動にするのが目標の一つだったから、どう転んでも論理演算子のオーバーライドは外されなかっただろう
2022/06/19(日) 15:26:32.46ID:cDaRhPWb
>>112
dictは集合演算じゃないからね
a | bで両方にkeyがある場合はsetと同じくaが採用されるならまだよかった
2022/06/19(日) 15:37:38.06ID:V2Ko/eSH
>>113
最初は+で提案されてたんだぞ
それにsetに準じたいなら何で他の演算子は実装されないのさ?
2022/06/19(日) 15:47:44.79ID:JUrmuEeo
https://peps.python.org/pep-0584/
こんなの追加するなよと思ってしまうけど結構面白い
2022/06/19(日) 16:18:18.38ID:AfW1xcqK
inplaceじゃないdict.updateが欲しかっただけなのに
それをメソッドで用意できないところがPythonの限界
sort/sortedやin演算子に共通する基本的API設計の問題だから
Pythonはそういうもんだと諦めて
用意されたものを使う事だけに専念した方が精神衛生上いいよ
118デフォルトの名無しさん
垢版 |
2022/06/19(日) 16:34:05.36ID:+3VyORCf
>>114
keyに注目すれば集合演算そのものじゃん。
valueという属性が各keyに付いてるというだけ。
大体、>>111はsetだったら納得したのかね
2022/06/19(日) 17:04:44.33ID:SF0ERYFz
不毛な返しだな
潜在的に不幸な奴はどこでどんな生活をしてても不幸だって言うだろ
同様にどこでどんな仕様の言語を使ってても不平を垂れてんだよ
2022/06/19(日) 17:17:33.66ID:tgIktWD1
誰と会話してるのか知らないが
Pythonこそ人類最大の功績だろ
いかがわしいウェブサイトの構築からAIや研究畑まで広がる広大な活躍範囲
JavaもRubyも要らんかったんや
2022/06/19(日) 18:03:25.93ID:EYUnw8+k
>>118
setのunionやintersectionの演算子は違和感ないぞ
それにsetの場合は穴にはまるような仕様もないし
__or__以外の通常メソッドも用意されてるから全然状況が違う
2022/06/19(日) 19:03:27.86ID:MGBoiv+i
俺もDictの論理和で違和感ないがなぁ。
2022/06/19(日) 22:17:06.63ID:njnZ7xZC
dict1 | dict2で同じ(hash値の)keyが両方にあれば
keyはdict1からvalueはdict2から取ってくる

一般的な論理和の定義とは明らかに異なるけど
これをpythonではdictの論理和と呼ぶことにしたのならそれでいいんじゃない
2022/06/19(日) 22:17:07.56ID:m8jSBDD8
>>120
原理主義者w

読みやすさがダンチすぎるわな
あとは高速にさえなれば最強
125デフォルトの名無しさん
垢版 |
2022/06/19(日) 22:44:59.15ID:sa8W0ZGX
>>123
keyは同じものなんだからどっちからもってきてもいいだろ。
仕様でもvalueをdict2から持ってくることだけしか決められてないんだからそんなところに依存するコードを書いたらお前が悪いとしか言えん。
あと同じhash値ってだけで同定されると思ってるみたいだな
126デフォルトの名無しさん
垢版 |
2022/06/20(月) 00:01:19.54ID:FO/JkqKw
>>123
誰もdictの論理和と呼ぶ奴いないが
127デフォルトの名無しさん
垢版 |
2022/06/20(月) 00:04:58.71ID:FO/JkqKw
こんな場末の掲示板で美学()を垂れてる大先生達はPEPに提案でもすればいいのにな
https://github.com/python/peps/blob/main/CONTRIBUTING.rst
2022/06/20(月) 00:51:48.01ID:3bt1t/j5
>>126
>>122
2022/06/20(月) 09:01:28.64ID:clQvML/w
picture(数字).pngで連番のファイルを生成したんだけどpathlibでディレクトリの中身覗くと
picture0.png
picture1.png
picture3.png
picture2.png
picture4.png
みたいな順番になってる事があってなんだか気持ちが悪い
これって何が原因なんです?pathlibの仕様?
2022/06/20(月) 10:51:33.24ID:bmv2finQ
iterdir()とiterdir()が使ってるos.listdir()の仕様
131デフォルトの名無しさん
垢版 |
2022/06/20(月) 10:52:01.17ID:NopO3X5I
lenovoのL420っていうノートパソコン使っています
celeron,4GBです
教科書レベルのプログラムを写経してます
画像ファイル256枚、一枚あたり30kb位のファイルを
重ねる画像処理をpythonで行っているのですが
MemoryErrorがでて処理が止まります
画像処理の分野ではよくあることなのでしょうか

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

今までメモリ不足なんて無かったのですが
PC買い替えでしょうか?
2022/06/20(月) 11:06:40.33ID:VCuoWLch
>>131
エラーメッセージを読んでエラーの原因をまず確かめろ
ハード的なメモリ不足よりプログラムの書き方が悪い可能性のほうがはるかに高い
133デフォルトの名無しさん
垢版 |
2022/06/21(火) 19:48:14.54ID:BPheRP/d
#次のような集合のリストのリスト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]以外が変わらないような方法教えて下さい
134デフォルトの名無しさん
垢版 |
2022/06/21(火) 20:00:56.97ID:BPheRP/d
>>133 訂正
r[1,2]じゃなくてr[1][2]でした (他同様)
135デフォルトの名無しさん
垢版 |
2022/06/21(火) 20:03:33.86ID:nUT03NU2
deepcopyで検索ゥ
136デフォルトの名無しさん
垢版 |
2022/06/21(火) 20:08:37.10ID:SE7t042v
[[set(range(1, 4)) in x for range(3)] in y for range(3)]
137デフォルトの名無しさん
垢版 |
2022/06/21(火) 20:18:32.01ID:SH7wWIQd
>>133
多次元のリストを作るにはどうしますか?
https://docs.python.org/ja/3/faq/programming.html#faq-multidimensional-list
138デフォルトの名無しさん
垢版 |
2022/06/21(火) 20:18:51.87ID:BPheRP/d
>>136
ありがとうございます〜forとin換えたら行けました

>>135
検索してdeepcopyの話かな?という所には辿り着きましたが適応の仕方がよく分かりませんでした 勉強しときます
2022/06/22(水) 11:44:54.88ID:EcTc17L7
ほとんどの言語は、shallow copy

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

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

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

Elixir みたいな関数型言語は、
オブジェクトを更新できない(状態を持てない)から、
こういう問題はなく、安全にプログラミングできる
2022/06/22(水) 12:13:41.31ID:TN4B0obT
なんかさ、もううんこだよね
2022/06/22(水) 21:49:37.76ID:kEl16R0O
特定のフォルダ以下のサブフォルダから拡張子を取得して
指定したフォルダ下に拡張子のフォルダを作りたくて
下記のプログラムを書いたところで動作しましたが
os.makedirs文のみで完結する簡素な記述方法はありますか?

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

path = os.path.join(cd_path, file_extension)
os.makedirs(path, exist_ok=True)
2022/06/22(水) 22:14:47.11ID:1aHzqpDi
>>141
回答になってないけど、初心者なら最初からpathlib覚えたほうがいいぞ
os.pathやglob.globはいろんな罠がある
あと、拡張子にはドットが含まれるから注意
2022/06/22(水) 23:39:08.69ID:uPuQk0KY
みんな一時は罹ってしまうコードゴルフ
中二病にちかい
2022/06/23(木) 00:13:39.08ID:RPGBecSe
配列(array)の要素それぞれにリストを入れることは出来ない?
リストの要素それぞれに配列を入れることはできる?

でいいのかな?
2022/06/23(木) 00:24:13.97ID:RKdZXyYS
あまりやらないけれど
配列の要素はそれぞれ任意のものを入れられるから
最初に配列、次に文字列でもすきなクラスでも大丈夫
もちろんぜんぶ配列でもOK
2022/06/23(木) 10:12:12.29ID:bFbjfjx7
dictのキーにString型のリストとバリューにリストに入った多重結界みたいなデータ作ってjsonとして書き出すみたいな遊びだよね
147デフォルトの名無しさん
垢版 |
2022/06/23(木) 14:55:17.55ID:EV0+4t37
https://github.com/yaneurao/Ayane
のunit_test1.pyの、一番基本的なtest_ayane1を通そうとするとプロンプトにtest_ayane1 : とだけ
でてwrite_workerの734行目のself.proc.stdin.flush()でスレッドが死んでるような?感じなのですが
試して原因を教えてくれる神はいませんか。

ちなみに呼び出すエンジン自体は別のソフトや、cshogiというこれと似たライブラリからの呼び出しでちゃんと
動作していることを確認しています。
148デフォルトの名無しさん
垢版 |
2022/06/23(木) 15:04:04.22ID:Ukh7Grgr
判った
149デフォルトの名無しさん
垢版 |
2022/06/23(木) 15:58:15.03ID:EV0+4t37
>>147
Python 3.7.13で、macOS12.4 Montley上です。
2022/06/24(金) 11:43:47.67ID:3JV7YPJq
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を使わずに受信するとクライアントが送信したデータだけが残るみたいだけど…
151デフォルトの名無しさん
垢版 |
2022/06/24(金) 12:05:35.52ID:K2we1Lar
>>150
死ね
https://egg.5ch.net/test/read.cgi/bizplus/1655956236/
2022/06/24(金) 13:18:15.52ID:d6WBxki6
FOR文の中にtqdm()を入れてみたんんですが
下記みたいなのしか表示されなくプログレスバーが表示されません
70786it [3:35:59, 1.94it/s]
なにが問題なんでしょうか?
153デフォルトの名無しさん
垢版 |
2022/06/24(金) 14:31:40.66ID:yJmddVFh
実際のコードを書かないこと
154ぴよ
垢版 |
2022/06/24(金) 14:59:09.01ID:XR8KeGTq
ほげほげ
155デフォルトの名無しさん
垢版 |
2022/06/24(金) 19:30:36.14ID:n0/ceoPd
>>152
lenが不明なiteratorだとそうなる
tqdm(iterator, total=100)のようにする
2022/06/24(金) 23:45:09.14ID:/S8ogjuv
>>150
VSCode で、バイナリエディタの拡張機能・Hex Editor でも使って、バイナリとして見てみれば?
文字コードなどが不明なので、テキストとして見るには困る

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

各拡張子のファイルには、決められた構成があるため、
それに従っていない場合は、正常に動作しない
2022/06/25(土) 00:01:18.86ID:eoWHGkrH
Phil Katz に聞くべき
2022/06/25(土) 00:11:42.65ID:z9QRxAiq
降霊術を習得しないと
159デフォルトの名無しさん
垢版 |
2022/06/25(土) 19:47:06.55ID:fwnfW89W
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が真になりさえすれば何もおかしなことはないと思います。
2022/06/25(土) 19:57:20.22ID:I0eUacPf
S = {a,b,c}
TypeError: unhashable type: 'list'
161デフォルトの名無しさん
垢版 |
2022/06/25(土) 20:23:18.44ID:bZig/WUT
こういう馬鹿が辞書のキーにまでリスト入れたいとか言い出すんだろうな
2022/06/25(土) 20:26:09.88ID:gQjoPRQF
>>159
Pythonのオブジェクトは基本参照だし、setに突っ込んでもコピーされる訳じゃない
重複を許さないsetの要素が変更されたら保証できないし、比較のコストも考えたら…かな
2022/06/25(土) 20:36:01.58ID:9jpr7vFN
>>159
自作クラスとか、mutableでもsetに突っ込めるよ。
何か読み違えたのでは?
2022/06/25(土) 21:18:41.55ID:gQjoPRQF
>>163
本質的にはそうじゃない、ユーザークラスは既定でハッシュ化できるが
これは一般的な実装ではid()、即ちインスタンスアドレスに基づくもの
実質的に求められているのはハッシュの不変性であり、それならば通る

しかし同一性を内容で評価するなら意味は成さないのでlistだと未定義
データモデル曰く「クラスがミュータブルなオブジェクトを定義しており、
__eq__() メソッドを実装しているなら、 __hash__() を定義してはなりません。」
2022/06/26(日) 01:34:01.17ID:A2gDvo6x
やってやれないことはないけど
デメリットを打ち消すだけのメリットを見いだせなかったんでしょGuidoが

単に他の言語のdict/setに合わせただけかも知れんが
ともかく、真実が知りたかったら開発者に聞いてこいよ
2022/06/26(日) 07:16:45.51ID:eSuyoUi6
>>95
print('QHG pj.og.ldn.iakkok:etis'[::-1],
'/elpmis/pj.og.ldn.iakkok//:sptth'[::-1], sep='\n')
167デフォルトの名無しさん
垢版 |
2022/06/26(日) 13:31:03.88ID:DTfGvOZF
ねんまつ
2022/06/27(月) 08:09:04.08ID:Zqv939YP
PCでのアプリ操作を自動化したいのですが、pyocrで文字認識して、内容によって判断し、pyautoguiでxy座標指定して、ボタン押すしかないでしょうか?
2022/06/27(月) 08:14:55.95ID:RN7qnQjk
物によるとしか言いようが無いな
2022/06/27(月) 08:17:13.06ID:RN7qnQjk
PyAutoGui でカバー出来るか出来ないかを判断してみたら?
2022/06/27(月) 18:27:20.11ID:3qzf3wBJ
以前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

原因わかる方いますか?
2022/06/27(月) 18:53:43.40ID:0yF6vhsn
>>171
sudoのほうは全角スペースが入ってるのが原因
2022/06/27(月) 19:05:21.65ID:a8sMrZjJ
172の優しさに感動
2022/06/27(月) 19:25:49.92ID:cL/RIHXE
そのpython入れたのはAppleだから通常起動したOSからは削除できない仕組み
消えたらOS内のスクリプトが動かなくなるよ
よかったねOSが壊れなくて
2022/06/27(月) 20:20:17.78ID:3qzf3wBJ
>>172
迅速なレスありがとうございます。
もう一度コメント打ちましたが同じ結果でした。全角は入ってないようです。
>>174
MACから元々インストールされているのはphyon2なので
Phyon3とは関係ない、削除しても問題ないと思うのですが..

https://i.imgur.com/PpXh6yu.png
2022/06/27(月) 20:45:49.02ID:xsOnLI+U
>>175
何経由でインストールしたんだこれ
Homebrew使ってインストールしたなら
brewコマンド経由でアンインストール出来ない?
2022/06/27(月) 21:25:48.96ID:cL/RIHXE
>>175
python3入ってないmacOSってわりと古いよ?
ここ最近はpython2が逆に入ってない(公式サポート終わってるからね)
もし自前で /usr/bin にインストールしたってんならクラッカー気質あるわw
2022/06/27(月) 21:44:39.26ID:XFwxgXBL
>>175
同じ結果とちゃうやん
全角入ってた時とエラーメッセージ変わってるやん

どうしても削除したいならSIP無効にしてから削除で
2022/06/27(月) 22:13:08.24ID:3qzf3wBJ
>>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
2022/06/27(月) 22:13:29.06ID:3qzf3wBJ
>>178
申し訳ありません。
2022/06/28(火) 01:52:22.87ID:GjoTbrJZ
>>179
自決ですが、xcodeが古かったので新しいバージョンにいれた所無事インストールできました。
182デフォルトの名無しさん
垢版 |
2022/06/28(火) 08:26:42.80ID:UgaAibo1
またしても犠牲者が。
pythonの乱用は精神に作用するのかもしれない
183デフォルトの名無しさん
垢版 |
2022/06/28(火) 12:11:58.39ID:W8L8uteA
macのOS環境ごとふっとんで死ねば良いのに
2022/06/28(火) 12:22:02.22ID:SMUgtqGT
日本人が作った、多言語バージョンマネージャーのanyenv を使えばよい。
同様のツールには、asdf もある

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

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

他には、Docker も多い
185デフォルトの名無しさん
垢版 |
2022/06/28(火) 13:58:17.02ID:5S91HeIj
re.subで[]で囲まれた文字列の中を置換するとき、どんな記述をすればよいですか?
re.sub(r'\[.*c.*\], 'x', '[abcabc]abc')
期待する値
[abxabx]abc
186デフォルトの名無しさん
垢版 |
2022/06/28(火) 14:07:39.85ID:N3XtpiKU
>>185
re.sub(r'\[[^\]]*\]', lambda m: m[0].replace('c', 'x'), '[abcabc]abc')
187185
垢版 |
2022/06/28(火) 14:31:31.24ID:5S91HeIj
>>186
多謝!! そしてごめんなさい。良ければ解説を。
188185
垢版 |
2022/06/28(火) 14:49:53.04ID:5S91HeIj
[]の中だけを対象にreplaceしているのは、なんとか分かるんですが、re.sub の第2引数、
lambda m: m[0].replace('c', 'x')
が何をしているのかわかりません(泣)
2022/06/28(火) 14:52:51.94ID:dX7Zsa+9
マニュアルを読もう
https://docs.python.org/ja/3/library/re.html#re.sub
2022/06/28(火) 14:59:09.76ID:d3+RKzUY
repl が関数であれば~の下りね、m[g]はm.group(g)と同等
後読みアサーションに固定幅制約がないライブラリなら
面倒なことしなくても(?<=\[.*)c(?=.*\])で済みそうだが
191デフォルトの名無しさん
垢版 |
2022/06/28(火) 15:42:31.79ID:5S91HeIj
re.sub(r'\[.*\]', lambda m: m.group(0).replace('c, 'x')
でlambda関数がヒットするたび呼ばれるわけか!!
仕組みは理解できました。

>>190
look-behind requires fixed-width pattern
に阻まれました。
192デフォルトの名無しさん
垢版 |
2022/06/28(火) 19:31:26.15ID:mooH0Iqw
m.group はめんどくさい
findall の方が便利
193デフォルトの名無しさん
垢版 |
2022/06/29(水) 07:52:27.56ID:9vdu/PbE
>192
re.findall だと re.sub のような仕掛けが利用できなくないですか?
>185 できますか??
2022/06/29(水) 10:56:55.09ID:CtIvUBkO
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]'
2022/06/29(水) 19:29:51.42ID:CtIvUBkO
完成形できました!記号が含まれていても[]がちゃんと閉じてなくても
ちゃんと閉じているのだけ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]', '']
2022/06/29(水) 22:12:59.69ID:sd1PgpdM
見通し悪すぎて要件満たしててもレビューで蹴られるコード
2022/06/29(水) 22:25:07.73ID:TQFqK5Fi
ちゃんと閉じているの定義があやしい
[[abc]とか
2022/06/29(水) 23:13:54.03ID:CtIvUBkO
>>196 見通し良いでしょ、角カッコで囲まれた角カッコ以外 or 角カッコ or 角カッコ以外でfindallじゃん
角カッコしか出てこないじゃん、簡潔、シンプル、分かりやすい

>>197 良い指摘、アナタのおかげで改善されました^^
>>>re.findall(r'\[[^\[\]]*\]|[\[\]]*?|[^\[\]]*', 'a[abcabc]abc[[abc]')
['', 'a', '[abcabc]', '', 'abc', '', '[', '[abc]', '']
199デフォルトの名無しさん
垢版 |
2022/06/30(木) 02:06:34.63ID:HSayXmFT
kazuyuki
200デフォルトの名無しさん
垢版 |
2022/06/30(木) 20:55:30.42ID:QXLJbWFQ
ナンプレのゲーム作りたい

縦横はチェックする方法わかるが
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)
2022/06/30(木) 21:46:07.32ID:0uxZVqVl
簡単なのは3x3を座標系とは別の9マスの配列の配列として保持
置いたときに縦横とは別にその配列へ反映させる
縦横も同じ手法をとると統一感ある
コード上は9マスの配列はクラスにするかも
202デフォルトの名無しさん
垢版 |
2022/06/30(木) 22:01:04.82ID:zKJ67H3+
5桁8色のhit&blowを造りたい
人間が設問してpythonに解かせたい
203デフォルトの名無しさん
垢版 |
2022/07/02(土) 07:54:20.82ID:oFwScFTn
>>201
既存の座標系にこだわらないほうがいいか
ありがとう

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

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

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

def 関数():
if 再帰関数():
retrun Ture
retrun Flase
2022/07/02(土) 09:00:34.91ID:Zph8lW04
>>203
再帰だけどやってることは探索のための分岐
rangeの列挙からcontinueされなかった分を順番に分岐してて
呼んだ先で18-20にひっかかると中断して最初の呼び出しまで戻ってる
deepcopyしてるところが富豪的だけどシンプル
2022/07/02(土) 09:39:17.61ID:EefHjxyZ
>>204
この37行目
if set_num(ndata, idx + 1): return True

これを
set_num(ndata, idx + 1)
に変えてみたんだけど結果変わらなかった
if の中に入れる意味あるの?
2022/07/02(土) 09:44:12.51ID:EefHjxyZ
答えが出た後も探索しちゃうからそれを止めるための処理ってことか
207デフォルトの名無しさん
垢版 |
2022/07/02(土) 09:57:44.64ID:COZLaCzb
ninbe
208デフォルトの名無しさん
垢版 |
2022/07/11(月) 12:19:00.64ID:aiHSnYNz
google colabでcuda使いたい。
良い方法ある?
209デフォルトの名無しさん
垢版 |
2022/07/11(月) 12:19:00.73ID:aiHSnYNz
google colabでcuda使いたい。
良い方法ある?
2022/07/11(月) 12:39:20.78ID:L4tB3bvp
金払ってないのか?
211デフォルトの名無しさん
垢版 |
2022/07/11(月) 14:48:46.26ID:aiHSnYNz
>>210
colabはdjangoやfraskができないっぽいからやってない。
もしdjangoが使えるならお勧めあったら教えてほしいっす!
vsかチャームか、atomか・・・。
2022/07/11(月) 15:51:00.64ID:EGP2A4JX
好きなテキストエディタないの?それで基本いいんだけど
拘りないなら拡張とユーザ数からvscodeでいいんじゃない
PyCharmはリファクタまわりが優れているけど必須じゃないし
Atomはオワコン
2022/07/11(月) 17:35:44.11ID:rDGcpouH
vsもマイクロソフト以外のプラグインが信用出来ないからあまり良いとは言えないかなー
2022/07/12(火) 00:04:57.18ID:eIaiUALg
文字列〜〜〜ID123456.text

みたいなファイルからID123456だけを抜き出したいんだけど、どんな方法がある?
IDの後には必ず数字がきて、桁数はかならず6
2022/07/12(火) 00:06:23.62ID:eIaiUALg
補足
IDが書かれてる場所はファイルによって異なる

文字列〜〜〜ID123456文字列〜.text
ID123456文字列〜〜〜.text
みたいなときもある
2022/07/12(火) 02:57:47.18ID:yBYukR5V
>>214
普通は正規表現でも使うのかな
俺は正規表現使えないからこう書く

from pathlib import Path
p="C:\abc\あいうID1234567XYZ.text"
print("ID" + Path(p).stem.split("ID")[1][:6])
2022/07/12(火) 08:19:17.52ID:hTnf4I/y
>>215 正規表現を制する者は文字列を制する、他の言語でも仕様はほぼ同じ、覚えて損は無し

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

>>>re.findall(r'ID\d{6}', s)
['ID123456', 'ID789012']
2022/07/12(火) 10:53:36.86ID:eIaiUALg
>>216>>217
ありがとうございます、勉強になります
219デフォルトの名無しさん
垢版 |
2022/07/12(火) 20:48:55.38ID:gRW1mfOh
例外処理ってどう使えばいいんだろ

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

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

Data[0][0]がそもそも存在しない時にエラーにならないよう例外処理を使うといい、ぐらいまでは調べたんだけど
書き方がよくわからない
2022/07/12(火) 21:11:11.59ID:hTnf4I/y
>>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']
2022/07/12(火) 21:56:43.39ID:UQgGu1pu
>>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)
2022/07/12(火) 22:40:42.84ID:xLkMA/UK
>>219
スクレイピングでたとえると
途中の要素が取得できないと結局な結果が得られないのでその場でプログラム終了する
とすると、取得失敗の都度ifでsys.exit()と書けはする
ここで終了前になにかメッセージ出力したり上位の関数にエラーで戻ったりアレコレしたいとすると
共通化したくなり例外以外では見通しが悪く書きにくい
そういうのもうまく関数設計すれば書けはするけど
Pythonは標準の操作(Data[0][0] とか)で例外あげる場面が多いので例外に寄せる方が楽
2022/07/13(水) 20:23:40.86ID:EtP8dxEe
Pythonのトップ・キノコードがキノクエストと言う、Pythonの学習サービスを作った!
224デフォルトの名無しさん
垢版 |
2022/07/13(水) 22:27:14.03ID:XjBOe/Qa
s = ’aaa bbb ccc ddd’
という文字列を
s = ’[aaa],[bbb],[ccc],[ddd]’
という文字列にする方法って

s.split()
で一度リストにして
for文内で新しいリストにappendとか使って [ や ] や , をリストの要素として追加して
そのリストをまた文字列に戻すって方法しか思いつかないんだけど、他にあるかな?
2022/07/13(水) 22:38:12.38ID:ZiN6uKeA
>>224
s = '[' + s.replace(' ', '],[') + ']'
2022/07/13(水) 22:42:11.00ID:tPrODk9K
s='[' + s.replace(' ',']',[') + ']'
これでいけんか?
2022/07/13(水) 22:43:26.48ID:tPrODk9K
かぶったし打ち間違いあるしスマホでコード書くの合わないな…
2022/07/13(水) 22:44:17.92ID:hJXXd+YV
“,”.join(map(lambda x:f”[{x}]”, s.split(“ “)))
そらで書いてるから動くか分からんが、こんな感じ
2022/07/13(水) 22:46:15.33ID:tPrODk9K
あと方法としてはjoin使うのとリストをそのまま文字列にするのができる気がする
230デフォルトの名無しさん
垢版 |
2022/07/13(水) 22:53:13.90ID:XjBOe/Qa
>>225-229
マジか
思いつかなかった
2022/07/13(水) 23:08:11.77ID:Hjnw35/j
教科書的に書くとつまらんな
','.join(f'[{x}]' for x in s.split(' '))
232デフォルトの名無しさん
垢版 |
2022/07/14(木) 10:16:40.49ID:dxotV0yq
くだらんすれ
2022/07/14(木) 11:38:32.14ID:3XfxOzel
python使い始めて何年も経つが
‘,’.join(…)書くたびにクソコード書いてんなと思う
2022/07/14(木) 12:12:10.59ID:mZF8rPll
>>233
よく言われるけど、私はPythonスタイルが好きだな
文字列にするのだから文字列のメソッドであるべき
ちゃんと議論されてRubyスタイルは否定されてんだよね
ttps://www.lifewithpython.com/2017/07/why-python-join-is-string-method.html
2022/07/14(木) 16:24:53.41ID:NrPRW2+E
>>234
読んだけど結構乱暴な議論だな
> 文字列にするのだから文字列のメソッドであるべき
数字かどうかを判定するisdigit()をboolのメソッドにしろってか?w
2022/07/14(木) 16:42:14.94ID:VCUQdsgR
>>234
じゃsplitはリストにするのだからリストのメソッドであるべきだなw
ちゃんと議論ww
2022/07/14(木) 17:24:02.64ID:TABkZ95a
Pythonって何故だかこういうエクストリームな擁護者が他言語に比べて多いんだよなぁ

どの言語にも良い点悪い点はあるのになんでなんだろ?
2022/07/14(木) 17:57:33.90ID:mZF8rPll
エクストリームな擁護ならRubyの右に出るものはないよ
「日本人ならRuby」「楽しいからRuby」だもん、初めて聞いた時は寒気がしたね
RubyじゃなくてPython選んでマジで良かった、Python最高!

joinもsplitの話ももう出尽くしているから、勝手にググってフンガーって発狂しててよ
私に言われても困っちゃうし、公式で結論出ているのだからそれで理解できないなら素養が無いよ
2022/07/14(木) 18:15:53.09ID:ObgbLbGZ
あ~あ、みんな寄ってたかって叩くからファビョっちゃったじゃん
2022/07/14(木) 18:18:53.53ID:ATT2arO1
>>237
pythonのスレ(しかも超初心者用)で言うことですか?
2022/07/14(木) 18:40:20.64ID:NYmoorKP
超初心者に変な常識を植え付けないように色んな意見のレスがあっていいと思うよ
変だと思う人も居るんだなということを知ってて損は無い
超初心者だと他言語における常識を知る機会も無いし
2022/07/14(木) 19:04:20.42ID:ji0JpZgM
>>238
> 私に言われても困っちゃうし
これお前の意見だろ?
> 文字列にするのだから文字列のメソッドであるべき
リンク先も公式もそんなアホなことを言ってないぞw
2022/07/14(木) 19:09:23.50ID:mZF8rPll
>>242
ひゃーファビョッちゃってるぅーw
素養も読解力も無いことをアピールされましても困りますw
2022/07/14(木) 19:51:42.67ID:/4X/rYOa
>>243
レスするならちゃんと反論したら?
読解力ガーとか低脳が顔真っ赤になりながらレスしても虚しいだけだろw
2022/07/14(木) 20:59:57.30ID:jjxIhgjT
スレ違い自演連投荒らしが誰何に反応して身元確定したので新スレで書き込み禁止されたのを「いじめ」だと言い出す被害妄想っぷりが狂人クオリティ
2022/07/14(木) 21:03:26.05ID:mZF8rPll
>>244
IDコロコロ変えるコロ助が何をファビョってんの?w
もう>>238で終了してんだよ、公式読んで理解できないなら反論も糞も無いじゃんw
認めたくないだろうけど、そこは認めようよ、君は低能だから理解できなわけよww
別に理解できなくてもいいじゃん、joinって変だな、何でなんだろう?ってずーっとファビョってればいいじゃん
こういう経緯でこうなってんだよってリンクまで貼ってんのに、それで理解できずにそんなことなーい!って
言われてもさ、公式に文句言えばいいじゃん、ほんと低能だなぁーw 何と戦ってんの?w
2022/07/14(木) 21:41:30.43ID:1UfgY23j
>>246
どっちが読解力ないだか...
もう一度書いとくね、

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

公式もリンク先も関係なくお前がアホなだけw
2022/07/14(木) 21:53:51.76ID:GadqcTvG
これ読むと>>237に同意せざるを得ないな
https://stackoverflow.com/questions/493819/
2022/07/14(木) 22:25:47.47ID:mZF8rPll
>>247
うん?じゃあ文字列のメソッドでなくてもいいの?
どーやったらそう読めるんだよwwwwバーーカwww
2022/07/14(木) 22:56:25.17ID:vHzneFGJ
>>249
まだ恥の上塗りするのかよw
「文字列にするのだから」がアホだって話な
>>235-236 のツッコミみたら普通わかるだろ
2022/07/14(木) 23:02:08.05ID:53iLOIJP
わざと馬鹿のフリしてんのかな?どっちにしても馬鹿にしか見えないが。
2022/07/14(木) 23:02:36.06ID:pmXXTX87
読んだけどseqは引数な方が良いってだけで

> 文字列にするのだから文字列のメソッドであるべき
こんなこと書いてない
2022/07/14(木) 23:04:03.42ID:mZF8rPll
>>250
君が読解力無いのは分かったから、それよりIDコロコロ変えているのバレちゃったねw
>>247の「もう一度書くね」でヘマしちゃったのはやっぱりファビョってるからなの?ww
これ全部オマエだろ、何連投してんだよw顔真っ赤なのどっちだよって話だよ
いやー自作自演バカって本当にいるんだなぁー アホなりに頑張ってるのは分かるけど低能だから
全部台無しだわぁ〜ww アホだからすぐバレちゃうwww
そのIDコロコロ変えるようになった経緯を思い出せよ、まともにやるとすぐ負けちゃうからだろ?
自作自演で勝ってる感が欲しかったけど、それも手に入りませんでしたぁ〜w 恥の上塗りって
自分のこと言ってんのかよww 全部ブーメラン!おまえは民主党かよってw
2022/07/15(金) 01:28:28.52ID:wi0x7exo
すごいチー牛顔引き攣らせて笑ってそう
2022/07/15(金) 03:30:42.52ID:MdZ2tfzQ
>>253
とうとう壊れちゃったw
2022/07/15(金) 07:32:09.26ID:mXh/FC5X
なんかこわい
2022/07/15(金) 12:20:14.72ID:Y2OiW31R
こんな人生終わってそうな社会不適合者でも稼げちゃうのがIT業界なんだよな

人生終わってそうな外見のやつばかりなのに、金が稼げるからジョーカーみたいなのが生まれにくい
2022/07/15(金) 14:11:44.43ID:78D2/2K4
iterableを定義してそこにjoinメソッドを追加するだけでよかったのにね

joinメソッドは今どきこんな設計する人がいたらすぐ外されても文句言えないレベル
2022/07/15(金) 14:28:12.17ID:MVHCgXBf
当人ちゃうけどまず >>234 のリンク先読んどこう
2022/07/15(金) 15:21:03.77ID:cpkuMkfN
俺も当人ちゃうけどそのリンク先読んでも>>258に同意するわ
2022/07/15(金) 15:35:58.33ID:rlSsskU5
ずいぶんとお利口な超初心者の集まりだこと…
2022/07/15(金) 15:52:36.65ID:cpkuMkfN
超初心者が質問できるスレであって住人全員が超初心者というわけじゃないよ
2022/07/15(金) 17:56:14.83ID:qGSK8RbV
メーリングリストのログ追ってみたが議論らしい議論は全くなかったぞコレ
Tim Petersが案をだして、じゃそれでくらいのノリ
2022/07/15(金) 19:33:17.31ID:5LwbToQX
悲しいとき〜、悲しいとき〜、不毛な努力をしているアホをみたとき〜
265デフォルトの名無しさん
垢版 |
2022/07/15(金) 21:59:49.41ID:Mg+hVTQU
少し内容がずれているかもしれませんが質問させてください。
Windows10で右クリック-新規作成で空のpythonファイル(.py)を作成するようにしたいのですが、
何か方法はありますでしょうか?
下記のURLを参考にしてレジストリを変更する方法を調べて実行したのですが、反映しません。
https://qiita.com/ioComk/items/ab79749b0f0bf05db97e

教えていただきたく。よろしくお願いします。
266デフォルトの名無しさん
垢版 |
2022/07/15(金) 23:42:53.55ID:Fa+NFDEY
>>258
実際bytesとかでjoin相当のことをしようとしたらどうすればいいんだろう?itertools使えばなんとかなりそうだけど
2022/07/16(土) 00:03:25.16ID:HB6roBeY
__add__かjoin専用メソッドがある前提でひたすらinject
それらが型変換できないケースだと失敗とか
2022/07/16(土) 00:23:45.26ID:fjBrDVen
>>265
少なくとも今試しても記事の通りできた
詳しくどうやったか開示しないと分からん
269デフォルトの名無しさん
垢版 |
2022/07/16(土) 10:38:02.22ID:5edRFReA
>>268
詳しくといっても難しいですが
pythonはAnacondaでインストール。
新規pyファイルはサクラエディタと紐づいています。
2022/07/16(土) 14:30:48.70ID:7RINBtm9
>>269
そしたらサクラエディタに関連付けしてるからだろうね
新規作成は関連付けされてるアイコンとファイルタイプ名称で表示される
271デフォルトの名無しさん
垢版 |
2022/07/16(土) 16:20:01.38ID:ck4+820Y
なんでこうなるのかわからない


_, *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'>
2022/07/16(土) 16:34:54.36ID:730D9OZt
print(_)してみたら
273デフォルトの名無しさん
垢版 |
2022/07/16(土) 16:56:27.29ID:ck4+820Y
ああ、理解したわ

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
みたいなことか
274デフォルトの名無しさん
垢版 |
2022/07/16(土) 19:51:21.14ID:GdTpN6Df
bytes で join ってさ
b''.join(bytes_data)
で良いんじゃね
2022/07/17(日) 11:57:25.95ID:VAtjDotR
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

は誤差が出て計算できない。
何とかならない?
276デフォルトの名無しさん
垢版 |
2022/07/17(日) 12:39:58.12ID:Un2LAdnT
emaxの最大値は999999999999999999みたいだからどうにもならんのでは
2022/07/17(日) 15:02:05.03ID:QiBhjgar
emacs
2022/07/17(日) 15:16:14.73ID:VAtjDotR
>>276
10^10^100000
https://ideone.com/PIILdo
279デフォルトの名無しさん
垢版 |
2022/07/17(日) 15:22:34.18ID:QiBhjgar
>>266
>>274
https://ideone.com/cEpoSf
# joinの問題と言うよりもlist(b'hoge')の方に問題が在る訳だな
2022/07/17(日) 15:44:47.39ID:7GRljLrT
def f(a):
  return a+1

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

>[2,3]

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

本来はf(1),f(2)とするところです
数が多ければforで回すのですが、まとめてどさっと渡したいです
2022/07/17(日) 16:13:54.34ID:eihDCF0F
>>280
https://www.tech-teacher.jp/blog/python-map/
282デフォルトの名無しさん
垢版 |
2022/07/17(日) 17:40:51.90ID:mQpJsc2r
何だこの記事は
283デフォルトの名無しさん
垢版 |
2022/07/17(日) 17:47:08.08ID:GTQ/Lt+k
>>279
なるほど。strをバラしてもstrだが、bytesはバラすとintになってしまうということか。
まあ、実用上は問題ないかなあ。というかここを崩すとbytesを1バイトずつバラしてjoinするという殆どしない操作のために、
strとbytesの実用性がかなり失われるよね
284デフォルトの名無しさん
垢版 |
2022/07/17(日) 17:58:37.99ID:Fxi+TDuE
>>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))
285280
垢版 |
2022/07/17(日) 18:36:03.96ID:jWrWgoZv
なるほど、map関数や*list_argsなどのやり方があるのですね
これはどちらもforよりは軽くなりそうな感じはします

>>284
素直にnumpy、がそもそもわかってないのですが、教えていただけませんか?
2022/07/17(日) 19:23:47.87ID:pr2Iyzs9
>>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()
287デフォルトの名無しさん
垢版 |
2022/07/17(日) 19:47:38.44ID:Fxi+TDuE
>>286
それだとfの引数が増えた時に対応できない
2022/07/17(日) 20:59:15.42ID:4v0QWrzY
mapと内包表記どっちが軽いんだろ?
a=[1,2]
b=[i+1 for i in a]
これで終わる話ではあるよね
2022/07/17(日) 21:23:00.57ID:zoulLgXv
話を単純化して話してんだろ
一般的な解があるほうが親切
2022/07/17(日) 21:25:35.67ID:pr2Iyzs9
>>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を改造する必要がある
2022/07/17(日) 21:31:17.15ID:LbIjTSt1
>>289
どれに対しての話?
2022/07/17(日) 21:38:02.50ID:Rw0hMsrD
>>290
sumでない場合は?
たとえばa1*a2+a3みたいな一般式もありうるよね
2022/07/17(日) 21:38:57.48ID:Rw0hMsrD
というか、ただのsumなら普通は関数にぶっこまないよね
2022/07/17(日) 21:43:59.07ID:pr2Iyzs9
リストの各要素に1足すだけの場合も普通に関数にぶっこまないけどな
2022/07/17(日) 22:12:41.33ID:pr2Iyzs9
>>292
matomeのデコレータ付けるだけで色んな一般式を適用した関数が簡単に作れるってことね
はいはい、理解しました
fをそのまま可変にすることばかり考えてたわ
2022/07/17(日) 22:43:41.36ID:Xin01ayH
zipするのは違うと思うけどな
2022/07/18(月) 09:21:19.20ID:4im9UY7E
>>286
教えてくださりありがとうございます
>>284のほうが拡張性があって気に入りました
やりたいことはできそうです
ありがとうございました
2022/07/18(月) 10:01:23.22ID:4lWXgehE
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…]
にするのは筋が悪い
2022/07/18(月) 10:22:26.91ID:q/MsDqBP
>>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の方が断然優れていますわ
2022/07/18(月) 10:36:45.20ID:E3N1Hbif
個別に呼ぶよりまとめて呼んだほうが処理が軽いんじゃないの
2022/07/18(月) 10:39:15.32ID:kc1Sb0dj
FOR文でフォルダ以下のサブフォルダの中のファイルを
拡張子毎に振り分けるプログラムを作ってみましたが
1ファイルを移動するのに1秒くらいかかってしまいます
shutil.move(FFF, KKK) (FFFとKKKは変数)
この文を削除するとものすごく早くなります
どうすれば早くなりますか?
2022/07/18(月) 10:44:27.05ID:E3N1Hbif
でもあれか、matomeをつけてfを宣言してしまうと、普通にfを使うことができなくなってしまうのか
このへん関数を呼ぶときにmatomeをつけるかどうかで使い分ける方法ないのかな
2022/07/18(月) 10:54:26.68ID:Tf87Irt3
>>302
ごく素直に、fはデコレーターを付けずそのまま宣言する
matomeを適用する関数はf_matome = matome(f)と定義する
2022/07/18(月) 11:04:03.01ID:q/MsDqBP
>>302
デコレータ付けた関数はまとめてモジュール化するのが一番良いと思う
list_func.f([1,2,3])
305デフォルトの名無しさん
垢版 |
2022/07/18(月) 11:36:57.20ID:1omE+gQa
なんか頭の可笑しいのが劣化版だしまくるスレになってるな
2022/07/18(月) 12:10:19.60ID:jgot1txW
>>301
srcとdstが同じドライブならos.renameかPath.renameにすれば速くなる
1秒が遅いのかどうかはファイル内容や環境によるから分からない
2022/07/18(月) 12:13:47.35ID:J9TOF8GR
numpy ぐらい、Python のトップ・キノコードの動画があるのでは?

キノクエストと言う、2千円のサロンも始まった
2022/07/18(月) 12:42:22.47ID:Ni7oGdeS
>>301
PythonのバージョンやOS、テストしたファイルサイズ書こうよ
Python3.10.5 Windows10は同じドライブならそんな時間かからないよ
2022/07/18(月) 12:47:11.59ID:q/MsDqBP
>>305
いじけてないでキミも劣化版出せばいいんだよ
格好つけてたら何もできないぞ
2022/07/18(月) 13:41:26.68ID:Zd8mDGLh
少なくとも>>280をやるためにデコレーターはないわ
2022/07/18(月) 14:39:38.37ID:lIUF2c+K
>>310
>>289
2022/07/18(月) 14:46:42.16ID:koL1rSR0
初心者に対して不要な一般化は余計に分かりにくくするだけやろ
やり方自体が御世辞にもいいアプローチとは言えないし
2022/07/18(月) 15:01:53.40ID:q/MsDqBP
>>310
デコレータみたときは「やられた!」って思ったね
しかも可変、嫉妬してちょっと噛みついてみたけど見事に返り討ち
いやはや、彼のコードはみんなマネした方がいいよ、良いものはどんどん取り入れよう

そういえば、ひろゆきが良く自慢げに言う話を思い出したんだけど、
ゲームを作ってみる授業?か何かで友達が書いたコードがメチャメチャ短かったんだって
上下左右の操作なんだけど、ちょっとした計算で実現していて、それ見たひろゆきが才能の差を
感じてゲームクリエイターをあきらめたとかいう才能の話
それ聞いたときはアホじゃね?良いコードみたらパクればいいだけじゃんって思ったものだよ
たぶんひろゆきはすごくプライドが高くてちょっと躓いただけで諦めちゃうメンタルなんだよね
そんなこんなで出来上がったのがヒマつぶしwとか言って他人の文句しか言わない人間になっちゃった
「頭悪い!」と他人を下げることで自分を慰める毎日、やっぱ諦めずに挑戦するのって大事だなって思いました
そうホリエモンってひろゆきと真逆だよね、ホリエモンは今も色んなことに挑戦している、ホリエモンは輝いているよ
2022/07/18(月) 15:04:25.71ID:PImFDAtt
>>312
>>297
2022/07/18(月) 15:04:43.60ID:EPf9iKEG
>>311
一般的?
2022/07/18(月) 15:17:32.88ID:J9TOF8GR
Ruby とか、関数型言語Elixir では、map が基本
2022/07/18(月) 15:18:04.67ID:o0lyPM3S
他人の話を否定するだけの奴って何の生産性もないよな
低レベルでもコード提示するほうがよっぽど役に立つわ
318デフォルトの名無しさん
垢版 |
2022/07/18(月) 15:22:34.62ID:qwr+PsCM
>>312
参考までに良いアプローチplz
2022/07/18(月) 15:36:01.64ID:y8tEu6pL
matomeとmap、どっちが速いんだろうか
どっちもforで毎回f呼び出すよりは速そうだけど
320デフォルトの名無しさん
垢版 |
2022/07/18(月) 15:55:55.10ID:GojDtZHN
デコレータ
使って観たい
御年頃
2022/07/18(月) 15:59:17.63ID:LKJtspF0
処理時間測定してみたらmapのほうが2割前後速かったわ
322デフォルトの名無しさん
垢版 |
2022/07/18(月) 15:59:40.46ID:GojDtZHN
>低レベルでもコード提示するほうが

ないわ
2022/07/18(月) 16:06:47.73ID:kISKbyyY
ついでなんで書いとくね
実行時間
forを使ってf呼び出し:1
matome:0.5
map:0.4
2022/07/18(月) 16:21:22.72ID:ln/vUyrz
>>322
比較対象は
> 他人の話を否定するだけの奴
だぞ、頭大丈夫か?
325デフォルトの名無しさん
垢版 |
2022/07/18(月) 16:30:53.42ID:qwr+PsCM
デコレーターに親殺されたニキがおるな
2022/07/18(月) 17:45:39.65ID:UwLRS3iL
普通に考えてリストに関数をそれぞれ適用させたいならmapが一番シンプルでmapと同意の内包表記が最もPythonらしいのでは?
327デフォルトの名無しさん
垢版 |
2022/07/18(月) 18:04:13.67ID:LNL0CNxW
mapと同意?どういうこと?
2022/07/18(月) 18:04:19.00ID:pfq1SIlO
お盆も近いからデコレータに恨みがある奴も
這い出して来ているんでしょう
2022/07/18(月) 18:08:48.63ID:PImFDAtt
単にmapの人が、なんでmap使わないんだと言っているだけなのでは?
それがデコレータsageに見えると
2022/07/18(月) 18:23:16.60ID:q/MsDqBP
内包表記の方が断然好きだな〜、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
2022/07/18(月) 18:28:18.32ID:2ipqvE3v
>>330
なんでzip?
そういう引数リスト専用の関数を作りたいの?
332デフォルトの名無しさん
垢版 |
2022/07/18(月) 18:40:20.03ID:qwr+PsCM
>>280の望みは「intを引数に取り計算結果を返す関数を、"シームレスに"リストにも拡張すること」だからデコレーターが適当じゃない?Pythonicかどうかは知らん
2022/07/18(月) 18:50:45.67ID:0V7pBSnr
デコレータは不適当

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

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

高階関数ならなんでもデコレータにすればいいわけじゃない
2022/07/18(月) 18:52:28.91ID:q/MsDqBP
>>331
そのとおり、>>280だけでなく色んなパターンのリスト関数が簡単に作れるのだよ
このデコレータがあればね!
2022/07/18(月) 18:53:15.28ID:9fYXH/DB
勉強になったわ。
今までPyQtでアプリ作っていたが、@pyqtSlot()がQtデザイナーからのリンクみたいなもんかと思ってました。
すっきりです。
2022/07/18(月) 18:58:21.00ID:VjQ/Ckj0
デコレーターのメリットがあるならそれ使えばいいけど遅い上に記述量増えるしね
どう見ても>>320だろw
2022/07/18(月) 20:38:42.55ID:FbOneiqz
forよりは速い
2022/07/18(月) 22:52:23.80ID:P7xIx3wJ
今回の話でデコレータが内包表記より優れているという理屈が理解できない
def f(a):
  return a+1

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

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

今だとnow変数はif文が処理されれば値が入ります。
now変数のスコープをif文内だけにするってことはできますか。
2022/07/18(月) 23:05:31.63ID:2hrGCnNJ
self ということはクラスメソッドだと思うけど
他のメソッドから self.test() を呼べば now は隠蔽される。
もしくは頭で now = None しておいて
if now is not None:
でわけるとか。
2022/07/18(月) 23:13:05.76ID:1e6Pm9kS
>>330
starmap使えばlambdaいらない
2022/07/18(月) 23:22:42.01ID:q/MsDqBP
>>341 なるほど、でも内包表記の方が見やすいよね!
from itertools import starmap
def get_lists_items(func):
____# starmap版
____def process(*lists):
________return list(starmap(func, zip(*lists)))
____return process
2022/07/18(月) 23:35:38.05ID:Yb4pZTqb
>>342
二択ならね
でもどっちも用途に対してアンチパターンだから使わないのが吉
2022/07/18(月) 23:42:11.41ID:q/MsDqBP
>>343
for文使うのがベストってこと?
2022/07/18(月) 23:54:17.73ID:8wpG6nJ0
re.matchで何がマッチしたか知る方法てある?
s = 'ABCDEFGHIJK'
m = re.match(r'ABC|HIJ', s) 'm: <re.Match object; 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です。
2022/07/19(火) 00:05:16.63ID:pVZms+nG
>>339
pythonにはブロックスコープがないので
if文の中で新しく作成した変数のスコープをif文内だけにすることはできないよ
2022/07/19(火) 00:32:46.32ID:8NIkYSWg
>>345
groupとgroupsとそれぞれある
group(0)ならstr
2022/07/19(火) 01:22:31.44ID:XqVlnmi4
>>339
del now でどうでしょうか
2022/07/19(火) 08:41:05.75ID:UwsMPoKY
内包表記って普通のforと違うみたいだけど、なんでこんなに速いの?
350デフォルトの名無しさん
垢版 |
2022/07/19(火) 09:10:11.34ID:mYl9AT7Z
>>340,346,348
339です、どうもありがとうです。言語仕様的にブロックスコープないのはしょうがないですね。
del は試してみたいと思います。
2022/07/19(火) 09:30:11.93ID:ioxaO2di
a=[f(x) for x in range(100)]
で、今xがいくつのところをやってますとprintする方法はありますか?
forを外に持ってくると処理が遅くなってしまうので避けたいです
2022/07/19(火) 09:32:53.74ID:Dm4GA3mb
訂正
a=[f(x[i]) for i in range(100)]
にします
iの値は関数に持ち込みません
持ち込むのなら関数でprintできますが、それはなしにします
2022/07/19(火) 10:04:16.93ID:L7UUhMht
>>352
a = [print(i) or f(x[i]) for i in range(10)]
2022/07/19(火) 10:12:32.45ID:zbPEuSRT
CPU処理を高速化するのはmultiprocessingを使うことでできたのですが、
今度はGPUでmodel.fitするほうが遅くてしょうがないです
multiprocessing同様に簡単に速くする方法があれば教えてください
2022/07/19(火) 10:15:51.10ID:XqVlnmi4
>>352
fの中でカウント用の変数を持ってインクリメントする
2022/07/19(火) 10:20:19.62ID:+zTkD2Kt
2022/07/19(火) 10:20:59.40ID:+zTkD2Kt
>>353
できましたありがとう
ところで、どうしてorなんでしょう?
358デフォルトの名無しさん
垢版 |
2022/07/19(火) 10:23:27.04ID:2mzjLS5j
>>332
numpyが最適
わりとまじで
359デフォルトの名無しさん
垢版 |
2022/07/19(火) 10:30:11.09ID:2mzjLS5j
>>345
re.findall
360デフォルトの名無しさん
垢版 |
2022/07/19(火) 10:31:34.68ID:2mzjLS5j
>>349
普通のforと違うから
2022/07/19(火) 10:36:57.19ID:COa8jHBw
>>357
print(i)の戻り値がNoneだから、必ずorの右辺を返す
2022/07/19(火) 10:51:26.50ID:brlHmAiq
>>357
どうして?という直感はまっとうで
読み手の思考が止まるので必ず成功・失敗するケースだとその用法は不適
書き捨て用
2022/07/19(火) 11:07:31.09ID:+zTkD2Kt
>>361
なるほど、かしこいですね

>>362
では、どのような書き方が適切なのか教えてください
364デフォルトの名無しさん
垢版 |
2022/07/19(火) 11:30:53.28ID:bdrM7/md
printしたらforと内包表記の違いなんて誤差に見えるほど遅くなると思うがそれはええんか?
365デフォルトの名無しさん
垢版 |
2022/07/19(火) 11:33:51.75ID:RISkfx3J
forと内包表記で速さに違いが出るのはなぜですか?

同じコードをなぜ生成しないんですか?
366デフォルトの名無しさん
垢版 |
2022/07/19(火) 11:37:38.74ID:856tCJOd
内包表記でプログレス挟んで遅いのは嫌とかバカの極み
可読性考えて普通のforで回せ。 つか速度測ってみろ。大差ねえわたぶん

[(f(x[i]), print(i)) for i in range(10)]
2022/07/19(火) 12:00:14.16ID:GEUE7oT9
超初心者を馬鹿にしないと精神の安定が保てないかわいそうな人
368デフォルトの名無しさん
垢版 |
2022/07/19(火) 12:19:44.97ID:192s6b8D
馬鹿にされるような日本語使いする自称超初心者が悪い
2022/07/19(火) 12:24:07.94ID:AricPVYV
>>349
比較したコードを出してみて
2022/07/19(火) 12:31:03.42ID:ZGMRA42U
>>351
print等の副作用を伴う処理を繰り返す場合は
内包表記ではなくforを使うのがpythonにおける暗黙の了解
値の加工生成と入出力を分けて書くのはpythonに限らずプログラミングの基本
371デフォルトの名無しさん
垢版 |
2022/07/19(火) 12:45:56.52ID:2mzjLS5j
>>363
a = [[print(i), f(x[i])][1] for i in range(10)]
2022/07/19(火) 12:59:28.59ID:COa8jHBw
カウント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秒

行儀悪い書き方だが、条件しだいで効果はある
2022/07/19(火) 13:09:56.89ID:ieHxnJ8/
>>365
ループ内でpythonのインタプリタで実行される処理とコンパイル済みのCのコードで実行される処理の行き来が減れば速くなる

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

ただforより内包表記が速いから内包表記を使うというのは使い方が間違ってるか使う言語を間違ってる
374デフォルトの名無しさん
垢版 |
2022/07/19(火) 13:35:02.16ID:RISkfx3J
>>373

ありがとうございました。
処理系が書き方の違いを吸収して同じ(速い)コードを生成することは難しいのでしょうか?
375デフォルトの名無しさん
垢版 |
2022/07/19(火) 13:41:20.47ID:2mzjLS5j
8秒の方はstr()呼ばれる回数も少ないんじゃね
やり直し
376デフォルトの名無しさん
垢版 |
2022/07/19(火) 13:45:55.20ID:e6PA2QPH
内包表記を配列操作以外に使うな(関数叩くな)って書いてるのeffective pythonだっけ

>>374
速いコードって、たとえば進捗吐かないとか、無駄な評価式やループしないとか、そうやって作ってくんよ
鈍重な書き方しても速いのがいいっていうなら、もう根本的にpythonは遅い言語だよ
2022/07/19(火) 13:57:38.21ID:COa8jHBw
>>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秒
2022/07/19(火) 14:02:29.41ID:6WNMcjy9
>>377
printしない場合は?
2022/07/19(火) 14:08:53.16ID:COa8jHBw
>>378
str(i)呼ぶ回数は、両方 100000000 / 100 = 1000000回
2022/07/19(火) 14:12:29.27ID:6WNMcjy9
>>379
うんだから何秒なの?
381デフォルトの名無しさん
垢版 |
2022/07/19(火) 14:12:50.87ID:Xr1AbmZQ
結局書きづらい、読みづらくてミスしちゃうんだから
普通のforループの方が総カロリー低いと思います
2022/07/19(火) 14:17:28.28ID:COa8jHBw
>>380
printしない内包表記
a = [str(i) for i in range(100000000) if i%100 == 0]
8秒
383デフォルトの名無しさん
垢版 |
2022/07/19(火) 14:19:06.99ID:RISkfx3J
行列プログラマーという本では、集合の表記に近い内包表記のほうが分かりやすいと書いてあります。
実際、もっぱら内包表記を使っています。
2022/07/19(火) 14:40:11.78ID:HHxHBIIc
>>382
つまりprintは時間がかかってないわけだよね
で、普通のforより内包表記のほうが速い分だけ速くなってると
それは何の実験なんだい?
385デフォルトの名無しさん
垢版 |
2022/07/19(火) 14:49:08.31ID:Dd2ngZhk
内包表記でもインデントしていいんですよ
可読性高めていけ
2022/07/19(火) 14:52:21.67ID:COa8jHBw
>>384
進捗を大雑把に表示したい場合、内包表記でprintするのも有りという実験
俺は開発中以外では使わんけど
完成したコードにこんなの書いてたらやだ
2022/07/19(火) 15:07:57.56ID:COa8jHBw
printは時間がかかってないのではなく回数を少なくしてる
他の人が指摘してるように、進捗を細かく表示したい場合、内包表記もforループも時間差はほぼ無くなる
printはやはり時間がかかる
2022/07/19(火) 15:17:30.04ID:kjnFmzM9
時間差は4秒で変わらないんじゃないの
printに時間がかかるから4秒の割合が小さくなってほとんど意味ないじゃんってことでしょ
2022/07/19(火) 15:40:36.31ID:COa8jHBw
>>388
そういうことです
進捗を細かく表示したい場合、ほとんど意味ないってこと
完成状態で内包表記にprintはおすすめできない
テスト中に内包表記にprintを入れるのはお好みで
390デフォルトの名無しさん
垢版 |
2022/07/19(火) 15:40:46.26ID:bdrM7/md
a=[]

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

a[i]=str(i)
だとますます変わらなそう
2022/07/19(火) 16:01:31.52ID:Ao+3qyOr
>>377
そんな差でる?
むしろforループのほうが3~5%程度速いんだが
2022/07/19(火) 16:03:31.06ID:/jGGKkxp
>>389
であれば、可読性より速度を重視する場合、内包表記にprintを入れたほうがいいということですよ
意味は4秒ぶんあるわけです
2022/07/19(火) 16:18:19.62ID:COa8jHBw
>>391
こちらは化石PCで測定したので。
誤差じゃない充分な時間差が開く程度にrangeの値を大きくしてみて
2022/07/19(火) 16:28:38.52ID:L7UUhMht
そもそも内包表記は可読性良いよ、ギュッと1行にまとまりつつも分かりやすい
for文見る方がダルイわ、内包表記にできないものを仕方なくfor文にしているよ
慣れだよ慣れ、最近だと二重ループの内包表記も全然苦じゃない、美しいとさえ感じる
395デフォルトの名無しさん
垢版 |
2022/07/19(火) 16:31:26.97ID:RISkfx3J
>>394

ですよね。集合論的な表記に似ています。
2022/07/19(火) 16:40:41.64ID:wHnodxSw
forループのほうが内包表記より速いなんてことあるの?
397デフォルトの名無しさん
垢版 |
2022/07/19(火) 18:36:04.44ID:paq2dZhq
それこそ、内包表記で呼ぶ関数の回数をカウントして確認たいならデコレーターとかでtqdm使うようにした方が良くないかな?
内包表記の中をごちゃごちゃにするのは基本的には避けた方がいいと思うんだよな。
シンプルに書くために内包表記を使ってるのであって、Zコンビネーターとか使ってへんなことするなら普通のforとかにした方がいいよね
遊びとしては否定しないけどね
398デフォルトの名無しさん
垢版 |
2022/07/19(火) 19:06:26.25ID:xA31LZ9f
code golf で言うと
打数多い方が自慢してるような
糞な流れ
もうやめませんか
2022/07/19(火) 19:27:22.92ID:w0DVg8Bk
自治厨久しぶりに見た
2022/07/19(火) 19:55:09.64ID:z/It7jZN
>>397 に一票
こういうのこそデコレーターの出番だと思う
2022/07/19(火) 20:20:06.84ID:n8OVMrsb
つまり具体的にはどういうこと?
402デフォルトの名無しさん
垢版 |
2022/07/19(火) 22:29:55.85ID:Dd2ngZhk
一行にまとめた内包表記より、インデントした内包表記の方が可読性が下がる
403デフォルトの名無しさん
垢版 |
2022/07/19(火) 22:32:42.31ID:Dd2ngZhk
の?
404デフォルトの名無しさん
垢版 |
2022/07/19(火) 23:31:48.45ID:paq2dZhq
>>401
こんな感じ
imgur.com/a/UsKhUuD

tqdm使いたくなかったらpbarの初期化やpbar.updateの代わりにカウント変数とprintでも使っておいて
2022/07/20(水) 00:25:50.52ID:sLuJt4wx
>>404
rangeの100で100回ループさせるから
tqdm_wrapperに100を渡してるんだよね?
406デフォルトの名無しさん
垢版 |
2022/07/20(水) 01:30:58.07ID:aFoX4Dx/
>>405
そうそう、その辺はもっといい方法があるかもしれないが、ちょっと思いつかなかったのでそんな感じ。
回数が決まってないときは棒グラフは出せないけど1秒に何イテレーションできてるとかはわかると思う。
2022/07/20(水) 03:27:59.73ID:vTCCBmkT
@tqdm_wrapper(total_count)ってできればいいんだけど、そういうのは無理なのかな?
2022/07/20(水) 06:19:50.33ID:uVwid/eb
printなしでやってもforループのほうがほんの少し内包表記より速いんだけどなぜだろう
2022/07/20(水) 07:14:30.03ID:vC0V/6Za
PEP
pythonは描き方がひとつ(キリっ
2022/07/20(水) 07:58:53.16ID:rNnuNQ69
>>408
計測結果は何秒だったの
メモリが少なくてスワップ発生してるとか?
2022/07/20(水) 09:48:14.82ID:53g3nF67
Pythonのネット記事読んでるとAnacondaを入れてどうこう、というチュートリアルばっかりあるんだけど
肝心のAnacondaはどういう状況下で使うものなのか、説明省かれててよくわからないんだよな

ライブラリとpythonのバージョンが合わないと使えないことがあるからそれを避けるため、って認識でいいの?
不具合無かったらAnacondaつかわなくていいのかな?
412デフォルトの名無しさん
垢版 |
2022/07/20(水) 11:17:28.13ID:wWIP1AbD
anacondaはAnaconda社の計算科学のための商品で学生の方など教育や学術目的、または趣味の用途であれば無償でご利用いただけます

入門書とかで使われてるのは、色々と最初から入ってるから開発やデプロイ先の環境構築を解説しなくて済むからだよ
anacondaに依存しないやり方覚えた方が楽っていうか、むしろその方が必須になる
413デフォルトの名無しさん
垢版 |
2022/07/20(水) 11:22:56.97ID:wWIP1AbD
退屈なことは Python にやらせようを書いた人も同じような事言ってた
414デフォルトの名無しさん
垢版 |
2022/07/20(水) 11:27:11.69ID:wWIP1AbD
アナコンダを否定してるわけじゃないよ。素晴らしい商品ですし、選択肢の一つとして選べるのは良いことだと思います
2022/07/20(水) 11:55:51.53ID:L6JCmqAC
あえて、IronPythonに手を出して茨の道をw
2022/07/20(水) 13:27:25.36ID:SSFD7/IV
今Twitterなどで話題になってる仮想通貨のbotを作りたいです

年間で1億円ぐらい稼ぐには何の勉強すればいいですか?
417デフォルトの名無しさん
垢版 |
2022/07/20(水) 13:38:38.86ID:pMrjs46b
経済と仮想通貨
2022/07/20(水) 13:38:57.02ID:ShYgaPwJ
デッサン力
2022/07/20(水) 14:14:10.83ID:hOJNeZde
これからのキーワードは仮想環境
anacondaもIronPythonもPyTorchも欲しい環境をコンテナ一発でドーン!
ってやりたいからDocker勉強しようかと思っている
2022/07/20(水) 15:00:19.03ID:qJwz0nM8
ぶっちゃけ
docker の anaconda 版とか
docker の 標準 python 版とか
そういうので良いんだわ
解説書あっても各々インスコ時にバージョンガーとかおま環とか
だるいサポートにみんな疲れたんだろ
2022/07/20(水) 15:29:51.99ID:djIfGOxS
windows10 + python3.9 では生ソケットを扱う事ができないのでしょうか

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

ログインしているユーザはadministratorの権限も持っています
英語のサイトで調べるとprohibitというワードもありました
識者の方ご指導願います
422421
垢版 |
2022/07/20(水) 15:40:01.72ID:djIfGOxS
421です
コマンドプロンプトを管理者権限で実行する事が必要であると学びました
2022/07/20(水) 16:51:36.92ID:rnlV1uw8
anacondaはまああれだけどspyderはなんか好きだ
2022/07/20(水) 17:04:37.61ID:rNnuNQ69
a=[]
append = a.append
for i in range(30000000):
____append(i)
のように、メソッドをあらかじめ変数に入れると高速化できるという情報をよく見かけるけど本当なの?
何回計測しても誤差程度の差しかなく、速くなってるのか確認できないんだけど
2022/07/20(水) 17:27:44.50ID:Lx4+ezqp
https://wandbox.org/permlink/xE2gHLprP4RKuqf0
2022/07/20(水) 17:49:55.19ID:ZOYHOoJs
このくらい最適化してよと思っちゃうんだが無理なんかな?
2022/07/20(水) 17:50:04.72ID:rNnuNQ69
>>425
ありがとうございます
計測方法のミスに気づきました
関数を作らず計測していたので、append = a.append のところがグローバル変数になって遅くなり、
その結果、高速化していなかったようです
2022/07/20(水) 18:01:43.03ID:D9vTvaEa
これの出所は概ね公式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
型がないダックタイピングな以上は都度解決するしかないであろうなぁ…
2022/07/20(水) 18:58:09.37ID:QlVkmKZp
anaconda入れたけど、avastがなぜかウイルス扱いしていて、anaconda立ち上げるとすぐ落ちて使えなくて、あきらめてvscにした
430デフォルトの名無しさん
垢版 |
2022/07/20(水) 20:09:39.43ID:eRSlBPBh
pythonで質問なんですがコンソールに表示される数値の横に量を表したバーを表示させたいのですが

300 ■■■
20 ■
150 ■■

ぐぐっても進捗率をあらわすプログレスバーのtqdmが出てきてしまいどうやって数字に連動した量を表示させるのかわかりません
何かヒントがあればお願いします
2022/07/20(水) 20:21:54.00ID:hglVd79x
pbar.update(1) ←これの数字をいじる
432デフォルトの名無しさん
垢版 |
2022/07/20(水) 21:24:08.50ID:npea7ePl
>>431
ありがとうございます、おかげさまでなんとかできそうです
素敵なお方だ
2022/07/20(水) 22:26:00.73ID:rNnuNQ69
>>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)

今書いた書いたらちゃんとテストしてない
2022/07/20(水) 22:32:08.75ID:rNnuNQ69
>>433
バグってた
すぐ直します
2022/07/20(水) 22:42:20.27ID:rNnuNQ69
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)
2022/07/20(水) 22:53:43.67ID:JXXlHdvc
Ruby on Rails なら、VSCode, WSL2, Vagrant, Virtual Box でも出来るけど、
Python は依存モジュールが多いから、Docker が普通

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

この本が最も簡単
2022/07/20(水) 23:38:31.06ID:hOJNeZde
>>435
barだけだとやっぱり分かりにくいですね数字も必要だと思いました
もしくはbarの到達位置の表示が必要
2022/07/20(水) 23:59:09.30ID:hOJNeZde
>>436
Dockerの書籍でているのね、レビュー評価もメチャいいじゃん
でもネット上に公式?の日本語ドキュメントがあるからこれでいけるんじゃないかな??どうかな?w
ttps://matsuand.github.io/docs.docker.jp.onthefly/
ttps://docs.docker.jp/index.html
2022/07/21(木) 01:17:04.66ID:dz51dLzk
>>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)
2022/07/21(木) 03:59:00.54ID:c34Fgnuj
PythonでAI作り始めてから電気代が2000円以上高くなった
2022/07/21(木) 08:50:46.37ID:nja0E+A7
>>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")
2022/07/21(木) 11:05:44.45ID:nja0E+A7
さらに良くなった
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")
2022/07/21(木) 19:29:07.60ID:dz51dLzk
やっぱりmath.ceil使ったほうがいいよな
importを減らしたがる癖が抜けず2倍してしまった
2022/07/21(木) 20:09:26.68ID:dz51dLzk
最終型
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="")
2022/07/21(木) 21:25:09.45ID:nja0E+A7
>>444
すんごーい! crの初期値は1が良いかな、それ以外は全部気に入りました
446デフォルトの名無しさん
垢版 |
2022/07/22(金) 00:46:45.54ID:LN4IvGf8
>>444
ありがとうございます
447デフォルトの名無しさん
垢版 |
2022/07/22(金) 11:32:26.12ID:emgmw9dd
>>421-422
runas
2022/07/22(金) 14:53:38.79ID:hAgOKfi8
>>444
数値を非表示にするオプションつけ忘れた
2022/07/22(金) 17:03:59.46ID:t+dBeaSp
>>448
そのオプション名を何にするかでセンスが問われる
num, display_num, meter, bar_value, ..etc
さあ、キミのセンスを見せてくれ!
450デフォルトの名無しさん
垢版 |
2022/07/22(金) 17:47:22.62ID:iaUAG8EO
ここはきみの日記帳じゃない
2022/07/22(金) 19:07:18.92ID:t+dBeaSp
>>450
関数や変数の命名はとても重要だよ? 端的で分かりやすくする必要がある
それが可読性やメンテナンス性をあげるわけなのだよ
プログラミングは名前付けであると言われる所以はそういうことなのだよ

今回の数値の非表示オプション名は非常に難しい、私的にはdisplay_valueがベストかな?
と考えつつも彼の意見も参考にしたいわけだ、もちろんtqdmではどうしているのかな?
と調べたりもした、tqdmではbar_formatで書式を指定できるみたいだね
その中で数値部分はpercentageという変数名のようだ
print_barはunit指定ができるわけで%表示固定ではないから、percentageは適切ではない
と考えると・・ね?難しいでしょ? 皆の意見も聞きたいじゃん!
2022/07/22(金) 19:43:18.38ID:bpOnuI9e
名前は重要。
開発が終わった後でも、コードを見る事があるから

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

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

リファクタリング・メソッド化などは、Rubyist の基本
2022/07/22(金) 19:52:25.71ID:PdYjn4LX
メソッドが長すぎると名付けが難しいから結局は短く作るのがいいのか?
でもそれだと分割しすぎとか言われそうだし

「汎用的、抽象的」な名前がいいのか「汎用的な名前を避けて具体的」にすべきなのか
2022/07/22(金) 19:52:35.56ID:t+dBeaSp
>>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="")
455452
垢版 |
2022/07/22(金) 21:05:54.53ID:bpOnuI9e
例えば、Ruby のモジュール関数の名前なら、
cancel_button_label_text
apply_or_cancel_button

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

末尾の? で、戻り値がbool 型だと表現できる
456デフォルトの名無しさん
垢版 |
2022/07/22(金) 21:06:08.18ID:aVBkeTN2
>454
print_bar.update ってできない?
2022/07/22(金) 21:29:43.19ID:t+dBeaSp
>>456
tqdmのupdateみたいなことができるかってこと? クラス化すればできるよ
ああ、bar_formatとか呼び出すごとに変数指定するのはアホだよね
クラス化してインスタンス生成時にbar_format指定した方がいいよね
2022/07/22(金) 22:27:04.77ID:t+dBeaSp
クラス化できたけど、関数バージョン(>>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)
2022/07/22(金) 22:57:55.57ID:oFTCo3Qt
日記帳で試行錯誤して、結論が出てから書き込んでください
460デフォルトの名無しさん
垢版 |
2022/07/22(金) 23:49:56.07ID:XYg2RZCf
boxサーバーに上がっているExcelやcsvのデータってpythonで読み取ることできるのでしょうか?
https://app.box.com/file/xxxxxxxxxxxxxのようなURLを指定して
ファイル内のデータを読み込みたいのですがうまくいきませんでした。
2022/07/23(土) 06:43:50.22ID:NAv7kQq5
beautifulsoupでいったんダウンロードすれば?
2022/07/23(土) 06:53:36.23ID:DC0ZGSft
ども、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は付けたい人が自分でつければいい
最低限の機能が付いていて、可読性・カスタマイズの容易性を考えるとこんなところでしょうか
2022/07/23(土) 07:10:57.00ID:DC0ZGSft
>>462
formattedです。恥ずかしいミス
464デフォルトの名無しさん
垢版 |
2022/07/23(土) 07:22:10.22ID:ytdxYh/D
なんか昨日のアップデートでWindows TerminalがIME勝手にON(英字入力)になる。とっても面倒くさい。
OFFにする方法ない?
465デフォルトの名無しさん
垢版 |
2022/07/23(土) 09:23:17.53ID:bR39w9BX
>>459
++
ほんそれ
2022/07/23(土) 09:48:06.05ID:lkZCuVJ2
>>462
おつかれちゃーん、なかなか楽しめたし勉強になったわ
日記帳とか言ってる奴等も参加すれば良かったのに、実際にコード書かないと勉強にならないぞっ!w
2022/07/23(土) 10:20:26.06ID:zqWGCIwO
コード出してあれこれやるのはいいと思うけどここまで引っ張るのはさすがにスレチだわな
こっちへ行けよ

Pythonのお勉強 Part67
https://mevius.5ch.net/test/read.cgi/tech/1653540315/
2022/07/23(土) 10:32:50.67ID:lkZCuVJ2
>>467
引っ張るとスレチって意味が分からんw そっちのスレも同じじゃん何が違うのよ?
うーん、、もしかして自分が質問したレスが埋もれちゃったとか?
それは関係ないよ、単に答えられるor答える人が居なかっただけで我々のせいではない
2022/07/23(土) 10:41:14.21ID:iHVC6bwv
我々…
470デフォルトの名無しさん
垢版 |
2022/07/23(土) 10:43:44.38ID:bR39w9BX
自演で自分のレス褒めてるレスとか観ると
他人事乍ら哀しくなるな
2022/07/23(土) 10:59:03.42ID:zqWGCIwO
>>468
スレタイも読めないのか?
ここは超初心者用な
>>430はスレタイに沿ってるけどその後print_bar でグダグダ書くのは違うだろ
2022/07/23(土) 11:09:30.68ID:QCnlUATD
スレタイに日記帳って書いてあるスレで試行錯誤すべきだったよな
2022/07/23(土) 11:18:41.28ID:lkZCuVJ2
>>471
うん?>>433からすでにスレチってこと?
コード出してあれこれは良いとか>>467に書いてるし
何が言いたいのか意味が分からん、どこからスレチなのかレス番号かけや
2022/07/23(土) 11:21:00.46ID:Q9mI3iQv
しつこい
2022/07/23(土) 11:29:25.91ID:zqWGCIwO
>>473
スレチかどうかの閾値なんて人によって違うからここからスレチなんて言うことはできない
それでも「ここまで引っ張ったら」多くの人がスレチって感じるだろって話
2022/07/23(土) 11:31:58.41ID:lkZCuVJ2
>>475
ほえぇぇぇぇえぇぇええええええええ〜〜〜〜〜〜〜〜!!
ボクちゃんが気に食わなかったからスレチですってことですかぁああああ???
びっくりしましたぁぁああああああwwww
2022/07/23(土) 11:38:20.58ID:3Ek+JvxJ
3回までよくて4回目がだめなんてことはない
3回でだめな人もいるし、4回はアウトだろうという人もいる
だが10回までくるとさすがに全員がアウトと感じる
そういう状況
2022/07/23(土) 11:49:34.23ID:lkZCuVJ2
>>477
うん?10回は全然良いよ、っていうかスレに沿っているなら何回でもええがな
全員がアウトと感じるとかウソつくなよw 君たちのお気持ちの表明がまさにスレチw
なぜならPythonと全く関係ございません!これが完璧なスレチの指摘というものだよ
お気持ちとか何だよww 脳みそ付いてんのか?w
2022/07/23(土) 11:49:41.79ID:Py93vpAm
>>476
> ボクちゃんが気に食わなかったからスレチですってことですかぁああああ???
ダメな理由は前に書いてあるだろ...

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

> びっくりしましたぁぁああああああwwww
お前の無能さにこっちがびっくりだよw
2022/07/23(土) 11:51:51.55ID:NAv7kQq5
>>478
そう、君たち、この言葉がすべて
おまえだけだよいいと思ってんのは
2022/07/23(土) 11:52:41.39ID:lkZCuVJ2
>>479
ダメな理由は>>475に書いてあんだろ、スレに沿っていたけど途中で彼の閾値を超えたんだってww
10回はダメでちゅ〜〜ww
2022/07/23(土) 11:53:42.77ID:lkZCuVJ2
>>480
はい、じゃあ全員じゃないね、答え合わせありがとうw
483デフォルトの名無しさん
垢版 |
2022/07/23(土) 12:01:36.99ID:LCkddkGN
>>460
460です。beautifulsoupも初めて聞いたレベルなのですが、
チャレンジさせていただきます。
ありがとうございました。
484デフォルトの名無しさん
垢版 |
2022/07/23(土) 12:01:47.65ID:LCkddkGN
>>461
460です。beautifulsoupも初めて聞いたレベルなのですが、
チャレンジさせていただきます。
ありがとうございました。
2022/07/23(土) 12:02:11.20ID:cx+wDCne
>>482
そうだね
一人だけ空気読めないやつがいる
これが正確な言い方
2022/07/23(土) 12:12:16.70ID:zqWGCIwO
今日の様に暑いとID:lkZCuVJ2みたいな奴が犯罪にはしらないか心配になるw
2022/07/23(土) 12:12:53.56ID:DC0ZGSft
462です。
スレ見なおしたけど反省するようなレスしていない
449で予想外のツッコミ受けて驚いたが。
自治厨の相手はしたくないので、この件のコメントはこれが最初で最後
2022/07/23(土) 12:13:10.23ID:Sr9KJy9/
絶望的に適性ないやつがいるな
そんな無駄なことは今すぐやめろ
限りある人生をもっと有意義なことに使え
2022/07/23(土) 12:16:15.57ID:cx+wDCne
まあ反省できるようなやつだったら最初からこんなことしないわな
2022/07/23(土) 12:39:52.71ID:zqWGCIwO
コード出して色々言うのはいいけど適切なスレでやってねって話なんだけど自治厨とか言い出してる時点で反省なんてしてないわなw
2022/07/23(土) 12:46:43.25ID:b3gXMMo0
自己中なんだろ
自分以外見えてない
492デフォルトの名無しさん
垢版 |
2022/07/23(土) 15:41:49.42ID:FAO+OpS7
ネオ麦茶
2022/07/23(土) 17:14:17.68ID:QCnlUATD
>>492
犯罪示唆ですね
通報しました
494デフォルトの名無しさん
垢版 |
2022/07/23(土) 18:06:21.74ID:KR63qUqp
随分とハイコンテクストな犯罪教唆だな
2022/07/23(土) 21:20:29.07ID:MqDru3I9
>>460
例えばRuby では、input.csv が以下の内容として、
a
b,c

require 'csv'
require 'open-uri'

url = "http://localhost:8000/input.csv";

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

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

または、curl コマンドを使う事もできる。
input_csv = `curl #{ url }`
2022/07/23(土) 22:54:21.58ID:jIlcufBL
完全自殺なんチャラって本も流行ったなぁ
497デフォルトの名無しさん
垢版 |
2022/07/24(日) 05:32:21.57ID:or5HZl/v
1.適性がない、というその適性を定義してください。
2.適性がない、となぜ判断したのか 1. をもとに詳しく記述してください
3.1.2.が出来ないのではないのならば、あなたこそ、あなたのいう適性をもちあわせていない、と私は判断します
以上
2022/07/24(日) 10:18:49.14ID:VDm4wods
>>497
非論理的だね
著しく論理的思考能力の低い人はプログラミングの適性がないと言われても仕方ない
2022/07/24(日) 12:33:12.33ID:DlP0Pw4T
>>498
1.自民党と統一教会の関係を説明してください
2.公明党と政教分離の関係を説明してください
3.おまえは馬鹿
2022/07/24(日) 13:48:43.90ID:Kadg5L8P
>>499
ここで政治の話は止めて頂きたい
2022/07/24(日) 14:03:28.06ID:s7YMPwIQ
>>500
おまえは馬鹿
2022/07/24(日) 14:09:01.48ID:nqGRTr2S
プログラミングしてると、
Delete、Enter、BackSpace、半角全角、home、end
ここらへんがホームポジションから遠すぎて困るな
半角、全角は無変換と変換に割り当てたんだけど

みんなはキーマップカスタマイズとかしてるの?
2022/07/24(日) 14:12:13.07ID:s7YMPwIQ
それはPythonと関係のある話題ですか?
2022/07/24(日) 14:14:56.30ID:QkJUlhBv
手を叩いて大きくすると良い感じになるよ。
2022/07/24(日) 14:20:46.38ID:VlRFcd7U
>>499
メンバシップ関数を定義するのけ?
2022/07/24(日) 14:43:22.46ID:Kadg5L8P
>>502
ctrl<->capsの入れ替えくらい
507デフォルトの名無しさん
垢版 |
2022/07/24(日) 16:12:15.26ID:ydeGY7xn
>>502
親指活用できるエルゴノミクスキーボード使ってる
詳しくはハードウェア板のエルゴノミクスキーボードスレへ
kinesis, ergodox, teckあたりかねその辺打ちやすいの
2022/07/24(日) 16:23:06.62ID:oKMHGzT9
集団自決したはずなのに生きていた人が死去
2022/07/24(日) 19:45:11.64ID:e/hljxBO
スクレイピングの練習中でリスト内包表記と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桁の英数字 英は半角大文字)を取得するようにしたいです。

なにかうまい表記があれば教えてください
510デフォルトの名無しさん
垢版 |
2022/07/24(日) 19:55:36.27ID:IZxLU3+7
秀丸最強
2022/07/24(日) 20:08:14.75ID:JBPZyDq1
アマゾンのURLくらいググったら色々出てきそうだけどクソ見にくい正規表現で無理せずにスラッシュでsplitでifにlengthとアスキー確認くらいでいいんじゃないの?
2022/07/24(日) 23:38:55.79ID:GhBFnIe8
プログラミングって直感じゃね?
論理は直感を説明するのに用いることに有効だけど
プログラム書くのにいちいち考えないっしょ
考えるのは設計とテストだけだし
2022/07/24(日) 23:39:26.11ID:GhBFnIe8
それ以外にもあるかもしれんけど
2022/07/24(日) 23:43:50.14ID:nVQ6Xq/p
>>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)')]
2022/07/25(月) 00:22:12.12ID:kwIPZDW5
argparse使って、たとえば1つ目の位置引数(スイッチのようなもの)の違いで、それ以降は全く異なる引数ルールになるような場合はどのような指定をすればよいでしょうか?
それともそれぞれ別のルールを定義してパースする必要がありますか?

すごく簡単な例ですが、addの場合とlistの場合で指定する引数が違うようなものとか
user.py
-add name [--prop property]
-list [--group group]
2022/07/25(月) 00:41:00.73ID:YiCqNPeZ
>>515
1つめの位置引数を読んでから残りをargparseにかければいいんでないの?

それかサブコマンド対応してるライブラリを使うか
2022/07/25(月) 00:57:12.30ID:kwIPZDW5
>>516
なるほど。argparseで一度にまとめてできればと思ったんですが、できないってことですね…
2022/07/25(月) 01:00:15.74ID:gTrk2zFk
>>509
例えば、Ruby なら、

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

require 'uri'

dp_url = "http://example.com/%E3%81%82/dp/a"; # あ = %E3%81%82
non_dp_url = "http://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 : 一致しない
2022/07/25(月) 01:03:04.79ID:oCKr0yXR
add_subparsersでやればいいんじゃない
2022/07/25(月) 09:00:21.95ID:9Mfr9nvz
>>512
うう……設計がプログラミングに含まれてない……うそやろ……
2022/07/25(月) 09:35:32.16ID:Tcjxae6G
>>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)')]
2022/07/25(月) 09:43:03.78ID:VgpbHR93
>>520
Don't think. Feeeel!!
2022/07/25(月) 10:25:41.85ID:kwIPZDW5
>>519
add_subparsers使えばできますね!
ありがとうございます。
2022/07/25(月) 12:52:01.49ID:gFjrq6Gs
>>520
設計は人が考えたものを具現化するプロセスまでの事でプログラミングに含まれないよね

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

人が本来やることは自身の進化とソフトウエアのアップデート対応に強い設計する事と作業を減らす工夫と世界が前進することへの貢献
2022/07/25(月) 12:57:49.15ID:gFjrq6Gs
簡単そうに言ってるけど
かなり時間かけて様々なことを知らないといけないし知らない未知のことへの挑戦もしてかなきゃいけない
そーゆー志を持った人がこのスレの中に居てくれたら俺は嬉しい
2022/07/25(月) 13:20:20.14ID:9Mfr9nvz
>>524
(それコーディングじゃない?)
2022/07/25(月) 14:36:18.33ID:evu7R6rH
docker入れてみたけどやっぱ仮想環境だからGB単位でメモリそこそこつかうんだよな
アイドル状態で8GB、vscodeで1〜2GB、dockerで2GB、Chromeで動画見ながら作業したら2〜3GBぐらい使うからギリギリで困る
やっぱメモリ32GBは入れないとだめか
2022/07/25(月) 15:07:03.89ID:fmU0SO/o
>>526
(ちんこかゆい)
529デフォルトの名無しさん
垢版 |
2022/07/25(月) 16:14:04.12ID:GOtCNvAE
https://www.youtube.com/watch?v=B5tSZr_QqXw
2022/07/25(月) 19:47:19.85ID:GWKUHzSt
>>514
>>521
ありがとうございます
行けました!
2022/07/25(月) 19:49:50.49ID:GWKUHzSt
seleniumで複数ブラウザ立てて並列処理してみたいけど難しそう
scrapyで楽天からスクレイピングしてみたら非同期処理?のせいで早すぎて速攻アク禁くらった
2022/07/25(月) 20:11:37.41ID:NlibKZuA
>>531
プロファイルを別にすればいけるよ
高速化目的で同じサイトに並列アクセスするのはやめた方がいい
533デフォルトの名無しさん
垢版 |
2022/07/25(月) 20:20:18.30ID:mO6SEFWJ
流石にもういきなり逮捕はされないと思うけど、librahackみたいなことが起こらないとは言えないから怖いよねー。
アクセスログで見ても、ギリギリ人間がアクセスしてるって言い訳できるぐらいの間隔を乱数で作ってsleepしてるわ。
2022/07/25(月) 21:11:33.84ID:Tcjxae6G
>>511
フハハハハハハハハ、>>521を刮目せよ! 賞賛の声(>>530)を聞け!
正規表現はクソ見にくいわけはなく、むしろ簡潔であり完璧であり完全無欠なのである
正規表現にできないことはなく、正規表現に代わるものはなし
正規表現はまさに人類の叡智なのである
535デフォルトの名無しさん
垢版 |
2022/07/25(月) 21:14:45.44ID:GF1rw+EH
イヤイヤイヤイヤ、普通にクソ見にくいでしょ。
他人が理解できないものを書くほうが偉いって風潮何とかならんの?
2022/07/25(月) 21:44:24.25ID:Tcjxae6G
>>535
偉いとかじゃなくて便利なんだよ
>>521の正規表現は別に難しい部類じゃない、\wは単語文字という意味で英数字も含まれる
\w+で単語文字が1個以上という意味になる、その前の(?<=...)は後読みアサーションで
これにマッチした後の\w+をサーチしているわけで基本というか、ちょっと勉強すれば、というか
正規表現の仕様に例が載ってるから、例みたらすぐ理解できるよ
https://docs.python.org/ja/3/library/re.html

自分的には最後の|$が工夫した点で、コレでサーチできなかった場合に空文字を取得させることができる
正規表現使わずにスラッシュでsplitでifにlengthとアスキー確認なんかの方が見にくいだろうし
面倒すぎてやっとれんよ
2022/07/25(月) 22:07:08.94ID:5m9dN2FM
(超初心者用)
2022/07/25(月) 22:50:49.78ID:Tcjxae6G
>>529
最新動画の@cacheがマジ感動した、最後のフィボナッチの高速化がマジ良かった
マジでマジでマジだから
2022/07/25(月) 23:03:45.65ID:gTrk2zFk
WSL2, Docker は、8GB メモリじゃキツイ

16〜32GBは欲しい
2022/07/25(月) 23:56:34.13ID:XTViXxR/
>>536
スラッシュでsplitでアスキー確認って
[i for i in ○.split('/') if len(i) == 10 and i.isascii()]
で終わりでしょ
それ自体に難しさも見にくさも感じないが
2022/07/26(火) 01:23:31.22ID:HcfNtCqI
正規表現学びたいけど複雑すぎて訳分かんねえよ
なんか練習できるところないの?
ゲームっぽく遊べたりする所どっかあるだろ?
2022/07/26(火) 03:23:25.62ID:fUa59wf/
ターミナル
2022/07/26(火) 08:00:48.09ID:hxnsYVU0
>>540
これはアカンでしょ、ifってそんなけ? /dp/の判定が無いし
/dp/が無かった場合にpd_rd_iから取得する処理が無いし
これでいいなら正規表現ならこうじゃわいな
re.search(r'\w{10}|$', ○).group()
2022/07/26(火) 08:23:18.19ID:hxnsYVU0
findall使った方がいいか、こっちの方が>>540と処理結果同じだわ
re.findall(r'\w{10}', ○)
2022/07/26(火) 09:42:11.06ID:28W+mdVQ
10桁英数のチェックが必要ないならこれでいけるんじゃね
([i[:10] for i in url.split("/dp/") + url.split("pd_rd_i=") if not i.startswith("https:")] + [""])[0]
チェック必要なら1行ではきびしいか
2022/07/26(火) 10:10:32.06ID:2F7nQnXP
pd_rd_iは必須じゃないからなあ
2022/07/26(火) 11:04:25.18ID:hxnsYVU0
>>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()
2022/07/26(火) 11:06:35.56ID:Uy4U9BVa
goodボタンってどこにあるの?
2022/07/26(火) 11:37:39.45ID:PhJ4pIjK
精神病になるとそういうボタンが見えるらしいよ
2022/07/26(火) 12:16:00.10ID:k5BnME6W
こいつ上の方にいた日記帳キチガイだな
2022/07/26(火) 12:21:32.78ID:r5zklFsb
ハッタツしょう害なんじゃねえの
2022/07/26(火) 12:37:44.00ID:28W+mdVQ
>>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()]
553デフォルトの名無しさん
垢版 |
2022/07/26(火) 12:44:17.32ID:IrL7txwd
・フリーランスに立ちはだかる「常駐」の壁。慣例を打ち壊し、
“テレワーク”案件3割→8割へと成長を遂げた「クラウドテック」の軌跡
・リモートワーク求人専門サイト「プロリモート」がリニューアルオープン、
 業務委託契約の求職者と企業をマッチング 
・1/3以上が採用につながる高マッチング率、リモートワーク×エンジニア・デザイナー専門の
 人材紹介サービス「ReworkerAgent」正式リリース場所からも時間からも自由な働き方を実現!
・『ReWorks(リワークス)』リモートワーク特化型転職サイトとして 3月5日 リニューアル
・副業・兼業マッチングサービス「クラウドリンクス」登録者数2万人突破
 中小企業で進む副業人材の採用、96%が継続採用を希望
・フリーランスが活用できる「最大1,000〜3,000万円・補助率50%〜75%」の
『ものづくり・商業・サービス補助金』とは?概要や条件を解説
・茨城県日立市、県外からの「テレワーク移住者」に最大151万円の助成金
・長野市、市内に移転・事業所設置し、移住することで最大550万円の支援金を支給
2022/07/26(火) 12:59:25.55ID:hxnsYVU0
>>552
すばらしい! これ以上は良くなりそうにないね
こうして見るとやはり正規表現の方がいい、仕様変更にもすぐ対応できるし
2022/07/26(火) 13:07:45.08ID:563vGs1S
ではこの話はこれで終わりです
2022/07/26(火) 13:15:56.15ID:hxnsYVU0
へ? ここで>>552が「実行速度では負けてないもんね!」つって速度勝負をしかけてきて
それならre.compileじゃぁあああって応戦してからの、やっぱ「速度じゃreは不利じゃわい」
つって、「いやいや、やはり正規表現さんの勝ちですわ、メンテナンス性では完敗ですもん」
ってお互いが歩み寄ってからの熱い握手で終幕やろうが! まあええわ次の話題もってこいや
557デフォルトの名無しさん
垢版 |
2022/07/26(火) 13:30:39.77ID:P5K5X/wN
ID:t+dBeaSp
ID:lkZCuVJ2
ID:Tcjxae6G
ID:hxnsYVU0
558デフォルトの名無しさん
垢版 |
2022/07/26(火) 16:43:34.40ID:gc9s0ohk
以上
今日の自演でした
559デフォルトの名無しさん
垢版 |
2022/07/26(火) 17:59:35.79ID:gc9s0ohk
>>492-494
秋葉で暴走した加藤は死刑完了したそうだ
2022/07/26(火) 18:59:47.50ID:aND0EYYo
python使いやすくていいわーって思ってたけど
json使ったら面倒だなと思った…
これ自分で辞書にしたり戻したりしないといけないわけ?
pickleちゃんはバイナリになるからやだ
2022/07/26(火) 19:06:35.62ID:QBs9x9BG
>>559
あの事件で大学の同級生死んじゃったよー……。執行まで長かったなー
2022/07/26(火) 19:40:58.02ID:Uy4U9BVa
まじかよ
東大近いもんな
優秀な人を亡くすのは実に惜しい
2022/07/26(火) 19:44:17.06ID:QBs9x9BG
>>562
は?東大生死んでないが?
2022/07/26(火) 19:44:58.50ID:Sr1olQPp
while True:
 わーいPython便利だなー
 あれ?このXを扱うのってめんどくさくね?
 他の言語にしよっと
 X以外がめんどくさすぎる!
2022/07/26(火) 19:57:04.85ID:hxnsYVU0
>>560
じゃあyamlちゃんは?
https://www.youtube.com/watch?v=rpbq6vXcNbM
566デフォルトの名無しさん
垢版 |
2022/07/26(火) 20:47:35.71ID:GQvz79KS
Jsonって殺人鬼だったのに。
2022/07/26(火) 21:16:10.07ID:OUnIdkcH
全損
568デフォルトの名無しさん
垢版 |
2022/07/26(火) 22:30:48.06ID:Rgm2Z23r
>>560
これってどういうこと?Pythonのオブジェクトに変換せずに何かをやりたいっていうこと?
2022/07/26(火) 23:43:27.38ID:wQrOnGuH
yamlの仕様を学ばないままcomposeやk8sを使ってる
2022/07/27(水) 03:54:50.01ID:PQGmIH2y
パスの\を/にかえなきゃいけないのが面倒すぎるんだがなんか方法ないのか?
\\にかえるのもめんどう

で調べたらRつけるだけでいいらしい……
だったら最初から\読み込めるようにしろよ!
2022/07/27(水) 09:00:44.94ID:pyuUgR41
>>560
jsとpythonでしかjson使ったことないけど、どちらも使い勝手は変わらんと思うが。
572デフォルトの名無しさん
垢版 |
2022/07/27(水) 10:05:16.97ID:elZrgoJK
>>560
があほすぎなすれ
573デフォルトの名無しさん
垢版 |
2022/07/27(水) 13:08:32.87ID:B7vnAx8k
>>570
その文句は、エスケープ文字を勉強したほうしたほうがいい
あといちいち手動でreplaceするよりPathlib使った方がかかいもよ

https://pystyle.info/python-pathlib/
2022/07/27(水) 13:27:46.89ID:aU47T/gU
パースするだけなのにそんなに面倒か?
2022/07/27(水) 13:28:56.39ID:aU47T/gU
すまん、jsonの話な
576デフォルトの名無しさん
垢版 |
2022/07/27(水) 15:26:57.56ID:B7vnAx8k
PythonでJSONの取り扱いは、JS以外の他の言語と比べたらめちゃくちゃ楽な方だと思うけどな。ほとんどJSと変わらない。
CはともかくC++だって全然簡単じゃないからねえ。CだとPythonの5倍、C++でも2.5倍ぐらいの記述量になる気がする。
577デフォルトの名無しさん
垢版 |
2022/07/27(水) 16:26:23.72ID:G6wuTkcd
何年前の話よ
https://github.com/nlohmann/json
2022/07/27(水) 16:52:22.09ID:aU47T/gU
jsonはpythonのビルトインパーサーでなんとかなるな
使えないhtmlパーサーとは大違い
2022/07/27(水) 19:30:05.71ID:xJ8anoa4
python に限った話じゃないけどなぜか html パーサーっこれって言う奴ないよね
2022/07/27(水) 20:20:11.22ID:aU47T/gU
>>579
htmlが、sgml/xmlを簡略化した派生で
文法があまりに自由でゆるゆるだったから、
もともとデータ処理には向いていなかったということなんだと思うよ
2022/07/27(水) 20:28:14.33ID:xJ8anoa4
>>580
そうは言っても html で公開されてるデータもあるんだからねぇ
2022/07/27(水) 20:42:25.68ID:aU47T/gU
>>581
現状では、外部モジュールに頼るか、力づくでなんとかするかしかないものねw

最近はhtmlに組み込まれたjsonデータ形式(json-ld)が多くなって、
データを探るくらいならあまり悩まずにすむので助かってるわ
583デフォルトの名無しさん
垢版 |
2022/07/27(水) 22:42:50.60ID:+MHO4Y86
君ら二人が思ってるほどそういう需要がないんじゃない
結局やりたいのはスクレイピングでしょ
584デフォルトの名無しさん
垢版 |
2022/07/27(水) 23:00:58.07ID:+MHO4Y86
スクレイピングできるようなライブラリを標準ライブラリに組み込んで欲しくはないよね
html.parseは確かにシンプルだとは思うけど、どこまでってなると難しい
html自体がかなり緩いから、サービス依存とか流行に依存してしまうんだよね
まぁ、Beautiful Soupもあるしいいじゃないすか
2022/07/28(木) 00:22:28.49ID:nqLen+JC
yieldって初めて見た

ジェネレーター関数?を作るときに使うのか
正直使い道がわからんな
ジェネレーターとかイテレーターとかはだいたいわかるけど
2022/07/28(木) 05:13:59.70ID:mvZe9xm4
>>585
> ジェネレーターとかイテレーターとかはだいたいわかるけど
わかってたらyieldの使いどころがわからんとかないと思うが...
2022/07/28(木) 05:40:55.75ID:8YG1K1uV
>>586
こういうやつって結局何聞かれても説明できないやつだよな
2022/07/28(木) 05:45:38.18ID:yBjc1Rgi
国債取引してればyieldなんてしょっちゅう見るけどな
589デフォルトの名無しさん
垢版 |
2022/07/28(木) 16:20:58.93ID:m8z1CQHY
教えてください。
Wordpressに記事投稿する際に閲覧パスワードをつけたい場合
‘status’=‘publish’,
‘contents’=‘記事本文’,,
‘password’=‘閲覧パスワード,
‘tag’=1
….
と指定しています。
投稿自体は成功しているのですがパスワード付きの記事になりません。
どなたか解決策をお願いします。
590デフォルトの名無しさん
垢版 |
2022/07/28(木) 20:16:12.08ID:Hv8PyQaz
>>585
馬鹿には無理
591デフォルトの名無しさん
垢版 |
2022/07/28(木) 22:51:57.42ID:9hZjKw0t
>>585
リスト返すよりよりジェネレータ―の方がコスト低いからでは解決しない質問?
2022/07/28(木) 22:58:58.42ID:cRsx7yDk
リスト作成のコストと比べても意味ないやろ
yield使わずにジェネレーターを作ればありがたみが分かる
2022/07/29(金) 00:22:32.77ID:fEBZH37g
リストをfilter()使ってlambda式ではなく外部関数を呼び出して抽出する場合、外部関数に追加の引数を渡すことってできますか?
リストの要素に加えてさらに判定用の引数を与えて外部関数で処理させたいです
2022/07/29(金) 01:28:35.66ID:8gcFFgPp
>>593
部分適用した関数を用意すればできるよ
partialとか関数を返す関数を書くとかで
リストを[(要素, 追加引数)]の形にzipするのでもてきる

ただlambda使って外部関数に引数渡すのが一番よく使われてる印象
2022/07/29(金) 02:05:51.08ID:sW6reep3
>>593
functools. partial
2022/07/29(金) 02:28:02.24ID:fEBZH37g
>>594,595
functools.partialもlmbdaもできました。ありがとうございます。
確かにlambdaのほうがすぐに書けるのと、パッと見て分かりやすいかもですね
2022/07/29(金) 16:36:15.82ID:0LOpWdsN
ある変数に対してifまたはelseで値を代入するとき「未定義の可能性があります」という警告が出てしまいます。
この警告は無視して構わないのでしょうか?
実際はifかelseが必ず実行されるため、未定義になることは無いと思います。
2022/07/29(金) 18:15:50.48ID:APedJzV4
両方でちゃんと定義があれば問題ないんじゃないの
599デフォルトの名無しさん
垢版 |
2022/07/29(金) 18:30:32.97ID:XaB7Y5c2
>>597
その部分のコード書いてみ
たぶん未定義になるパターンがある
2022/07/29(金) 19:07:07.88ID:GzwVbssN
ifとelse両方で定義してあれば未定義にはならんと思うけどな
定義してないから警告出るのかね
2022/07/29(金) 19:10:09.40ID:WG/TpH2M
>>597
無視しない方がいい
2022/07/29(金) 19:58:02.11ID:47SIIXKm
て言うか未定義の「可能性」なんて普通の処理系ではでないだろ
なんかツール使ってるならそのツールの名前書きなよ
2022/07/29(金) 20:45:46.18ID:IOBifLpO
どこかに未定義ルート有るんだ
そこらへんを探すのが楽しい
2022/07/29(金) 21:51:50.81ID:a1Tgek7B
Ruby では、条件分岐で初期化されるはずの変数が、
初期化されなかった場合に、nil・未定義になる

if false
n = 1
end

p n #=> nil
2022/07/29(金) 23:03:00.11ID:jDexz6tX
翔泳社のスラスラわかるPythonを読み終えて、
次にソフトバンクのPython完全入門を買おうか迷ってるんですが、
どなたか読んだ方いましたら感想を教えて下さい
よろしくお願いします
2022/07/30(土) 02:27:49.30ID:z4LSWTQO
入門書は1冊で充分なのでは?
2022/07/30(土) 02:27:58.30ID:z4LSWTQO
入門書は1冊で充分なのでは?
2022/07/30(土) 02:34:45.44ID:f1hyBgWY
レスは1回で充分なのでは?
609デフォルトの名無しさん
垢版 |
2022/07/30(土) 09:23:55.07ID:azT7AVAA
webアプリ作って内部サーバーから使ってみよう、みたいな本読んでるんだが

コマンドプロンプトに
python -m http.server --cgi 8080
と書いてwebサーバー立ち上げて
ブラウザで
htttp://localhost:8080
開くまではできたんだ

ここから
htttp://localhost:8080/開きたいwebアプリ.py
へ移動しても、中身がテキストとして表示されるだけでwebアプリとしては機能しない
これはなにか手順間違えてるかな?

pythonコード自体は以下
https://techiedelight.com/compiler/?MN5F
610デフォルトの名無しさん
垢版 |
2022/07/30(土) 09:27:36.20ID:paa5jUiA
●未定義ルートがある
●typoを見落とし
611デフォルトの名無しさん
垢版 |
2022/07/30(土) 09:28:23.25ID:paa5jUiA
>>606-607
レスは一回で充分
612デフォルトの名無しさん
垢版 |
2022/07/30(土) 09:29:27.96ID:paa5jUiA
>>609
flask使え
2022/07/30(土) 13:25:48.25ID:OlgNXvPr
呼ばれたクラスのメソッド実行やインスタンスの参照はできますでしょうか?
RubyのBinding_of_caller gemのようなことをやりたいです。
2022/07/30(土) 15:23:09.66ID:8gKCOMRQ
>>609
例えば、Ruby では、

コンソールで、ウェブサーバー・WEBrick を起動する
ruby -run -e httpd . -p 8080

ブラウザで、
http://localhost:8080/a.html
とすると、HTML が表示される

例えば、これが、
http://localhost:8080/a.csv

a.csv, a.txt など、ブラウザが解釈できない拡張子の場合は、ダウンロードされる
2022/07/30(土) 15:41:57.89ID:cxvuT0Ap
>>609
cgi_directoriesで定義されてるディレクトリの中にあるソースコードじゃないとじっこうできないかも

>>614
csvじゃなくてcgiの話な、チンカス
2022/07/30(土) 15:55:32.29ID:lN6AqJ/F
>>609
/cgi-binに配置して
localhost:8080/cgi-bin/xxx.pyでアクセス
2022/07/30(土) 15:56:01.53ID:lN6AqJ/F
あ、被ったね
2022/07/30(土) 16:15:20.28ID:t64/Q8Lh
14分差でかぶるとかすごいな
619605
垢版 |
2022/07/30(土) 17:33:25.97ID:opcLftHA
レスありがとうございます

実は最初にソフトバンクの本を買おうと思ったのですが、アマゾンレビューを見たら
少しわかりにくい箇所もある、という感想があったのでワンクッション入れました

今となっては独習Pythonなどの中級書に進んだ方がいいですか?
2022/07/30(土) 17:49:27.02ID:6SJJiflx
手段が目的になってるパターン
621デフォルトの名無しさん
垢版 |
2022/07/30(土) 19:25:46.15ID:EI1U6qjF
民明書房の「結局あんたはpythonで何がしたいの?」とか読むといい
622605
垢版 |
2022/07/31(日) 08:22:18.53ID:V2xTXw/0
辛口ですね
2022/07/31(日) 08:43:12.47ID:bF6WKikK
bool([])がFalseなのに
all([])がTrueになる理屈を教えてください
2022/07/31(日) 08:56:05.73ID:IhfjCb0y
イテラブルの要素の探索中にFalseでリターンされなければTrueをリターンされるようにallが実装されてるから
https://github.com/satwikkansal/wtfpython#-all-true-ation-

設計思想的な話しなら分からん
2022/07/31(日) 09:01:11.39ID:qkw0CgkT
数学的にそれが自然
Wikipediaの論理包含とかVacuous truthを読め
626デフォルトの名無しさん
垢版 |
2022/07/31(日) 09:35:16.42ID:qvc5fIgv
test
627デフォルトの名無しさん
垢版 |
2022/07/31(日) 09:36:51.24ID:qvc5fIgv
r = True
for e in S:
r = r and e
return r

S が空の場合,for文の中は1度も実行されない.
返されるのは,rの初期値であるTrue
2022/07/31(日) 09:37:12.57ID:bF6WKikK
>>624
理屈はわかりました
その実装にした人を小一時間問い詰めたい気分でいっぱいです
all([])の結果にTrueを求めるユーザーが世の中に一人でもいるのでしょうか…

>>625
数学はよくわからんのですごめんなさい
629デフォルトの名無しさん
垢版 |
2022/07/31(日) 09:39:03.02ID:qvc5fIgv
似たような例として,Sの要素の和を計算することを考える.

r = 0
for e in S:
 r = r + e
return r

Sが空の場合,rの初期値である0が返される.
630デフォルトの名無しさん
垢版 |
2022/07/31(日) 09:45:32.68ID:qvc5fIgv
似たような例として,Sの要素の積を計算することを考える.

r = 1
for e in S:
 r = r * e
return r

S が空の場合,返されるのはrの初期値である1
631デフォルトの名無しさん
垢版 |
2022/07/31(日) 09:48:34.65ID:qvc5fIgv
sum, prodという関数がPythonにあるのならば,

sum([]) == 0

とするのが自然だし,

prod([]) == 1

とするのが自然.

prodのほうは不自然に感じる人がいるかもしれないが,sumが自然なのと同じ理由でprodも自然.
632デフォルトの名無しさん
垢版 |
2022/07/31(日) 10:26:40.61ID:qvc5fIgv
0! := 1と定義するのも同じ理由.
633デフォルトの名無しさん
垢版 |
2022/07/31(日) 12:12:56.03ID:eQtf7hMi
anyとかallは評価できるものがある場合にのみ使うべきだと思うんだ。空打ちしたら「何だこりゃ」ってなる
つまり
all([]) ではなくall([''])と使いたい。これなら正しく(評価がなされて)falseが返る
つかall([]) ってどういう状況よ
2022/07/31(日) 12:23:51.14ID:1z9jykhy
リテラルを渡すわけじゃないだろ
2022/07/31(日) 12:55:33.13ID:VBdofYjo
論理包含、Vacuous truthを読めと言ってる人は理由を知っているだけで理解できていない
636デフォルトの名無しさん
垢版 |
2022/07/31(日) 13:14:04.77ID:aNbLKyix
>>635
言葉足らずは役立たず
637デフォルトの名無しさん
垢版 |
2022/07/31(日) 13:25:03.81ID:qvc5fIgv
any([]) == False
all([]) == True

こうだと何が問題になるのかが分からない.
638デフォルトの名無しさん
垢版 |
2022/07/31(日) 13:32:01.26ID:qvc5fIgv
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)は偽である.
2022/07/31(日) 14:16:45.61ID:WKv/EkLm
お勉強スレで403がでる
2022/07/31(日) 14:23:06.73ID:VBdofYjo
allとanyのあるある言いたい TrueとFalseのあるある早く言いたい
2022/07/31(日) 15:56:07.05ID:KzJjN0dA
聞いてねえ黙っとけマザコン男
2022/07/31(日) 16:39:23.51ID:6uU1oN4W
突然マザコンという単語が出てきた
普通の人はすぐに思い浮かぶ単語ではない
つまり、自分がそうだとよく言われたから頭に浮かびやすいと自己紹介しているわけだ
2022/07/31(日) 17:10:58.62ID:a1qLKfui
vscでインタープリターが設定出来ずエラーになる
なんでぇ…検索しても出てこない…
2022/07/31(日) 17:19:39.16ID:WKv/EkLm
vscスレあるからそっちで聞いたら?
2022/07/31(日) 17:40:03.84ID:VBdofYjo
>>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の取って付けた数式見ても分かんない、でもコードで書くとあら不思議一目瞭然
2022/07/31(日) 18:21:17.32ID:vZudoVRF
全く疑問に答えてなくて草生えるwwwww
2022/07/31(日) 18:30:32.80ID:IhfjCb0y
>>645
空リストに分解するのはいいね
ただanyはFalse側で示さないといけないな
2022/07/31(日) 18:42:16.99ID:1IXOln4s
1. [True, True]
2. [True, False]
3. [False, False]
4. []

この4つから
1種類だけ処理したい場合と2種類だけ処理したい場合を
all, any, notで各listにつき1回走査するだけで書けるかどうか
もしall([])がFalseだとしたらどうか
2022/07/31(日) 19:03:02.60ID:VBdofYjo
>>647
配列例を一緒にしようとしたんだけど、こっちの方が分かりやすいか

any([0,0,0]) -> False
any([0,0,0]+[]) -> False
any([0,0,0]) or any([]) -> False
よって、any([]) -> False
2022/07/31(日) 19:10:05.63ID:SPHl3eVE
こう決めてるからといって準備してあるものから答えを持ってくるのではない
あくまでデジタル計算の答えがそうなっているだけ
それをわかってないみたいね
2022/07/31(日) 20:42:04.88ID:nQONknSe
ID:VBdofYjo
ルビーガイジと別のベクトルで頭おかしいね
2022/07/31(日) 22:11:23.00ID:NZWDJWM/
単なる慣習でしかなくて合理的な理由はない
プログラミングではall([])がFalseだったほうが楽になるケースの方が圧倒的に多い

残念ながらempty listだけ別途チェックするのが無難
2022/07/31(日) 22:46:03.58ID:MJo3DzqX
all()は論理積のロジックなので初期値True
any()は論理和のロジックなので初期値False
そうしないと成り立たない
654デフォルトの名無しさん
垢版 |
2022/07/31(日) 23:10:20.11ID:Q3Sy7AQw
ドキュメントのallの説明で、(or if the iterable is empty)が加えられたのは2009年か2010年ぐらいから
2022/07/31(日) 23:18:11.45ID:CM+nxrXh
>>653
それ使う側の視点じゃなくて
内部実装上の都合でしょ?
2022/07/31(日) 23:50:52.02ID:MJo3DzqX
>>655
これ以上に自然な定義はあるのか?
引数が空の時に余計な評価を挟む方がよっぽど不自然だと思うが
2022/08/01(月) 01:15:16.60ID:NO37bZGb
>>656
実装の都合上は自然かもね
使う側の視点からは全くもって自然じゃないよ
2022/08/01(月) 01:55:03.33ID:wljefKG6
>>657
all()とany()の動作を文章にして書いてみたら分かる
関数の仕様自体が気に入らないなら自分で書くしかない
2022/08/01(月) 02:13:06.07ID:4h+jHRsn
>>652
> プログラミングではall([])がFalseだったほうが楽になるケースの方が圧倒的に多い
具体的にコードで示して欲しい
2022/08/01(月) 04:29:53.53ID:rSGUMJSi
まあ5×0=0で5^0=1なのも実装した人にとって自然なだけだし言いたいことはわかる
2022/08/01(月) 09:45:47.74ID:hJhRRxUQ
やっとバカにも理解できたようですが、>>660を見る限り理解できていませんw 残念
2022/08/01(月) 16:21:23.81ID:Vk1tQ6YT
Eric Matthesの「python crash course」(和名:最短コースでゼロからしっかり学ぶpython入門)を完了して次にデータ解析をやりたいんです
そこで
オレイリーの「pythonによるデータ分析入門」を読んだのですがまだ私にはレベルが高いようです
橋渡しになるレベルの本はありませんでしょうか?
2022/08/01(月) 17:14:07.64ID:WOhHaybL
>>662
『Pythonによるあたらしいデータ分析の教科書』辺りで
Jupyter Notebookとか分析の基本覚えてから
『Python実践データ分析100本ノック』でデータの前処理とかを本格的に勉強してから
オライリー本読んだ方がええかもね
2022/08/01(月) 18:05:15.09ID:BgE8bCyg
型ヒント(num: int = 1など)って普通に使われてますか?
私も常に使った方がいいですか?
2022/08/01(月) 20:36:49.60ID:Vk1tQ6YT
>>663
ありがとうございます
ポチりました
2022/08/01(月) 23:46:48.65ID:It4OEKpF
使われてると思うし使えた方がいい
PyCharmとかVSCodeで書いてると型を判断してくれるので書きやすくなるしミスも判明しやすくなる
2022/08/02(火) 00:20:43.20ID:R2oSGNsV
>>653
配列の全ての要素が5以上かをチェックするcheck関数を作りました
def check(lst):
return all(i >= 5 for i in lst)
空リストが入力された場合Falseを返したいのですが
論理積のロジックなのでFalseを返すと成り立たなくなります
空リストのチェックはどうすれば良いでしょうか
668デフォルトの名無しさん
垢版 |
2022/08/02(火) 03:57:40.09ID:AJvhpMFc
def check(l):
__if l:
____return all(map(lambda i: i>5, l))
__else:
____return False

すべて5以上か みたいな関数名にして使う
checkはダメ。論外
2022/08/02(火) 04:03:59.45ID:KlfR+zxP
>>667
return bool(lst) and all(i >= 5 for i in lst)
2022/08/02(火) 07:10:05.89ID:R2oSGNsV
>>668
>>669
これはいけません 論理積のロジックなので空リストが入力された場合はTrueを返す必要があります
Vacuous truthを知らないのですか? 論外です
2022/08/02(火) 07:19:05.10ID:Qu9LGAtZ
空listはfalseなのでbool()は不要
もしくは lst or [0] とすれば空listチェック不要
2022/08/02(火) 08:36:47.08ID:KlfR+zxP
>>670
ああそういうことか
667の質問の意味が今わかった
変な質問だなと思いながら適当に答えちゃった
673デフォルトの名無しさん
垢版 |
2022/08/02(火) 08:45:25.83ID:UYHD5f/y
>>670
空のリストでtrue返したいならall([i for i in lst if i>5])で返るが
2022/08/02(火) 08:56:18.05ID:KlfR+zxP
>>671
bool()は不要のほうは、戻りが True,False,[]の3種類になるから個人的にいや。
lst or [0]のほうは、i >= 5 とかの場合使えなくなるからよろしくないかと。
2022/08/02(火) 08:57:08.71ID:KlfR+zxP
>>674
訂正
lst or [0]のほうは、i >= 0 とかの場合使えなくなるからよろしくないかと。
2022/08/02(火) 12:52:45.59ID:7OOUBMB7
>>668
配列じゃなくiterableだと詰むよ
2022/08/02(火) 13:36:46.22ID:R2oSGNsV
>>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ってことッスもんね 分かってるッス そこは大丈夫ッス
678デフォルトの名無しさん
垢版 |
2022/08/02(火) 13:57:06.18ID:AJvhpMFc
>>676
要件は配列の要素をチェックする関数の作成だけど。
679デフォルトの名無しさん
垢版 |
2022/08/02(火) 14:10:48.20ID:3RqJykXJ
>>677
そもそも数学的な計算がしたいとき、空のリストが来たら不自然になる って
そりゃ空のリストは数学的じゃねーんだから不自然になって当然だろ

空のリストとかいう非数学を数学化する関数を実装しろよ。それはお前の好きにしろ
680デフォルトの名無しさん
垢版 |
2022/08/02(火) 14:25:29.34ID:UYHD5f/y
そういえばBytesIOがイテレーターなのはなんでなの?
配列じゃあかんのか?
2022/08/02(火) 14:44:44.43ID:PAwGL3nC
>>677
全然意味わからん
空リストを弾きたいならcheckの中で例外発生させるなりすればいいだけじゃねーの?
682デフォルトの名無しさん
垢版 |
2022/08/02(火) 14:58:23.12ID:4vAniN45
>>681
こいつはネチョネチョ言葉遊びしたいだけのゴミ野郎だから無視でいいよ
上の方でも暴れとる。rubyキチガイと同列の泥人形
2022/08/02(火) 15:02:37.40ID:3/XF33uC
どうせ発生しないような例外的なやつの対応ばかり考えている無能
2022/08/02(火) 15:21:43.17ID:GXJqSimc
>>677
100%同意する
2022/08/02(火) 15:24:08.55ID:uvL1JwEu
>>678
all([]) == Trueはデメリットが大きい例として>>667が書かれてるという文脈を理解してから書いてね
686デフォルトの名無しさん
垢版 |
2022/08/02(火) 15:36:16.40ID:4vAniN45
>>684-685
バレてるぞ恥晒し
687デフォルトの名無しさん
垢版 |
2022/08/02(火) 15:44:30.79ID:aYPyq7OS
all([]) == True
any([]) == False

であると困る例を教えてください.
2022/08/02(火) 17:37:12.67ID:PAwGL3nC
>>685
それ all([ ]) = False でも何も解決しないだろw
True / False しか返せないのに空リストかどうかの情報欲しいなら別の方法で返すしかない
2022/08/02(火) 19:22:29.51ID:R2oSGNsV
実は空リストの場合Noneを返すという手を考えたッスけど 数学的完全性を保つことはできなかったッス
しかしたった今思いついたッス 空リストの場合は2を返せばいいッス 2はTrueッス
我ながら自分の才能が恐ろしいッス
2022/08/02(火) 19:46:15.70ID:R2oSGNsV
>>689
訂正するッス 2じゃなくて1.0を返せばいいッス 空リストの場合は1.0を返すッス
1.0なら check(a+b+c) == (check(a) and check(b) and check(c)) が成立するッス
2022/08/02(火) 20:00:27.12ID:rqWYIp9A
それで最初に言ってた
> 空リストが入力された場合Falseを返したいのですが
これは満たせるの?
2022/08/02(火) 20:07:03.39ID:R2oSGNsV
>>691
・・・満たせないッスね 判別ができるようになるだけで その判別方法もrepr()=='True'とかで煩雑 だめッスね
2022/08/02(火) 20:21:40.29ID:KlfR+zxP
>>690
1.0が返ってくると
if check(lst) == 1.0: と if check(lst) == True: のどちらもTrueになるけど
if type(check(lst)) == float: で判定するの?
副作用は少ないけど美しくない
1.0じゃなくて1のほうがさらに副作用なくていいとおもうけどね
2022/08/02(火) 20:44:31.40ID:H9/akC1Y
元になってる数学の考え方自体の限界
使う側がバグらないよう注意するしかない

python特有の問題じゃないのが救い
2022/08/02(火) 20:48:40.69ID:R2oSGNsV
>>693
美しくないッスね そもそも空リストチェックは言うほど不便じゃないッスよね
if lst and check(lst): ってするだけッスもんね
オイラの中で結論が出たッス やはりallにならってcheck関数も空リストのときはTrueを返すべきッス
必要に応じて空リストチェック( lst and check(lst) )をする こんだけッス シンプルで美しいッス
ビギナーズトラップかもしれないけどそんなの知らないッス
2022/08/02(火) 21:07:06.53ID:rqWYIp9A
初心者すぎて、これでいいのか分からんけど
boolとandあたりをオーバーライドしたクラスを返却するとか?
空リストかどうかの情報まで持たせたクラス

って、最初の仕様を捻じ曲げていいのか・・・
697デフォルトの名無しさん
垢版 |
2022/08/02(火) 22:23:57.41ID:XEhMcRRQ
超初心者なんですが、
社内LANの共有ストレージ内のExcelファイルを操作して作業自動化をしたいと思っています。
社用PCへのインストール申請が面倒なのでGoogle Colabでやってみたら、ストレージ内のファイルが読めないということで渋々インストール申請しようとしているところです。
JupyterLab Desktopで社内LANの共有ストレージのファイルは操作できますか?
環境構築から躓いてます…
2022/08/02(火) 23:17:59.15ID:Z18rEo5s
浮動小数点数を==比較すると言うとヒステリックな反応する奴いるよな
699664
垢版 |
2022/08/03(水) 00:27:23.50ID:Ce9Xia0b
>>666
レスが遅くなってしまってすいません

ありがとうございました
なるべく使っていこうと思います
700デフォルトの名無しさん
垢版 |
2022/08/03(水) 02:48:22.00ID:HUfXY4jl
>>697
インストール申請いる会社だとpythonは厳しい
外部ライブラリをいくつもインストールすることになるから、そのたびに申請申請…
2022/08/03(水) 03:03:39.79ID:OfDGteUO
自分自身が会社にアンインストールされちゃうよなw
2022/08/03(水) 06:34:50.12ID:NNzHRQEi
>>697
環境はWindowsだと思うが元からあるExcel VBA、VBScript、PowerShellあたりでできないか考えた方がいいかと
2022/08/03(水) 06:44:43.69ID:SAIeW7L3
>>697
インストール申請云々の縛りあるなら普通にVBAでやれよ
2022/08/03(水) 06:55:06.47ID:6v79gKr9
インストール申請あるところならVBA/VBS禁止とかありそうだけどな
2022/08/03(水) 09:06:23.71ID:7qOk9bFG
大半のライブラリはインストールじゃなくダウンロード
706デフォルトの名無しさん
垢版 |
2022/08/03(水) 09:20:26.19ID:6HJ5FZxO
P ⇒ QはPが偽のとき真です。
2022/08/03(水) 12:49:46.77ID:s6+jOjkc
pythonのパッケージ管理ってどうやってる?
初心者だから本とかウェブ記事とか読みながらそのまま適当にpipしてたんだけど
このままだとめんどくさいことになりそうな気がしてきた
2022/08/03(水) 13:06:03.07ID:jXa2B14I
poetryで作った環境にインストールしてグローバルに使いたい奴だけリンク張ってる
poetry使ってるのはライブラリ開発するのに使ってるついで
環境分けたいだけならvenvそのまま使えばいい
2022/08/04(木) 03:46:24.05ID:BBoT8RMz
プログラミングなんて大してSSDの容量使わねーだろ、と思ってたらanacondaが10GBぐらい使ってきて泣いた
710デフォルトの名無しさん
垢版 |
2022/08/06(土) 09:34:49.25ID:80xJcjdY
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
2022/08/06(土) 10:40:10.54ID:XSn5nlI0
nuitkaを使う
712デフォルトの名無しさん
垢版 |
2022/08/06(土) 15:50:19.67ID:eSBCWCwI
>>709
Anacondaはぶっ太い糞
713デフォルトの名無しさん
垢版 |
2022/08/06(土) 15:51:47.59ID:eSBCWCwI
>>710
opencv-python-headless
714デフォルトの名無しさん
垢版 |
2022/08/06(土) 16:30:43.76ID:80xJcjdY
>>710 レスありがとうございます。
nuitka、使ってみました。やはりopencv周りは色々問題があるようです。うまく動作しませんでした。

>>713 レスありがとうございます。
opencv-python の代わりに opencv-python-headless を使ってみましたが、全く同じエラーでした。

やはり opencv は難しいのでしょうか…
2022/08/06(土) 17:26:48.46ID:PSjXEZOE
GoogleはGoなんて作る暇があったらPythonコンパイラを作るべきだった
2022/08/06(土) 19:16:19.27ID:kORMtiG2
pycodestyleの機能って便利ですね
2022/08/06(土) 19:22:52.36ID:Cy8sVH5p
お気づきになられましたか
2022/08/06(土) 19:54:32.19ID:Tb2OU3Zj
impor requests
ってやると
Library stubs not installed for "requests" (or incompatible with python 3.9)
とでてくるんだが
リクエスト "用のライブラリスタブがインストールされていない(またはpython 3.9と非互換)。

よくわからん
719710
垢版 |
2022/08/06(土) 20:04:04.35ID:80xJcjdY
結局、ネット上で実績ありそうな、

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

で実行ファイルからエラーが消えたようです。
アドバイスくださった方、どうもありがとうございました。

バージョン管理って大変ですね。
2022/08/06(土) 20:29:16.15ID:7+clXBwJ
>>718
そのまんまじゃねーか
2022/08/06(土) 20:49:02.89ID:XxOEvUoc
pytorch入れた時の悪夢が蘇って来た。orz
2022/08/06(土) 21:42:16.91ID:PGZhucx9
>>718
何使ってるか知らんがmypyが有効になってるんじゃないの?
2022/08/06(土) 21:47:15.58ID:PQ7gBqNg
ディレクトリがcase-sensitiveかどうか調べる方法ありますか?
環境はWindows10です
やり方がわからないので対象のディレクトリ内にcase-sensitiveなディレクトリ名やファイル名が存在するか調べることでなんとかしようとしたけど
pathlibのglobではcase-sensitiveなディレクトリ名やファイル名では読み抜け発生
os.walkならいけるかもと思い実験中
2022/08/06(土) 22:42:37.85ID:IJoLUcj8
>>723
abc でディレクトリ作って ABC で存在確認するとかかな
恐ろしいことにOSXではパス毎にCase Sensitiveかどうかを設定出来るらしい...
https://stackoverflow.com/questions/7870041/check-if-file-system-is-case-insensitive-in-python
2022/08/06(土) 23:10:23.53ID:PQ7gBqNg
>>724
最近のWindowsもフォルダ毎にCase Sensitiveかどうかを設定出来るんですよ
対象のパスの下のサブディレクトリも個別に調べなきゃいけない
2022/08/07(日) 01:53:51.53ID:HkpslvdA
pylintというのを知った
俺の作ったコード
pylintしたら4点だった
きびしすぎん?
2022/08/07(日) 04:45:52.49ID:qW86g0dh
つ Flake8
2022/08/07(日) 09:31:21.46ID:7cQO/w5k
pip installでインストールしたモジュールがどのフォルダ(ディレクトリ)に
入ってるか確認する方法ってありませんか?
エクスプローラーで見てもありません…
2022/08/07(日) 09:51:04.57ID:qW86g0dh
pip show パッケージ名
2022/08/07(日) 09:51:59.31ID:wF6HChc5
隠しファイル、隠しフォルダー、および隠しドライブを表示する
731デフォルトの名無しさん
垢版 |
2022/08/07(日) 11:38:08.36ID:H7AA9Gyj
>>728
__file__ でわかる。
例えばopencvなら
>import cv2
>print(cv2.__file__)
732728
垢版 |
2022/08/07(日) 15:47:17.43ID:7cQO/w5k
答えてくれた方、ありがとうございました

pip show requests を実行したらパスが表示されました
pythonの処理系があるフォルダの近くにあるみたいなんですが、
VSCodeのどのフォルダにいる状態でインストールしても、
インストールされる場所は同じなんでしょうか?
733デフォルトの名無しさん
垢版 |
2022/08/07(日) 16:25:21.48ID:qancDJyG
class A(text:str, value:int)
class B(A)

VSCodeだとマウスオーバーで引数が確認できますが
上記のような継承があるとき
b = B()
マウスオーバーでAの引数を確認したいのですが、どうすればいいですか?
2022/08/07(日) 16:29:37.57ID:wx1/uok7
今のデフォルトはpylanceだっけか
2022/08/07(日) 16:31:40.47ID:Iy538lTc
>>733
>class A(text:str, value:int)

今ってこんな定義方法があるの?
736デフォルトの名無しさん
垢版 |
2022/08/07(日) 17:18:29.82ID:PNBshUzP
__init__か?
クラスBでオーバーライドしてなきゃAの引数が表示される
2022/08/07(日) 18:29:09.72ID:J7BfdoVn
pipよりもpypl
738デフォルトの名無しさん
垢版 |
2022/08/07(日) 18:37:37.64ID:qancDJyG
素で間違えた
いまこうです
Bじゃなくて継承元のAの引数が見たいです
https://imgur.com/PkQnHo3.png

vscodeはpylanceですね
2022/08/07(日) 18:41:34.68ID:k9D8AutH
え・・・・・
2022/08/07(日) 18:50:58.51ID:ZjeWku4d
Bの__init__を消そう
741デフォルトの名無しさん
垢版 |
2022/08/07(日) 19:08:00.18ID:qancDJyG
>>740
おーありがとう
そういうことk
2022/08/07(日) 21:07:17.99ID:uhtWaMBb
>>710
specファイルに、

pathex=['C:\........\site-packages\\cv2']
(パスは環境次第)
とcv2のフルパス入れてますか?
2022/08/08(月) 10:00:21.56ID:RWKMU7OX
numpy配列をopencvで扱う画像にする時って
cv2.imdecodeとnumpy.reshapeの二通りのやり方があるみたいだけどどう使い分けるんです?
744毛の生えたブリーフ
垢版 |
2022/08/08(月) 10:56:42.38ID:nUMoT9LF
2003年 当時荒れていたdelphiスレッドの緊急避難先で作った「くだすれDelphi 」

ヘッダーを各言語用に改変してPythonのスレッドが出来ていたのか・・・・
あれから20年近く・・・俺も還暦になるわけだ。

プログラム板にきたのは13年ぶり。 いつのまにか2chが5chになって
ひろゆきがメジャーになってた。
745デフォルトの名無しさん
垢版 |
2022/08/08(月) 10:57:33.77ID:nUMoT9LF
いやん誤爆してごめんくさい
746デフォルトの名無しさん
垢版 |
2022/08/08(月) 11:17:06.38ID:AUtZ1mrn
>>742
はい。specファイルの pathx に入力する方法も試したのですが、同じエラーです。

その後色々組み合わせをためしているのですが、3.10系では成功したことがありません。
3.8, 3.9系では opencv のバージョン次第で正常に動作します。

あと>>711 が教えてくださった nuitka ですが、アンチウィルスが過剰に反応するので諦めました。
2022/08/08(月) 16:30:56.98ID:ej7caoJh
ショートサーキットについてお聞きしたいです

本によるとandやorの両側には関数も取ることができ、
1 < 2 and print('right')
1 > 2 or print('right')
をインタラクティブシェルで実行すると
それぞれ'right'が表示されるみたいですが、釈然としません

そういうものだと覚えておくしかないでしょうか?
2022/08/08(月) 16:37:01.79ID:GNjKAHJ2
なにがわからないの?
x and y === if x then y else x
x or y === if x then x else y
2022/08/08(月) 17:05:06.74ID:Rerux/uK
>>747
それ
True and print('right')
False or print('right')
と同じで両方共に print('right') の値を見ないと全体の値は確定しないから 'right' が表示されるのは当たり前
1 > 2 and print('right')
ってやればどうなる?
2022/08/08(月) 17:15:18.30ID:w9crSB+N
andは左側が真の場合、右側を評価する
andは左側が偽の場合、右側を評価しない
orは左側が真の場合、右側を評価しない
orは左側が偽の場合、右側を評価する
左側だけで真か偽か判明してる場合は右側を評価しない
2022/08/08(月) 18:30:45.48ID:VXkV51Mv
>>746
そうですね。書いてありましたね。
あとやったとすれば、
a.datas += [('習済みデータ.xml','.\\習済みデータ.xml', 'DATA'),]
※学習済みデータは「haarcascade_frontalface_default.xml」等
を記述したことと、1つのファイルにしたときに、Temporaryの実行パスを取得を工夫したことくらい…

あ、できたファイルを実行時にウィルスとして検知されるので、
pyinstallerの中のファイルの再コンパイルも必要です。
752747
垢版 |
2022/08/08(月) 19:28:04.38ID:ej7caoJh
>>748-750
ありがとうございます

すいません、聞き方が悪かったです
ショートサーキットの機構については分かります
bool型を返すわけではないprint()関数が右端に「使える」ことが不可解です
print()は確かNoneを返す関数だったはず
2022/08/08(月) 19:40:14.54ID:Rerux/uK
>>752
None を bool として評価すると False になる
754デフォルトの名無しさん
垢版 |
2022/08/08(月) 19:41:18.38ID:wsYAfPSE
>>752
NoneはFalse
bool()で非ブール型もブールに変換した上で解釈される
2022/08/08(月) 20:06:39.11ID:UzajzKaJ
右辺はboolとしてなんて評価されません
適当なことを言うな
https://wandbox.org/permlink/gk6gdiVzpzvoPWfI
2022/08/08(月) 20:15:13.65ID:EDIALeRU
>>755
評価時に__bool__が呼ばれます。if とかで使うと出力される。
2022/08/08(月) 20:33:20.93ID:EDIALeRU
左だとすぐに呼ばれるのに対して違うんですね理解しました
2022/08/08(月) 21:21:18.46ID:icSMNlYR
文字列の置換って
translate()とreplace()のいいとこ取りの置換方法ないの?

translate()は
"aa"→"b"
にできないんだよね?

あと
AAA = kansuu(AAA)
BBB = kansuu(BBB)
CCC = kansuu(CCC)
DDD = kansuu(DDD)
みたいな感じになってるときって
for文で入れていく以外思いつかないんだけど、他に見やすい書き方あるかな?
2022/08/08(月) 22:27:42.98ID:GdyVfCQX
>>758
文字列をmappingベースで置換したいならflashtext使うといいかも

2つ目のはAAA, BBB, CCC, DDDをコレクション(dict, list, tuple等)にする
760デフォルトの名無しさん
垢版 |
2022/08/09(火) 11:17:14.43ID:6xBGELHM
フォルダパスとファイル名とURLを書くと画像を保存してくるコードを書いたんだけど
https://techiedelight.com/compiler/?BQkA

エラーの対処はわかったんだけど、もっと別の書き方があるのではと思ってしまう
他の人はこれをどう書きますか?
2022/08/09(火) 13:25:52.34ID:804xd0t9
raw文字列
2022/08/09(火) 14:13:10.80ID:6cdAV71K
バックスラッシュの代わりに、スラッシュを使う
でもいい
2022/08/09(火) 14:27:14.68ID:reKZbZGW
raw文字列、joinpath、with_suffix
2022/08/09(火) 16:46:37.99ID:904t2Z05
pathlib一択でしょうね
2022/08/09(火) 17:34:17.89ID:VX/MyXfz
HTTPErrorやIOErrorのハンドリングもやったほうがいいよ
766デフォルトの名無しさん
垢版 |
2022/08/09(火) 17:48:28.39ID:/U/bpI39
外部からの入力系は全部
try:
req
except:
クソ
するな俺は。ユーザーは信用しない
あとダウンロード系も
try:
down
except:
失敗
する。どんなわけわからんエラーくるかしらんし
2022/08/09(火) 18:07:25.22ID:RasYFqXo
外部とのやり取りは一筋縄ではいかないからねえ
ついでにリトライも入れておきたい
requestsには頼らずビルトインで頑張るw
2022/08/09(火) 18:28:07.98ID:Lt/MnBAv
>>766
それ普通じゃね?
2022/08/09(火) 21:17:15.16ID:DxAePLof
わざわざtryしなくても例外が起きると止まるっしょ
2022/08/09(火) 22:15:13.78ID:v2aJaQdL
わざわざブレーキつけなくても事故れば止まるっしょ
2022/08/09(火) 23:22:34.01ID:xxgft6hm
>>760
Windows で、path = "C:\a\b"
みたいに、\ を使わなければならないの?

Ruby では、
path = "C:/Users/Owner/Documents/a"
みたいに、/ を使うけど
772デフォルトの名無しさん
垢版 |
2022/08/09(火) 23:25:51.13ID:KqAyUORM
>>771
前半、バックスラッシュを使わなくてもアクセスできる。
後半、スレチ。いちいち書くな。
773デフォルトの名無しさん
垢版 |
2022/08/09(火) 23:34:41.82ID:oM0lzHLp
合わせてバックストレッチ。
774747
垢版 |
2022/08/09(火) 23:46:35.97ID:8UDvOyKH
レスが遅くなってすいません
答えてくれた方ありがとうございました
ああいった書き方もあるんだと頭の片隅に留めておきます
775デフォルトの名無しさん
垢版 |
2022/08/10(水) 00:02:07.83ID:DjE5xMJT
>>769
普通はエラー処理系にraiseするからtry節置くと思うが
2022/08/10(水) 02:29:00.47ID:kx7L/9BB
なにが普通かは人による
2022/08/10(水) 03:50:21.12ID:obfeaPUq
なぜこの関数が作られたのかを考えながらプログラム書くとすっきりする
2022/08/10(水) 10:26:29.49ID:rR8/AFmc
Enum 列挙型という概念を初めて知ったが
使い所がよくわからない
2022/08/10(水) 12:53:32.14ID:vnHVeG1e
関数をローカル変数に代入するメリットって何でしょうか?
2022/08/10(水) 13:19:15.14ID:8RUvvZbB
何度も同じ計算をしないで結果だけ繰り返し使える
2022/08/10(水) 13:33:33.79ID:bGy3yklD
場合によるけど、処理前半でローカル変数に関数を代入しておくことで、処理後半の分岐が消えて見通しが良くなる可能性はあるかも。
何らかの理由でリネームしたかったとか?
2022/08/10(水) 15:00:50.94ID:vnHVeG1e
ありがとうございます
2022/08/10(水) 15:59:42.31ID:WlLD55gQ
>>779
同じコードで呼び出す関数だけ違うパターンって結構あるから
ソートとか
2022/08/10(水) 17:43:12.15ID:YLnkT8Qt
>>779
ループ内で毎回foo.bar()するよりも
ループの外でbar = foo.barして
ループ内ではbar()だけにすると微妙に速くなる
785デフォルトの名無しさん
垢版 |
2022/08/10(水) 21:48:18.68ID:5JgNVH0W
かけるかな
786デフォルトの名無しさん
垢版 |
2022/08/11(木) 07:13:22.60ID:HPSk7Pik
https://i.imgur.com/FBcOaIq.png
質問です。WindowsでColabでやってます。
1024×768のサイズの画像のみを収集したいのですが、
違うサイズの画像が入ってきます。どうすればいいですか?
2022/08/11(木) 07:56:07.13ID:X31RE6bn
>>786
設定したfiltersがcrawlに設定されていない
google_crawler.crawl(keyword='流星', filters=filters, max_num=10)
788101
垢版 |
2022/08/11(木) 09:45:20.53ID:fCiqpa8j
英語って本当にプログラムに適してるのか?
isspace()
って何かと思ったらis spaceかよ
空白ないと判別しにくいのはプログラミングにおいてどうかと思うわ
2022/08/11(木) 10:00:41.98ID:nadsErGw
キャメルケースとかスネークケース使えよ
790デフォルトの名無しさん
垢版 |
2022/08/11(木) 10:13:40.52ID:ECrQVbq4
atoi
791デフォルトの名無しさん
垢版 |
2022/08/11(木) 11:12:03.43ID:m7iYSaV1
>>788
少なくともあんたはプログラムに向いてないな
792デフォルトの名無しさん
垢版 |
2022/08/11(木) 12:26:10.60ID:fKEJQx+N
https://i.imgur.com/HJTruLr.png
>>787
ありがとうございます。早速、記入してみたのですが、
画像が収集できなくなりました!
AssertionError となりましたが、どうすればいいですか?
2022/08/11(木) 12:46:20.99ID:7cUH/Z7I
×(かける)じゃなくて x(エックス)じゃねーの?
=1024x768
てか、コードはスクショじゃなくてコピペしてくれ
794デフォルトの名無しさん
垢版 |
2022/08/11(木) 13:47:35.08ID:fKEJQx+N
>>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)
2022/08/11(木) 13:58:15.94ID:7cUH/Z7I
エラーもコピペしてくれよ...
796デフォルトの名無しさん
垢版 |
2022/08/11(木) 14:07:01.78ID:fKEJQx+N
>>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
2022/08/11(木) 15:00:05.18ID:7cUH/Z7I
>>796
バグかも...
https://github.com/hellock/icrawler/issues/107
798デフォルトの名無しさん
垢版 |
2022/08/11(木) 15:15:10.72ID:fKEJQx+N
>>797
バグですか...ありがとうございます。
他のコード、1024×768のサイズの画像のみを収集するには、
どうすればいいですか?
2022/08/11(木) 15:27:49.52ID:JwgkCgjA
めちゃ無駄だけど1024x768以外の画像は捨てちゃうぐらいしか思いつかん...
2022/08/11(木) 16:47:42.06ID:X31RE6bn
>>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))
801デフォルトの名無しさん
垢版 |
2022/08/11(木) 18:48:40.17ID:fKEJQx+N
>>800
ありがとうございます。早速、試してみましたが、
バージョン違いのためかNameError となりました。
現在、Python 3.9.12 のバージョンなのですが、
ColabでPython3.10にするにはどうすればいいですか?
2022/08/11(木) 18:56:22.30ID:X31RE6bn
エラーもコピペしてくれよ...
2022/08/11(木) 19:26:39.81ID:L6VcpDZr
バージョン違いって断定してるんだからそれでいいだろ
他の可能性を検討しようとするなよ
2022/08/11(木) 19:33:40.56ID:RPSv5K1g
そんな能力あるのになんでColabのバージョンは変えられないの?
2022/08/11(木) 19:36:46.54ID:X31RE6bn
>>801
Python 3.9.7が残っていたからicrawlerインストールして>>800実行したら
問題無くできたのでPython3.9.12でもできるハズ
Colabが悪いのではないでしょうか?
2022/08/11(木) 19:38:03.60ID:m6fa3uRQ
windowsの3.9.13でも問題ないな
ちゃんとgoogleの検索結果取得できてないか、htmlパースに使ってるbeautifulsoup4かlxmlがおかしいかかな
2022/08/11(木) 20:01:15.15ID:X31RE6bn
>>801
まさかだけどNameErrorって、NameError: name 'GoogleImageCrawler' is not defined じゃないよね?
>>800の前にfrom icrawler.builtin import GoogleImageCrawler してるよね?
808デフォルトの名無しさん
垢版 |
2022/08/11(木) 20:18:34.40ID:fKEJQx+N
>>807
ありがとうございます。早速、試してみましたが、
見事に解決しました。
>>800
改めてありがとうございます。
お陰さまで、1024×768のサイズの画像のみを収集することができるようになりました。
2022/08/11(木) 20:24:18.19ID:7cUH/Z7I
>>807
せめて>>794ぐらいは見てから書きなよ...
まあエラーのコピペ待ちでいいかと
2022/08/11(木) 20:25:02.29ID:7cUH/Z7I
>>808
えっ、まじで>>807だったの?...
2022/08/12(金) 05:55:29.63ID:vrgQH6RZ
(超初心者用)
812デフォルトの名無しさん
垢版 |
2022/08/12(金) 11:12:46.10ID:OS8SYcAO
jupyternotebookでセル内のコードが長くなるため,
defで定義した関数を同一ディレクトリ内のmy_func.pyに保存し
メインのコードmain.py 内でimportすることにしました.

my_func.pyに保存した関数内では,numpyを使っているのですが,numpyが認識されません.
main.py でnumpyをインポートしていますが,その効果をmy_func.py内に待避した関数に及ばせるためには
どうすればよいでしょうか.
813デフォルトの名無しさん
垢版 |
2022/08/12(金) 11:54:38.42ID:V16IFZ6j
my_func.pyでnumpyをインポート
2022/08/12(金) 13:39:22.16ID:f9Pn84YJ
>>813
ありがとうございます。早速、記入してみたのですが、
my_func.pyでnumpyが認識されました。
main.py内にインポートしているnumpyどうすればいいですか?
815デフォルトの名無しさん
垢版 |
2022/08/12(金) 14:10:01.68ID:AKRIAlbQ
main.pyでnumpyを使っていなければいらない
816デフォルトの名無しさん
垢版 |
2022/08/12(金) 15:01:37.64ID:P/MIlql5
そのライブラリを直接呼ぶコードがあるファイル毎にimportする。直接呼ばないなら不要

main.py
__import funcs

__funcs.test()


funcs.py
__import numpy

__def test():
____print(numpy.random.randint(0, 10))
2022/08/12(金) 15:14:18.69ID:f9Pn84YJ
>>815
>>816
ありがとうございます。早速、試してみましたが、
見事に解決しました。
818101
垢版 |
2022/08/12(金) 16:36:29.89ID:SBMPsz73
普通、FunctionalをFucって略すか?


幻塔というゲームのテスト用のサーバーネームが
JP Fuc Test Server
だったらしく炎上してた
2022/08/13(土) 03:28:02.47ID:nuG2c1c/
mypyでエラーにならないように pathlib.Path の型を示したいんだが、これはどうすりゃいいのかね?
type()でチェックすると
<class 'pathlib.WindowsPath'>
となるんだが pathlib.WindowsPath と指定してもエラー出るし
2022/08/13(土) 03:32:04.91ID:nuG2c1c/
動的な基底クラスはmypyでチェックできないって言ってる人がいたわ
そういうことなのか?
821デフォルトの名無しさん
垢版 |
2022/08/13(土) 03:54:53.99ID:xLCZiP8v
pylanceだとpathlib.Pathでいけるけどmypyあかんか?
2022/08/13(土) 07:30:43.65ID:nuG2c1c/
>>821
お、いけたわ
さんくす
823デフォルトの名無しさん
垢版 |
2022/08/14(日) 04:23:42.79ID:aYzApZcG
pythonでcuda使いたいが、お勧めのサイトありますか?
ちなみにcudaは3090とかの方がいいですか?
2022/08/14(日) 09:47:31.64ID:7VRuM4Xa
にほんごでおk
825デフォルトの名無しさん
垢版 |
2022/08/14(日) 10:12:56.20ID:A6qxvdf0
[python cuda]🔍
2022/08/14(日) 11:25:05.75ID:Gnb69e0i
Noneの比較はis を使うべきで==を使うべき"でない"なんて記述を見かけるのですが、

if dictData.get('key') == 'hogehoge':
__echo 'OK'

例として辞書のgetメソッドのようにキーが無ければNoneを返すような場合で上記のような判定もすべき"でない"のでしょうか?
この場合dictData.get('key', '')のように、キーが見つからない場合の値を明示的に書くべき?
(ただdict.get()のようにコントロールできないのもありますよね)
2022/08/14(日) 12:06:39.34ID:KzxSNF0d
if hoge is None:
こんな風に定数Noneと比較する場合の話だよ
828デフォルトの名無しさん
垢版 |
2022/08/14(日) 12:18:23.17ID:T9w5rPHY
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:
__func()
などと書く。英文として読みやすいからよい

つか辞書から無い可能性あるkeyのgetは避けたい
db検索的に書きたいならget使わずtry節書いてKeyError専用処理作ろう
2022/08/14(日) 12:29:39.79ID:Gnb69e0i
>>827,828
なるほど、明示的にNoneであることの比較の場合はということですね。ありがとうございます。
>>828さんの最後の件も承知しました。
2022/08/14(日) 12:34:40.20ID:Gnb69e0i
>>828
あ、やっぱりすみません、最後のget使うべきでない理由って簡単に教えていただけますか?
今回、API等の応答で、辞書の目的のキーがあったりなかったりするような応答で、キーがあれば拾う、無ければ無視、という単純なものなのですが、それでもgetは使わないほうが良かったりしますか?
831デフォルトの名無しさん
垢版 |
2022/08/14(日) 12:41:52.12ID:VI2zLni0
>>682
1000%同意する
832デフォルトの名無しさん
垢版 |
2022/08/14(日) 12:45:09.72ID:Xz0meKRj
>>830
dict['key']が存在してvalueがNoneの場合にTrueになっちゃうから、キーの不存在判定だけしたいなら'key' in dictの方がいいんじゃないかな
833デフォルトの名無しさん
垢版 |
2022/08/14(日) 12:50:22.70ID:T9w5rPHY
>>830
エラーは出ていいんよ
逆に握りつぶしちゃいけない
というかgetってなんのためにあるんだ?

try:
__dic[input()]:
____print('ある')

except KeyError:
__print('ねえわ')

except Exception as e:
__print(e.__class__.__name__)

外部入力受け付けるのって鬼門なんでこういう感じで書きたい
keyerrorは想定できるし、別の意図してないエラーも拾いたいだしょ
834デフォルトの名無しさん
垢版 |
2022/08/14(日) 12:51:39.01ID:T9w5rPHY
>>833
しつれい
try:
dic[input()]
print(1)
835デフォルトの名無しさん
垢版 |
2022/08/14(日) 12:53:45.52ID:A6qxvdf0
>>830
その用途なら、getでもいいんじゃない?
>>832が言う様な違いはあるけれど、キーが不存在でNoneが返る場合と、キーが存在するが値がNoneの場合とを、区別する必要があるかどうか、考えて決めれば良いよ
2022/08/14(日) 15:22:06.37ID:nJs5efs8
キーに階層があって、途中のキーがなかったりすることがある場合なんかだと、
区別する実益はあるかもしれんね
一応、.get('key', {}) なんて方法もあるけど
2022/08/14(日) 15:22:39.42ID:Gnb69e0i
>>832
失礼しました。最初の例ですとおっしゃるとおりですね。内容まで取得するケースも想定してました。

>>833-835
ありがとうございます。要件などふまえ考えてみます
838デフォルトの名無しさん
垢版 |
2022/08/14(日) 16:52:51.09ID:T9w5rPHY
ああわかった

db['key1': 0, 'key2':0,,,]
if key1:
__print('ある')
else:
__print('ない')

こんときgetじゃないといかんのだな
あるいは

try:
__value = db[a'']
__print('ある')
except KeyError:
__print('ない')
except:
__print('未定義エラー')
2022/08/14(日) 22:47:50.08ID:549c+n4K
Ruby の偽は、nil, false だけ。
これ以外は真

でも、Python, PHP, JavaScript などは、
各型に偽値がある。空文字列・空配列・空辞書など

だから、とんでもなくバグるし難しい。
すべての型の可能性を考えないといけない

文字列型・配列型・辞書型ならとか。
だから、TypeScript みたいな型チェックツールが作られた
840デフォルトの名無しさん
垢版 |
2022/08/14(日) 22:57:22.86ID:I2sSNpX6
>>839
死ね
841デフォルトの名無しさん
垢版 |
2022/08/15(月) 09:22:07.96ID:c1YCm0IS
>>838
どういうこと?
842デフォルトの名無しさん
垢版 |
2022/08/15(月) 13:07:09.65ID:RvdaGkLE
>>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など)の辞書の用意とかありうるので
843デフォルトの名無しさん
垢版 |
2022/08/15(月) 14:06:42.23ID:0GtlIRwB
ああそういうことか
re.matchとかre.searchみたいなことをやりたいのか

辞書のキーがあるかないかbooleanの判定と値への処理は別の方がいいと思う
if 'key' in dでもKeyError処理はどっちでもいいけど
2022/08/15(月) 15:15:52.94ID:gMKahu5b
>>842
keyに対するvalueが0やNoneの時に
dict.get(key) is Trueにはならんやろ

dict.get(key, [default])を使うのは
keyに対応する値がデフォルト値の場合と
keyに対応する値が無くてデフォルト値が返される場合を同じように処理したい時だけ

bool判定したいならin演算子
KeyError使うのはkeyが存在しない状況が例外的な場合
845デフォルトの名無しさん
垢版 |
2022/08/15(月) 15:38:01.56ID:RvdaGkLE
>>844
ありゃならんな
これはすまん。なんか勘違いしとった。

stackoverflow why dict.get(key) instead of dict[key]?
参照
846デフォルトの名無しさん
垢版 |
2022/08/15(月) 19:52:08.21ID:KlKo2Eqq
わざわざメソッドとして用意されるほどの価値がないんだよなあ
2時代は重宝したのかな
2022/08/15(月) 20:37:42.59ID:Xxg2cjph
if (val := dic.get(key)) is not None:
は使うけどな
2022/08/16(火) 04:15:40.22ID:MkpTU7zo
次のコードがあります
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]]]
となってしまいます
どうしたら理想の形になるでしょうか?
2022/08/16(火) 07:26:37.30ID:GKkpSlmU
内包表記使って初期化
850デフォルトの名無しさん
垢版 |
2022/08/16(火) 08:04:39.39ID:9vnyTUy7
[[[], [0, 0]] if i == 0 else [[]] for i in range(10)]
851デフォルトの名無しさん
垢版 |
2022/08/16(火) 08:06:35.47ID:9vnyTUy7
h=[[[]] for i in range(10)]
h[0].append([0,0])
852デフォルトの名無しさん
垢版 |
2022/08/16(火) 11:31:22.44ID:2x3mrzZQ
要件後出しまくりとか
ゴールポスト移動させまくりとか
チョンメンタルの香具師とは付き合いたくないな
2022/08/17(水) 13:20:06.97ID:5W303LUa
差別主義者で今どき香具師とか使ってるジジイとか逆に誰も付き合いたくないだろ
854デフォルトの名無しさん
垢版 |
2022/08/17(水) 16:37:01.73ID:tMNGLQPx
pandas のread_excelで式が入っている箇所の値を計算値ではなく、
整形されたテキスト値の方を取りたい場合はどうしたら良いのでしょうか?

数値で6.6がテキスト値として”7”として表示されている”7”の方の値をとりたいです。
2022/08/17(水) 18:19:41.22ID:8E4xUz8+
>>854
Excelファイル内のデータとしてあるのは数値の6.6だけで
文字列の7という値はデータとしてファイルには存在しないので
直接読み取るのは無理

read_excelでdtypeやconverterを指定して数値の6.6を文字列の7に変換するか
一旦dfに読んでから変換するか
2022/08/18(木) 04:13:52.58ID:OEqoy/Kx
0.00000001から10000.xxxxくらいまで取り得るfloatの変数を、数字の表記で文字列に変えたいのですが、
str()だと、0.0001未満の値が"1e-05"のような指数表記になってしまいます
一方f-string(format)だと、".8f"等で全桁表記はできますが、小数点以下が常に8桁で0で埋められてしまいます
(例 0.00001→0.00001000)
末尾には余計なゼロは付けず、かつ指数表記にならない形でfloatを文字列にする簡単な方法はありますか?
rstrip('0')など使って余計なゼロを処理するしかないでしょうか?(この場合、100.0などのゼロは削除できないので判定が必要そうで単純にはいかなそうですが)
2022/08/18(木) 08:18:05.71ID:cEC5FUVy
>>856
numpy.format_float_positional
ググったらすぐ出て来た
2022/08/18(木) 08:58:00.71ID:8X5QyRnM
>>855
ありがとうございます。やはりできないのですね。
オプション探してみましたがそれらしいものがなかったので。
場所ごとに与えられた式が同じとは限らないので、
エクセル側で読み込み用の文字列を作成することにしました。
2022/08/18(木) 16:36:53.18ID:Sofq2Da+
条件分岐について質問です
3の倍数であるかどうかを判定する関数func1()とfunc2()を書いたのですが、
どちらの書き方のほうが良いでしょうか?
https://paiza.io/projects/mbEoYGp5wy7cU2oqpoTLbA
2022/08/18(木) 16:40:44.96ID:s/eA3jUD
当然1
2022/08/18(木) 16:48:56.73ID:X/mZUHYK
>>859
3の倍数が例外的な事象と言う事を表現したいならワンチャン2の可能性もあるかも
862859
垢版 |
2022/08/18(木) 17:00:51.08ID:Sofq2Da+
回答ありがとうございます

なぜfunc2()の書き方はあまり良くないのでしょうか?
よろしければ理由も教えて貰えるとありがたいです
863デフォルトの名無しさん
垢版 |
2022/08/18(木) 17:56:26.08ID:GYRCxwaB
すべてのnumは3の倍数かそうでないかのどちらかである、つまり必ずどちらかの処理が実行される事が一目で理解できる点ではfunc1がベター
一方で3の倍数の時は処理を行わず早期リターン、3の倍数でない時は長い処理を行う、といった場合はfunc2
2022/08/18(木) 18:55:31.69ID:Rcho8+Nh
いや、return入れるならelseのときもreturnしろよ
両方入ってるなら2でもいいと思うけど、片方だけ終わらせるために入れるなら関数なのかサブルーチンなのかわからんからダメだろ
865859
垢版 |
2022/08/18(木) 19:10:48.59ID:Sofq2Da+
>>863
なのでこの場合はfunc1()なんですね
ありがとうございました
866859
垢版 |
2022/08/18(木) 19:15:55.23ID:Sofq2Da+
>>864
コードはなるべく短い方がいいと思ったので使わなくて済むところでは使いませんでした
関数なのかサブルーチンなのか分からないと駄目とはどういうことですか?
867デフォルトの名無しさん
垢版 |
2022/08/18(木) 20:03:27.19ID:Ly249j22
こっちのが好き

def is_multiple(num): return num%3 == 0
2022/08/18(木) 21:14:57.76ID:uWlfhjm8
>>864
アラカン先輩ちぃーすっ
2022/08/18(木) 21:32:20.64ID:49aIw1a5
>>867
判定処理と判定結果を表示する処理を分離しましょうという意味では同意する

けどis_multipleという関数名で3の倍数かどうか判定されるのは違和感しかない

じゃどういう名前にするのがいいかと考えると判定処理をわざわざ関数化するほどではないんじゃないかという気がする
870デフォルトの名無しさん
垢版 |
2022/08/19(金) 03:09:01.80ID:FK1lT4BX
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('可読性低すぎる')
871デフォルトの名無しさん
垢版 |
2022/08/19(金) 11:27:50.19ID:scgMDta4
アーリーリターンは何も珍しいこと時や無い
872デフォルトの名無しさん
垢版 |
2022/08/19(金) 11:28:55.77ID:scgMDta4
>>870
関数改行すんならifも改行すんなよ
873デフォルトの名無しさん
垢版 |
2022/08/19(金) 11:30:34.29ID:scgMDta4
しないなら
2022/08/19(金) 18:24:24.93ID:opjWCie4
def func3(n):
p = 0
while n > 0:
p += n % 10
n //= 10
return not (p % 3)
2022/08/20(土) 10:11:04.26ID:FuR2a/w3
>>710
https://github.com/opencv/opencv/issues/22088

4.6.xは色々ダメポ
2022/08/20(土) 23:28:18.84ID:89Fpjor3
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])

こういうのをリスト内包表記で書くのは無理でしょうか
2022/08/20(土) 23:35:43.31ID:mymTDVML
aとbの要素数が同じだったら[i+2*j for i,j in zip(a,b)]でいけね?
878デフォルトの名無しさん
垢版 |
2022/08/20(土) 23:38:46.37ID:cHNXWuBU
c=[x+2*y for x,y in zip(a,b)]
2022/08/20(土) 23:39:36.80ID:mymTDVML
普通にrangeでも
c=[a[i]+b[i] in i for range(5)]でできるかな
880デフォルトの名無しさん
垢版 |
2022/08/21(日) 01:03:28.95ID:uqbZs7r8
どうでもいいけど
c = [i + (j * 2) for i, j in zip(a, b)]
と書きたいな俺は
# (1*i) + (2*j) のようなときのみ(2*j)でも可
# 計算スタックは()でくくる
初心者のうちは特に気をつけたい。動けばいいやんは動かなくなる原因になる
881デフォルトの名無しさん
垢版 |
2022/08/21(日) 01:23:15.12ID:m1bd5huk
>>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)])]
2022/08/21(日) 01:38:11.30ID:X34OpE8X
ありがとうございます!
2022/08/21(日) 06:47:07.90ID:SCvvVl9f
def main(argv: Sequence[str]) -> None:


これってどういう意味というか、なにがやりたいんですか?

def main(argv):
ならmainにargvを渡すだけで分かりやすいんですが
2022/08/21(日) 10:46:46.24ID:1U/+Hx4a
>>883
型ヒントっていうヤツでしょ
おじさんはもう新しいこと覚える気力ないから
どういう機能かは自分でググってくれ
2022/08/21(日) 10:59:40.26ID:LqJQ4HOS
>>883
argvの型がstrのシーケンスで戻り値の型がNoneってこと
シーケンスはlistやtupleのように長さが事前に分かってて各要素にインデックスで直接アクセスできるようなコレクションの総称
886デフォルトの名無しさん
垢版 |
2022/08/21(日) 13:04:30.41ID:j3ukytx2
そこまで型ゴリゴリにするならpythonじゃなくても(じゃない方がむしろ)良いと思うから
放置してる
2022/08/21(日) 13:07:09.50ID:JM/HSGoB
>>884
型ヒントでググりました
注釈だそうですね
要するにいらないんじゃないか!
888デフォルトの名無しさん
垢版 |
2022/08/21(日) 14:03:22.39ID:uqbZs7r8
型ヒント(と開発環境)があると作業効率がずっと上がる
https://imgur.com/jtSAuu4.png
型ヒントのない世界は無
https://imgur.com/BuL77EC.png

オジジでもない限り、初学者は型ヒントつけるクセつけてったほうが
大きいコード書くようになったときなんかに助かるで
889デフォルトの名無しさん
垢版 |
2022/08/21(日) 14:29:46.94ID:j3ukytx2
そこでハンガリアンですよωωω=2πf
890デフォルトの名無しさん
垢版 |
2022/08/21(日) 14:38:59.74ID:jAGl7lqb
実際使ってみると、版画リアンはものすごく楽。
名前というものは被るように出来てるものらしい。
とはいえ推奨はしない。
891デフォルトの名無しさん
垢版 |
2022/08/21(日) 14:45:29.71ID:HDFqY1eo
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()
本文長すぎの為続きは次に書きます
892デフォルトの名無しさん
垢版 |
2022/08/21(日) 14:46:16.53ID:HDFqY1eo
続きです。


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
----------------------------------------
2022/08/21(日) 15:29:25.25ID:hzy7Wudw
GITって何て読むの?
じっと?ぎっと?
2022/08/21(日) 15:41:28.40ID:gzL+j7A8
kit
git
895デフォルトの名無しさん
垢版 |
2022/08/21(日) 15:50:29.96ID:Tt3lkFsn
>>888
え、上が当たり前の感覚なんだけど
昔の人は下の状況でどうやってコード書いてたの? 引数とかオプションとかメソッドとか
ソースあたったりdir連打?
2022/08/21(日) 15:50:38.42ID:tAy7F/Zf
>>892
たぶんこれでいけるんじゃね
content = open(path, encoding = "utf-8").read()
2022/08/21(日) 16:17:28.38ID:EVXa4h0m
>>888
その比較は型ヒント関係ないやろ
898デフォルトの名無しさん
垢版 |
2022/08/21(日) 16:25:35.41ID:S3KIc3UD
>>895
help
899デフォルトの名無しさん
垢版 |
2022/08/21(日) 16:28:13.56ID:HDFqY1eo
>>896
ありがとうございます。
まだ上手く直せていないのですが、試していたらindex.htmlに日本語があるとWindowsではエラーが出ることがわかりました。
ssi_server.py、ssi.pyで正しく日本語を読むようにすればいいということでしょうか。
900デフォルトの名無しさん
垢版 |
2022/08/21(日) 16:49:17.07ID:HDFqY1eo
>>896
ssi.pyの31行目を教えていただいたものに書き換えても駄目でした。。。
他に試してみることがあればぜひ教えてください。お願いします。
2022/08/21(日) 16:53:25.43ID:5N8drKmv
tensorflow Liteというのがあって、int8とかでTPU使うと計算が速いらしいのですが、調べても使い方が複雑すぎていまいちよくわかりません
初心者にもわかりやすくまとまってるサイトはありませんか?
もしくはどなたかが簡潔にまとめていただけると助かります
2022/08/21(日) 17:07:51.78ID:gzL+j7A8
どこまで分かってるか分かってないか書いたほうがいいです
2022/08/21(日) 17:32:33.39ID:4RZQsnIa
>>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というのが存在するので、これを設定すればいいのかなとは思うのですが
あと何したらいいのか見当がつきません
2022/08/21(日) 17:50:14.70ID:y+zMOwhn
>>899
index.htmlは何の文字コードで保存されてるの?
Linuxで動いてるのと同じならUTF-8だと思うけど、Windows側で弄った時に文字コード変わってると
ややこしいから確認したい
2022/08/21(日) 17:56:00.04ID:y+zMOwhn
>>900でもそうだけど
ダメだった時に同じエラーが出たのか、違うエラーが出たのかははっきり書いた方が良い
エンコーディング指定をこれにしても同じ結果になる?
content = open(path,encoding='utf-8_sig').read()
2022/08/21(日) 18:09:49.63ID:YEW47Y5U
ウェブ系など、すべてのシステムはUTF-8

でも、Windows だけは、CP932(shift-jis)。
5ch も、sjis だけどw

こういうシステムは普通はない
2022/08/21(日) 18:14:09.27ID:YEW47Y5U
>>892
の最後の行に書いてある

>UnicodeDecodeError: 'cp932' codec can't decode byte 0x84 in position 1163: illegal multibyte sequence

UnicodeDecodeError: 'cp932'
cp932 でしょ?
908デフォルトの名無しさん
垢版 |
2022/08/21(日) 18:17:56.59ID:HDFqY1eo
>>904-905
content = open(path,encoding='utf-8_sig').read()
で解決しました!
index.htmlはUTF-8で保存されていました。
後学のために単にutf-8だったときのエラーメッセージと元のエラーメッセージの比較をしようと思ったのですが、
utf-8指定でも動作するようになってしまって、その点はよくわからずでした。
(最初のときは違う行に書いてしまったかもしれません)

レベルが低くせっかく即答いただいたのに手間取ってすみませんでした。ありがとうございました。
2022/08/21(日) 21:07:30.06ID:msOimEye
今日初めてPython落としました!
何からやったらいいのかな?
2022/08/21(日) 21:16:22.50ID:oSLHHX37
まずは交番に問い合わせ
2022/08/21(日) 21:21:11.75ID:2nMf0Vdo
ニシキヘビ属(Python)は、爬虫綱有鱗目ニシキヘビ科(ボア科ニシキヘビ亜科とする説もあり)に属する属。ニシキヘビ科の模式属。
912デフォルトの名無しさん
垢版 |
2022/08/21(日) 21:56:34.82ID:uqbZs7r8
class Foo():
__def __init__(self, bar:Bar):
____self.bar = bar

他のクラスのインスタンスをselfで受けるのって慣習ですか?
特に必要なければしなくてもよい?
2022/08/21(日) 22:08:55.27ID:pxrRhRxl
>>912
質問の意図がよく分からない

FooのインスタンスがBarのインスタンスに依存してて
コンストラクタで依存するインスタンスを受け取って参照を保持しておきたいというのがそのコードの意味
2022/08/21(日) 22:36:44.36ID:m1bd5huk
ちんちんシュッシユ
915デフォルトの名無しさん
垢版 |
2022/08/21(日) 22:37:39.35ID:uqbZs7r8
>>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)
916デフォルトの名無しさん
垢版 |
2022/08/21(日) 23:00:36.99ID:sTNlugjb
何見たのか知らないけど保持する必要がないんならインスタンス変数にする必要ないね
2022/08/21(日) 23:15:46.41ID:YEW47Y5U
is-a・継承・一種じゃなくて、has-a・包含・部品化でしょ

Foo は、Bar という部品を持っている
2022/08/22(月) 07:03:46.35ID:nh7qwDlg
どなたか>>903わかりませんか?
2022/08/22(月) 08:53:29.31ID:/DEJsMLY
>>915
> とかでいいときもあると思うんだけど
だいたいインスタンス変数にするだしょ

ルールも慣例もないから君がみた例がそうだっただけ
ただコンストラクタで受けるとき普通はクラス全体として依存するからインスタンス変数で受けることが多いね

まだはやいと思うけどコード設計レベルの話だと、依存しない型をコンストラクタ引数に持つのは余計な情報を含み生成コストが高くなるから、本当に必要な情報だけコンストラクタで渡すか、ファクトリメソッド(staticmethodかクラス外のただの関数)を経由すると良い
2022/08/22(月) 10:58:30.17ID:YpfCjhrS
>>903
>まずtensorflow.lite.TFLiteConverterがありません
Python 3.10 にtensorflow入れて確認したけど、あるよ
ちなみにtensorflow のバージョンは2.9.1
2022/08/22(月) 11:00:20.74ID:tAsFo3rY
統一教会は半島人の醜さを如実に表してる
922デフォルトの名無しさん
垢版 |
2022/08/22(月) 14:10:57.26ID:KX6mg0Ol
質問が既に触っちゃいけない人レベルだと答える気も起きない
2022/08/22(月) 17:08:51.25ID:vrjH2pLG
>>920
こちらは2.11.0と出ました
こんな感じです
どっとup.org/uploda/どっとup.org2859768.png
2022/08/22(月) 17:09:07.20ID:vrjH2pLG
あ、Pythonは3.10.6です
2022/08/22(月) 18:48:00.04ID:KAheMTvm
ちなみに、tensorflow.kerasも、tensorflow.python.kerasになってます
2022/08/22(月) 19:13:09.43ID:YpfCjhrS
>>924
こちらはIDLEでやってるけど、そちらは何でやってるの?

>>>import tensorflow as tf
>>>tf.lite.TFLiteConverter
<class 'tensorflow.lite.python.lite.TFLiteConverterV2'>

と出るから、あなたの環境?ではtensorflow.lite.python.lite.TFLiteConverterV2 でできるかも?
2022/08/22(月) 19:19:54.92ID:mGTda2af
>>926
おおお、なんか出ました!!!
ちなみにVSCodeです
これをTFLiteConverterだと思って使えばいいんですね
ありがとうございます
2022/08/22(月) 19:38:48.82ID:YpfCjhrS
ふぅ〜〜、、また迷える子羊を救ってしまったオレはメシア! >>922はウンコ!!
2022/08/22(月) 19:44:46.61ID:7dOE9g6n
×触っちゃいけない
〇自分のレベルでは触れない
2022/08/22(月) 20:41:16.68ID:xuCaDQYT
(悪い)
2022/08/23(火) 07:46:45.41ID:AXaElLrn
かっこ悪い
2022/08/23(火) 11:45:38.02ID:C7QGzGi8
(インテグラ)
2022/08/23(火) 15:21:34.49ID:VG0bs36n
Python的にはタプル
934デフォルトの名無しさん
垢版 |
2022/08/23(火) 18:20:21.00ID:QvfGPIA0
スクレイピングの勉強でも始めようと思って
FANZAから持ってるエロゲーのデータ取得しようと思ったけど「18歳以上ですか?」のページに飛ばされるからうまくいかないんだよな

それでぐぐってみたらちゃんと回避する方法も載っててさすがエロは人類の英知だなって
935デフォルトの名無しさん
垢版 |
2022/08/23(火) 18:21:32.45ID:QvfGPIA0
で、もしかして商品データのAPIとかあるんじゃないかと調べたら普通にあるじゃん
FANZAでAPIの使い方も学べてしまうわけだ
2022/08/23(火) 21:00:11.70ID:zoEAEgny
プログラムが<b></b>で囲まれてるのがあるんですが、どういう意味がありますか?
2022/08/24(水) 11:40:37.72ID:GCuLQfVh
def mySort(x):
_return x-n

ary=sorted(ary,key=mySort)

上記の様なソートでmySort関数に別の引数(n)を
与えたい場合はどのようにすれば良いのでしょうか?
938デフォルトの名無しさん
垢版 |
2022/08/24(水) 11:40:54.28ID:GCuLQfVh
age忘れたのでageます
2022/08/24(水) 12:06:03.74ID:nMDP5IX7
>>936
<b></b> は、HTML のタグ。bold・太字
2022/08/24(水) 13:10:02.55ID:Q8Mi5AsJ
>>937
functoolのpartialとか
lambdaでclosureとか
2022/08/24(水) 13:42:19.22ID:GCuLQfVh
>>940 ありがとうございます。以下のような感じでいけました。
def sortX(n):
_def sub(x):
__return x-n
_return sub
ary=sorted(ary,key=mySort(5))
2022/08/24(水) 13:44:20.36ID:GCuLQfVh
どうでもいいけど、sortX(n)はmySort(n)でした
2022/08/24(水) 17:14:42.06ID:MmGWx16i
比較関数の名前はmyCmp()とかの方がよくないか
2022/08/24(水) 18:49:27.66ID:9+/sji0l
比較関数そのものじゃないのでgen_my_cmpとかに死体
2022/08/25(木) 11:52:57.48ID:fZ4fACWe
floor が「切り捨て」なのはどういう意味なんだろう?
建物の「階」において、たとえば「2.5階」の高さがあったとしてもそれは2階の範疇、という理解でいいのか?
2022/08/25(木) 12:17:01.44ID:t8dBENVC
>>945
まぁ…ある意味?floorは床(底)、ceilは天井。金融でも
動詞だと倒す、床に押しつける的な意味合いも持つようだね
2022/08/25(木) 12:18:32.67ID:07FV37Yy
>>945
ガウス記号って学校で習わなかったのか?
2022/08/25(木) 12:35:27.45ID:T8QO1Ud9
習ったかもしんないけど、習った時以外に使ったことないな
2022/08/25(木) 19:50:52.48ID:JQLsrPvi
フレームワークスレ動いてないのでここで

jinja2のmacroって1つのmacroにつき1ファイル必要ですか?
便利だけど結構なファイル量になりそう
2022/08/25(木) 19:53:38.52ID:JQLsrPvi
できそうですね
自決しましたすみません
2022/08/25(木) 22:12:05.52ID:onQDGrDv
潔い最期であった
2022/08/25(木) 23:23:20.07ID:11s99DpV
ヒットアンドブローを書いてみました
ここは直した方がいい、って箇所がありましたら教えて頂きたいです
よろしくお願いします

https://paiza.io/projects/V9PHgwFh2EAyhgA2PxxUbQ
953デフォルトの名無しさん
垢版 |
2022/08/25(木) 23:48:36.58ID:C7eFIied
3文字以下を入力したらエラー
2022/08/26(金) 04:59:27.97ID:8E2pwf5q
>>952
数値チェック、桁数チェック、重複チェック追加
blowの計算が違う
2重ループの変数がすべてiなのはややこしい
answer_list、input_list、リストにするメリットを感じない
2022/08/26(金) 05:00:05.01ID:8E2pwf5q
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 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}でした!')
2022/08/26(金) 07:33:07.60ID:90ir5d7g
また人形遊びか
957デフォルトの名無しさん
垢版 |
2022/08/26(金) 10:37:48.28ID:i2SIEm4o
つまらんな
人間が出題してPC(または鯖)に解かせるhit&blowを描け
2022/08/26(金) 14:03:10.97ID:b48ovCTY
重複しないならシャッフルして作る方が好み
こんな感じの
answer_list_int = random.sample(range(10),10)[:4]

>>955
細かい事だけど
isdecimal()って全角数字もTrueになりそうな
959952
垢版 |
2022/08/26(金) 15:53:44.20ID:YT1F4ulB
レスありがとうございました!
いろいろ改善してみたいと思います
960952
垢版 |
2022/08/26(金) 18:09:23.80ID:YT1F4ulB
修正しました
ややネストが深くなってしまいましたが

https://paiza.io/projects/nUxI-yeQLIlZSBGA4dmcKA
2022/08/26(金) 19:10:15.58ID:8E2pwf5q
>>960
自分のスタイルで書けばいいと思うけど最終行はいかがなものか
print(f'\n残念!当たりは{"".join(answer_list)}でした!')
2022/08/26(金) 21:56:17.10ID:qaneYf7D
標準ライブラリだけで、ローカルタイムゾーンのoffset値だけ取得したい(日本なら+9みたいな)のですが、直接取得できる方法などありますか?
2022/08/26(金) 22:05:56.45ID:Iy9DcYfZ
マニュアル読め
2022/08/26(金) 22:40:57.28ID:qaneYf7D
time.timezone / 3600
(→Asia/Tokyoだと -9 になる)
が一番簡素ですかね
965952
垢版 |
2022/08/26(金) 22:50:13.39ID:YT1F4ulB
>>961
ありがとうございます

もう1つだけどうしても気になる箇所があるのですが、
>>960の21行目で定義しているinput_number_strを、無意識のうちに
for文の外で使っちゃってるのですが、なぜエラーにならないのですかね?
Pythonではブロックは無視していい仕様なんですか?
2022/08/26(金) 23:41:59.18ID:8E2pwf5q
>>965
関数ブロック(def/lambda)だけ考えればいい
967952
垢版 |
2022/08/27(土) 00:45:11.54ID:eQp61XjW
>>966
すごい仕様ですね、ちょっと受け入れるのに時間かかりそうです
ありがとうございました
2022/08/27(土) 10:36:29.81ID:iQeLdPnf
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)
こういう式に文句言われたんですが
969デフォルトの名無しさん
垢版 |
2022/08/27(土) 11:13:27.05ID:WyESGIww
その警告文で検索したら秒で解決するけど、しなかった?
2022/08/27(土) 11:33:42.24ID:z31K+Zx9
pd.set_option('mode.chained_assignment', None)
2022/08/27(土) 13:32:06.26ID:BTzbpX5q
よくまとまってる
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
972デフォルトの名無しさん
垢版 |
2022/08/27(土) 14:42:22.60ID:n5VuK+5f
奥が深い
沼ズブズブ
973ややや
垢版 |
2022/08/27(土) 20:00:28.28ID:IQqR6XHY
https://qiita.com/mimuro_syunya/items/2464cd2404b67ea5da56

上のサイトを参考にしてジュピターノートブックからサイトの最後の方にあるソースコードをコピペして最後の3行をGetメソッドで指定したURLに飛びませんでした。
最後の3行を変更せずにやっても出来ませんでした!

上記のサイトの実行コマンドをbotファイルにするくだりはやってます。

目立ったエラーなどは現在無いです。


ブラウザ立ち上げた後にそのまま処理を行うにはどうすれば良いでしょうか?
2022/08/27(土) 21:29:38.61ID:RK2Xjm2V
日時と得点からなる表Aがあったとします
最高得点が更新された履歴の表を作りたいです
Aの各要素にその日時より古い日時のAの全要素をouter joinかmergeでくっつけて、
くっつけた表の部分をgroupbyしてmaxを求め、
各要素の得点とmaxの得点が一致しているものだけをselectしたいのですが、
SQLならできるのにpandasではやり方がいまいちわかりません
普通にmergeしただけだと共通項があるものしかくっつけられないです
どう書けばいいか教えてください
2022/08/27(土) 22:11:52.80ID:8j5Nb3+9
>>974
日時の順にループで1行ずつ最高点を更新したかどうかを判定して
更新してれば新しい表に(日時, 得点)を追記していけばいいよ
O(n)なのでouter joinするやり方よりも断然効率的
2022/08/28(日) 09:44:53.82ID:my7A80XW
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数だけ表示させる場合
どうしたらいいでしょうか?
2022/08/28(日) 16:01:50.37ID:kZD7TOdo
自己解決しました
失礼しました
978デフォルトの名無しさん
垢版 |
2022/08/28(日) 16:36:09.29ID:q65Nt2bT
解決法も書いてってや
後輩のために
2022/08/28(日) 17:39:31.88ID:ULmp/dD0
失礼します
class内のメソッド宣言の際に、1つ目の引数にselfを必ず入れなければならない
理由や背景が何となくしか分かりません
それと、selfはJavaで言う所のthisと同じようなものと考えてよいですか?
980デフォルトの名無しさん
垢版 |
2022/08/28(日) 17:47:12.52ID:q65Nt2bT
そう
別にthisでもいいよ。selfでなく
2022/08/28(日) 18:48:06.80ID:ScmkE54Q
他のOSでの挙動は分からないけどWindows版Pythonで
socketのrecvで受信待機している時に他のpyファイルを動かすと動作が停止してしまいます
終了ではなく永遠に待機している感じ
recv中に例外エラーも出ないのですが対処法ありますか?
982979
垢版 |
2022/08/28(日) 19:22:25.55ID:ULmp/dD0
>>980
ありがとうございました
2022/08/28(日) 20:31:29.47ID:A7P8ZEj/
40代未経験だがPython覚えればプログラマとして就職できる?
2022/08/28(日) 20:42:53.44ID:5PlXdxXB
他の業務知識があれば出来るんじゃね?

研究者は無理やろ
2022/08/28(日) 21:04:51.02ID:K7gdf/So
求人数はJavaとJavaScriptとPHPの方が多いのだわ
PythonはML系の求人が多いことを考えると
未経験から最初に業界に首をねじ込むための言語としては
あんまりおすすめせんのだわ
2022/08/28(日) 21:05:19.00ID:K7gdf/So
あ、985が立てるのか…
987デフォルトの名無しさん
垢版 |
2022/08/28(日) 21:25:02.87ID:0hsZj3lg
cudaで処理速度が20万倍っていうデータがあるんだけど
みんなはどれくらいの速度が適性だと思う?
2022/08/28(日) 22:33:49.95ID:gOapjWvD
>>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 の資格があれば強い
2022/08/28(日) 23:01:16.78ID:Uxqu4oWF
>>970 はアカン例やろ
2022/08/28(日) 23:04:54.48ID:n2t07jCF
速ければ速いほどよい
991デフォルトの名無しさん
垢版 |
2022/08/29(月) 14:20:05.87ID:HM6f0MF8
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以外だと全部不正解になってしまいます
2022/08/29(月) 14:31:09.09ID:IoynIqHg
>>991
text=int(input(q))
でint型にキャストしようしてるんだから、例えば十二とか入れたら
文字列⇒数値へキャストできずに例外が発生してexcept:のルートに入っちゃうだろ
2022/08/29(月) 14:31:14.78ID:lEy6aHnj
せめて質問文らしく書こうな。
text = int("十二")
の結果が0だからだよ。
int()をなくして12も"12"に変更して、全て文字列で扱うようにすれば
994デフォルトの名無しさん
垢版 |
2022/08/29(月) 14:35:17.73ID:SW+mNQvs
慣れないうちは簡単な書き方しよう
ごちゃごちゃ詰め込まない

while True:
__print ('年齢は?')
__ret = input()
__if ret == 12:
____print('ok')
____break
__elif ret == '十二':
__else:
____print('no')

if ret in [12, 12, '十二']
でもよい
995デフォルトの名無しさん
垢版 |
2022/08/29(月) 14:38:41.17ID:HM6f0MF8
>>992-993
ありがとうございます
自分の場合まずint()からしてよく理解してなかったです
996デフォルトの名無しさん
垢版 |
2022/08/29(月) 14:42:50.09ID:SW+mNQvs
うそ
ret = input()
ret in ['12', '12', '十二']
だわ

漢数字や全角ありうるならint型に変換しないほうがよいぬ
2022/08/29(月) 14:44:38.06ID:eTTKQ396
>>994
慣れないうちは動作確認しよう
エラーは詰め込まない
998デフォルトの名無しさん
垢版 |
2022/08/29(月) 15:21:46.13ID:XtVEyX62
9+9+980
999デフォルトの名無しさん
垢版 |
2022/08/29(月) 15:22:51.65ID:XtVEyX62
うめ
1000デフォルトの名無しさん
垢版 |
2022/08/29(月) 15:23:06.50ID:XtVEyX62
https://mevius.5ch.net/test/read.cgi/tech/1653540315/
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 98日 16時間 57分 58秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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