22/05/22 22:37:38.56 jNpDIIz5.net
立て乙
3:デフォルトの名無しさん
22/05/24 13:49:28.09 cQhl8P2i.net
かわいい女の子に上目遣いで拗ねたように「いじわる」と言われると興奮するんです
4:デフォルトの名無しさん
22/06/05 08:46:24.02 Sg+yaBaV.net
pandasについての質問です。
"PRICE1","PRICE2","PRICE3","P1(%)","P2(%)","P3(%)"の順にデータが入ってるとします。
下記みたいな感じです。
①[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] ○
○をつけたデータが残したいデータになります。
①②のようにPRICE>0のPRICEデータが1つの場合は、該当するP(%)データが25より大きい場合に残したいです。
③④のようにPRICE>0のPRICEデータが2つの場合は、該当するP(%)データがどちらも20より大きい場合に残したいです。
⑤⑥⑦のように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:デフォルトの名無しさん
22/06/05 11:40:11.32 ocueg4o5.net
よーしらんが、論理回路の問題なんだろ?
なら一時的にif(if(if))みたいなネストの深いクソコード書いて、細かくデバック通すか
関数宣言をさぼらずに、(df["PRICE1"]>0)や(df["P1(%)"]>25)に分かりやすい関数名付けたほうがいいんじゃねえかな
6:デフォルトの名無しさん
22/06/05 12:23:41.62 NOI2DZIw.net
datetime.datetimeクラスの順序比較に手を加えたくなって、モジュールのソースをみたら_cmp()メソッドが比較の本体だったので
URLリンク(techiedelight.com) というコードで試したのですが、そもそも_cmp()が呼ばれません
これって、私は何を間違えているのでしょう? (なお、当初やりたかったこと自体は__eq__, __gt__, __ge__, __le__, __lt__, __ne__を直接オーバーライドすることで達成できました)
7:デフォルトの名無しさん
22/06/05 12:40:05.08 u0j22vIZ.net
条件に合うものを残すより
条件に合わないものを消していく方が効率が良い
8:デフォルトの名無しさん
22/06/05 12:44:51.80 u0j22vIZ.net
>>6
URLリンク(qiita.com)
URLリンク(www.delftstack.com)
URLリンク(blowup-bbs.com)
9:デフォルトの名無しさん
22/06/05 14:26:03.02 NOI2DZIw.net
>>8
お返事ありがとうございます
しかし、_cmpのアンダースコアは一つですし、AttributeErrorが発生したりせず単に呼ばれないだけ(比較自体は出来ているので親クラスの_cmp()が呼ばれているはず)です
マングル化に関するページをご紹介いただいた意味がよく分かりません
10:デフォルトの名無しさん
22/06/05 14:57:15.34 ocueg4o5.net
def もれそう(arg1, arg2, arg3, arg4, arg5, arg6):
__うんこ = [arg1, arg2, arg3]
__おもさ = [arg4, arg5, arg6]
__def 内容量(element):
____return len(list(filter(lambda x: x > 0, element)))
__def 耐久力(element, n):
____return list(filter(lambda x: x > n, element))
__if 内容量(うんこ) == 1:
____return 耐久力(おもさ, 25)
__elif 内容量(うんこ) == 2:
____return 耐久力(おもさ, 20)
__elif 内容量(うんこ) == 3:
____return 耐久力(おもさ, 15)
df = もれそう(茶色1,茶色2,茶色3,重量1, 重量2, 重量3)
pandasのことよー知らんから>>5で適当なこと書いちゃったけど、こういうことだよな
どっかで関数一覧に目を通すなりして、array関数とかcallback関数の使い方覚えたほうがいいぞ
11:デフォルトの名無しさん
22/06/05 15:01:54.57 v/p+BagL.net
>>4
sqlでの抽出は知らんけど、他の方法で抽出でけた
import pandas as pd
data=[
[0,0,2470,0,0,27],
[0,0,1570,0,0,0],
[0,1580,1440,0,35,31],
[0,1290,2878,0,0,31],
[2522,885,940,31,0,0],
[1527,1057,1639,28,5,31],
[1527,1457,1639,28,26,31]]
df = pd.DataFrame(data)
def check(row):
d = {1:25, 2:20, 3:15}
return all(i[1] > d[len(row)] for i in row)
# 各PRICEと各P(%)の組をzipで作って、その中からPRICEがゼロのものを削除したものをcheck関数でチェック
[check([k for k in j if k[0]>0]) for j in [list(zip(i[:3], i[3:])) for i in df.values.tolist()]]
[True, False, True, False, False, False, True] # ブールインデックス作成
df2 = df[_] # ブールインデックスで抽出
df2.values.tolist()
[[0, 0, 2470, 0, 0, 27], [0, 1580, 1440, 0, 35, 31], [1527, 1457, 1639, 28, 26, 31]]
12:デフォルトの名無しさん
22/06/05 15:18:41.40 v/p+BagL.net
プロンプトが無くて入力と出力が分かりにくかったので、プロンプト追加
>>>import pandas as pd
>>>data=[
・・・ [0,0,2470,0,0,27],
・・・ [0,0,1570,0,0,0],
・・・ [0,1580,1440,0,35,31],
・・・ [0,1290,2878,0,0,31],
・・・ [2522,885,940,31,0,0],
・・・ [1527,1057,1639,28,5,31],
・・・ [1527,1457,1639,28,26,31]]
>>>df = pd.DataFrame(data)
>>>def check(row):
・・・ d = {1:25, 2:20, 3:15}
・・・ return all(i[1] > d[len(row)] for i in row)
# 各PRICEと各P(%)の組をzipで作って、その中からPRICEがゼロのものを削除したものをcheck関数でチェック
>>>[check([k for k in j if k[0]>0]) for j in [list(zip(i[:3], i[3:])) for i in df.values.tolist()]]
[True, False, True, False, False, False, True] # ブールインデックス作成
>>>df2 = df[_] # ブールインデックスで抽出
>>>df2.values.tolist()
[[0, 0, 2470, 0, 0, 27], [0, 1580, 1440, 0, 35, 31], [1527, 1457, 1639, 28, 26, 31]]
13:デフォルトの名無しさん
22/06/05 15:20:27.82 joAjo/JZ.net
>>10>>11
ありがとうございます!
家帰ったら内容目通していじってみます
14:デフォルトの名無しさん
22/06/05 15:21:54.55 joAjo/JZ.net
>>12
正直かなり助かりました。
まだ家帰れてないので試せてないけど、かなり行けそうなイメージです
15:デフォルトの名無しさん
22/06/05 15:24:04.14 udiiYXiV.net
>>9
>親クラスの_cmp()が呼ばれているはず
確かめた?
16:デフォルトの名無しさん
22/06/05 15:33:26.33 NOI2DZIw.net
>>15
お返事ありがとうございます。親クラスのメソッドが呼び出されていることを実際にどう確認すればいいのか思いつけないレベルです(デバッガ? トレース?)
ただ単に、例外が送出されずに比較結果が表示されたので、何らかの比較するメソッドが呼ばれたのだろうと想像しただけです
例えば、foo <= datetime.datetime.max が評価されるとき
1) foo.__le__(datetime.datetime.max) が呼ばれる
2) fooには__le__メソッドが定義されていないので親クラスに遡って datetime.datetime.__le__(self=foo, other=datetime.datetime.max) が呼ばれる
3) URLリンク(github.com) の2110行 self._cmp(other) へ進む
ここでself=foo, other=datetime.datetime.max なので、 foo._cmp(other=datetime.datetime.max) と、 URLリンク(techiedelight.com) の4行目で定義したメソッドが呼ばれる
と考えていたのですが……継承に関する理解がどっかで間違っているのでしょうね
17:デフォルトの名無しさん
22/06/05 15:56:02.34 U0Dsg58D.net
俺も気になる。何で_cmp呼ばれんの?
18:デフォルトの名無しさん
22/06/05 18:26:33.72 NPpCVuaP.net
foo を造ってるのが now() なので
foo の型が datetime のままなんじゃね
19:デフォルトの名無しさん
22/06/05 19:36:27.49 NPpCVuaP.net
print(super(DatetimeTest, self)._cmp)
↓
AttributeError: 'super' object has no attribute '_cmp'
20:デフォルトの名無しさん
22/06/05 19:37:47.11 NPpCVuaP.net
こっちは動く
URLリンク(techiedelight.com)
21:デフォルトの名無しさん
22/06/05 19:39:44.56 v/p+BagL.net
>>12
allの引数が空の場合(全てのPRICEがゼロの場合)にTrueを返すのでcheck関数修正
def check(row):
d = {1:25, 2:20, 3:15}
return all(i[1] > d[len(row)] for i in row) if row else False
22:デフォルトの名無しさん
22/06/05 20:20:03.24 x6+Exssm.net
ジェネレーター式まで学習が進んだが
ちゃんと慣れないと突然でてきたとき「なんだこれ!?」ってなるとおもうわ
見やすくするためのものだからそんな複雑な構造で出てくることはないと思うが
23:デフォルトの名無しさん
22/06/05 21:55:46.01 NOI2DZIw.net
ID:NPpCVuaPさん、ありがとうございます
> foo を造ってるのが now() なので
> foo の型が datetime のままなんじゃね
type(foo)はちゃんと"<class '__main__.DatetimeTest'>"になっていましたので、その線は無さそうです
で、試していただいた URLリンク(techiedelight.com) ですと、>>16で私が考えたとおりの動作をしているように見えますね
となると、datetime.datetimeとHogeで何が違うのか……ちょっと脳味噌が煮えてきたので、一旦専ブラを閉じて頭を冷やします
24:デフォルトの名無しさん
22/06/05 23:10:11.97 v/p+BagL.net
>>23
dirで_cmpが見えるか見えないかの違いじゃないでしょうか
>>20 のdir(Hoge(0)), dir(Fuga(0))は伴に_cmpが見えますが
dir(datetime.datetime.now())は_cmpが表示されないのでアクセスできないんですよ
25:デフォルトの名無しさん
22/06/06 08:54:18.93 9r9DwyjN.net
見えないのはわかったけどその挙動を実現するための言語仕様ってあるんだっけ?
26:デフォルトの名無しさん
22/06/06 09:18:43.10 Ug3DHjCK.net
本体はこっちじゃね
URLリンク(github.com)
27:デフォルトの名無しさん
22/06/06 09:23:35.02 Ug3DHjCK.net
まずやるべきことは >15 だろ
28:デフォルトの名無しさん
22/06/06 09:43:37.49 zYl8ARh2.net
やりましたみなさん、分かりました!
datetime.pyの最後のにfrom _datetime import *をtryする記述があり
成功したら_cmpなどを消す処理が書いてあるんですが、この_datetimeをimportする関連個所を
ごっそりコメントアウトして
import datetime
dir(datetime.datetime.now())
29: したら_cmpが表示されましたよ、つまりdatetimeの本体は_datetimeで>>26のヤツじゃないでしょうか
30:6, 9, 16, 23
22/06/06 09:50:52.59 PsDk58Y7.net
>>24
お返事ありがとうございます
呼べないのはDatetimeTest._cmp()であってdatetime.datetime._cmp()は呼べている(ように見える)わけですから
datetime.datetime._cmpが見えないことに意味があるのかどうか……一晩経っても脳が煮えたままです
ちなみにdir(foo)だと_cmpが見えてますね……
>>26-28
とりあえず知識もスキルもないなりに手を動かそうと思って、 URLリンク(techiedelight.com) のimport datetimeの位置に
datetimeモジュールのソースをそのまま全部貼り付けてあれこれ試したところ(そのコードはでかいしTECHIE DELIGHTの利用規約的にクリアかどうか分からないのでアップしません)
URLリンク(github.com) の最後、2614行目以降が無ければ>>16で私が考えたとおりの動作になる、つまりfoo._cmp()が呼ばれますが、2614行目以降がそのままだと呼ばれませんでした
ということで、遅ればせながら>>28さんと同じ結果に辿り着けました
Cで書かれたモジュールを読み込んで、未使用の名前を削除して、という工程の中になにかありそう、というあたりが今のところ私の限界です
31:デフォルトの名無しさん
22/06/06 09:54:12.32 Ug3DHjCK.net
なるほど _cmp は存在しなかったで FA
32:デフォルトの名無しさん
22/06/06 09:54:13.01 PsDk58Y7.net
皆さまいろいろとありがとうございます
やはり>>27さんのおっしゃるとおり、まず>>15さんの指摘を確かめなければならなかったようですね
33:デフォルトの名無しさん
22/06/06 09:56:28.25 9r9DwyjN.net
>>28
まじか
グローバルにも_cmpがあるからそれを消すためのコードと思いきや、datetime.datetime._cmpも消えるのね…
34:デフォルトの名無しさん
22/06/06 10:03:42.68 Ug3DHjCK.net
>>29
そこで削除されてる _cmp は module のグローバルの _cmp であって
各クラス内の _cmp は削除されてないようにも観える
35:デフォルトの名無しさん
22/06/06 10:05:27.81 Ug3DHjCK.net
>>32
かぶったが
解せぬ
36:デフォルトの名無しさん
22/06/06 10:13:54.31 zYl8ARh2.net
>>32
グローバルの_cmpを消す処理で合ってると思いますよ
通常は _datetime (たぶん本体がC言語)をimportする、この中にはself._cmpが無いのでdirで見えないし
グローバルの_cmpを消す処理でグローバルの方も見えない
_datetimeのimportに失敗したらdatetime.pyに書かれているdatetimeクラスが使われるし
グローバルの_cmpを消す処理が実行されないので
dir(datetime)でグローバルの_cmpが見えるし、dir(datetime.datetime)でself._cmpが見える
37:デフォルトの名無しさん
22/06/07 17:25:02.03 NE4LVa9l.net
なんのための fake
38:デフォルトの名無しさん
22/06/08 06:15:05 8a3xVi5I.net
python 2.x 系の環境です。
file_path を関連付けで実行させるために下記コードを記述しました。
目的としては引数の文字列を unicode として渡したいです。
subprocess.Popen(「'start', file_path], shell=True)
この際、引数は cp932 として扱われるようで、
file_path を cp932 にencode しないと失敗します。
unicode にしかない文字が含まれる場合があるので
unicode のまま渡したいのですが
Popen 側で引数を unicode として受け取れる方法はありますか?
encoding= は Python 2.x は未対応、
またパイプを使って chcp 65001 を先に実行させてもダメでした。
39:37
22/06/08 07:56:30.16 Ty02xZw9.net
win環境なのですが2.x系では内部で
ANSI版のCreateProcessAを呼び出しているとのことで
そもそもダメということが分かりました
ctypesなど使ってCreateProcessWを直接呼び出すなどするしかないみたいです
40:デフォルトの名無しさん
22/06/08 12:41:12.70 P10Nnex8.net
今のWindowsおすすめpython環境はなんですか?
教育用?にWindowsでのpython環境を作りたいです。
無印python、anaconda、PyCharmはどれがいいでしょうか。
エディタはVSCodeの利用を考えてます。
自分は普段、LinuxやWSL2でemacsを使っているオールドタイプです。
教えて下さい
41:デフォルトの名無しさん
22/06/08 13:17:16.31 Ylodbyzl.net
google colaboratry で十分
42:デフォルトの名無しさん
22/06/08 13:42:31.40 rPUwIz8x.net
たとえば以下のようなリストが即興で欲しくなった場合ってどうしてます?
[[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]…………]
(下の例では0~12まで)
ググった結果numpyで配列を作ってtolistでリスト化する方法は見つけたんですけど
もっとぱっと書けないですかね?
import as numpy np
arr_2d = np.arange(12).reshape((4, 3))
print(arr_2d.tolist())
43:デフォルトの名無しさん
22/06/08 13:43:05.22 rPUwIz8x.net
0~12じゃねえわ11だった
44:デフォルトの名無しさん
22/06/08 15:41:41.08 Mk/J73jd.net
>>39
前は素の python 入れて pip してた
Anaconda + conda 使ったこともある
Thonny + pip も良いと思う
45:デフォルトの名無しさん
22/06/08 15:45:15.80 Mk/J73jd.net
np.arange(12).reshape((4, 3)).tolist()
[[y * 3 + x for x in range(3)] for y in range(4)]
46:デフォルトの名無しさん
22/06/08 15:50:39.30 WqwdOMp+.net
>>41
[list(range(i, i+3)) for i in range(12)[::3]]
47:デフォルトの名無しさん
22/06/08 15:55:39.94 SMHvnx3K.net
import more_itertools
list(more_itertools.chunked(range(12), 3))
48:デフォルトの名無しさん
22/06/08 16:25:32.81 KT22GtKj.net
[np.array([0, 1, 2]) + 3*_ for _ in range(4)]
49:デフォルトの名無しさん
22/06/08 18:22:00.06 WqwdOMp+.net
>>41 さらに短くできた
[list(range(i, i+3)) for i in range(0,12,3)]
もう出尽くしたやろ、ワイのが一番やな、組み込みのみだし直感的だし
応用もきくし、ワイが一番やろw
50:デフォルトの名無しさん
22/06/08 18:40:08.42 3lPgPXCP.net
>>39
WinPython+VScodeが正解だぞ
anacondaは、Pythonを習得し、Pythonと外部ライブラリの境界を把握できるように
なった人のうち、anacondaを必要とする人だけが使うものだ
51:デフォルトの名無しさん
22/06/08 19:34:37.02 nVdli+zf.net
>>39
Pythonで何やりたいのかわかんねーからてきとーだけど
Dockerコンテナにanacodaとvscodeが正解
52:デフォルトの名無しさん
22/06/08 19:37:13.76 d7/kuIlk.net
dockerはdockerの勉強になるしwindowsだと安定しないから要らんな
53:デフォルトの名無しさん
22/06/08 23:45:53.43 rPUwIz8x.net
>>44-48
ありがとう、勉強になった!
54:デフォルトの名無しさん
22/06/09 03:35:46.64 aPNi5OBU.net
pythonのライブラリを調べているのですが
C言語で書かれている部分(cソースコード)には
どうやってたどり着けばいいのでしょうか?
例としてrandom.random()が0.0以上1.0未満の浮動小数点数を
かえしますが、どうゆう仕組みで返すのかを調べたいのです
55:デフォルトの名無しさん
22/06/09 04:32:16.69 FzQACe2i.net
>>53
コンパイル済みのを一般に調べるのは無理。標準ライブラリなら例えばcpython のリポジトリから探せる。URLリンク(github.com)
56:デフォルトの名無しさん
22/06/09 05:11:23 aPNi5OBU.net
>>54
回答ありがとうございました
_randommodule.cまでたどりつきました
少しハードルが高いですが頑張って理解に努めようと思います。
57:デフォルトの名無しさん
22/06/09 05:17:33 FzQACe2i.net
>>55
蛇足かもですがpython の乱数はメルセンヌツイスタというアルゴリズムなので調べてみるといいかもしれません
58:デフォルトの名無しさん
22/06/09 05:44:46.90 aPNi5OBU.net
>>56
_randommodule.cの中に日本人の名前があったので
何故だろうと思いましたがメルセンヌツイスタで検索したら
つながりました。感謝です
59:デフォルトの名無しさん
22/06/09 18:02:41.85 i3H8tE1L.net
>>39
公式Python+PyCharmが便利
60:デフォルトの名無しさん
22/06/09 18:22:37.05 8SlPB6O/.net
教育用なら圧倒的シェアを獲得しているVSCodeの方が良いと思うよ
61:デフォルトの名無しさん
22/06/09 18:36:52.52 ZOUr8HN/.net
pycharmはなぁ…
62:デフォルトの名無しさん
22/06/09 22:20:46.40 KIKA+I2C.net
>>39
教育に、環境構築の手間を含められるかどうかによるかな。
純粋にプログラムとは何かを知ってもらうだけだったらcolab
Pythonスクリプトをちゃんと動かせるようになることが目標だったらWindows用のPythonかなぁ。
63:デフォルトの名無しさん
22/06/09 22:22:21.55 1X1IjXim.net
ideoneでいいじゃん。
colabより高性能だよ。
公開されてしまうが。
64:デフォルトの名無しさん
22/06/09 23:14:03 gzzbtW8N.net
そいや親戚のとこの子供が学校でPythonのプログラムやっているというのだが、
ああいうのって、どういう仕様の実行環境なんだ?
グラフや絵を描けたり、画面上のピアノの鍵盤叩くと音が出せるとか、
なにやら色々とできるようなのだが
というかpipであれこれ山盛りにされてる環境にも思える
Scratchだと思ってた
65:デフォルトの名無しさん
22/06/09 23:16:22 1tSt6fQl.net
ideoneとColab(Jupyter)だと機能がダンチだから土俵がちがう
66:デフォルトの名無しさん
22/06/09 23:20:50 1tSt6fQl.net
>>63
MakeCodeとかUI Flowのあたり?
ブロックプロラミングとPythonを行ったり来たりできる
67:デフォルトの名無しさん
22/06/10 03:26:54.12 v7zmV4Lt.net
vscodeって途中のコードいじってると下記の折り畳み全部開いちゃうじゃん。あれ超鬱陶しい
68:デフォルトの名無しさん
22/06/10 12:08:03.84 sFhUkWJJ.net
関数の引数型説明(アノテーション?)をつけるとき、intやstr等の組込み型ではなく、クラスのインスタンスの場合どのように書けばよいでしょうか
69:デフォルトの名無しさん
22/06/10 12:38:18.30 Lq4KcKs2.net
URLリンク(docs.djangoproject.com)
このページの最初のコードをshellモードでやってもtimezone has no 'now'って出るんだけどなんでだよ
ついでにいうとsettings.pyでuse_tz = Falseにすると逆に日本時間になってTrueにするとUTCになる
70:デフォルトの名無しさん
22/06/10 14:22:36.04 Lq4KcKs2.net
解決
from django.utils import timezone
じゃなくて from datetime import timezoneって書いてた
71:デフォルトの名無しさん
22/06/11 10:31:55 yOzdOwl+.net
超初心者です!古いMacでも出来ますか?
72:デフォルトの名無しさん
22/06/11 11:18:37.09 85fUpHB3.net
>>70
URLリンク(homepages.cwi.nl)
これだとバージョン古いからMac-on-Linux化してLinux側で動かすか
リモートでもいいならWebブラウザのGoogle Colabやクラウド上のLinuxでやれる
73:デフォルトの名無しさん
22/06/11 11:20:32.01 IHQzlSUe.net
>>67
例えばpandas(pd)のデータフレーム(df)なら
import pandas as pd
def some_func(df: pd.DataFrame, some_num: int = 42) -> pd.DataFrame:
df2 = df.cooy()
# 処理
return df2
74:67
22/06/12 06:48:37.19 0q70LBVd.net
>>72
ありがとうございます
75:デフォルトの名無しさん
22/06/12 08:55:03.32 LQ+2P+LS.net
サポート期限すぎたMac使ってそう
76:デフォルトの名無しさん
22/06/12 18:06:38.20 9B8stwi/.net
leetcodeの問題解いてるんだけどさ
コードをvscodeとかのエディタ上で再現しようとしてもinputはleetcode側がやってるから、コードコピペしてもうまく動かないってことか?
Input: strs = ["flower","flow","flight"]
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
# 回答をここに書いた
こういうクラスを実行する場合って
solu = Solution()
solu.longestCommonPrefix()
こんな感じにすると思うんだが、エラーが
NameError: name 'List' is not defined
とかになるんだよね
77:デフォルトの名無しさん
22/06/12 18:18:33.18 d5yVlq+K.net
そのくらいはimportしろよ
78:デフォルトの名無しさん
22/06/12 18:22:48.72 V8Tt9ICP.net
エラー文も読めないのか
新しいpythonならlist[str]だバカタレ
79:デフォルトの名無しさん
22/06/12 18:23:08.52 fSdhUbKc.net
>>75
そこだけの話でいうと
from typing import *
だけど、問題のコードが古い
今はListをlistと書くようになったから
80:デフォルトの名無しさん
22/06/12 18:42:58.91 w/rq6Our.net
nameErrorとかattributeErrorと最低限のエラーぐらい読めるようになろう
問題といてる場合じゃない
81:デフォルトの名無しさん
22/06/12 19:23:48.95 9B8stwi/.net
>>78
なるほどそういうことか
ありがとう
82:デフォルトの名無しさん
22/06/17 03:56:57.46 i0EppADi.net
>>1
def reverse(url): return url[::-1]
lst = [ ['=v?hc','taw/','moc.e'], ['.www','//:sp','tth'], ['but','uoy'] ]
yt = ''.join( lst[0] + lst[2] + lst[1] )
id_lst = ['MOYukLAWwkK', 'A4c_Lbwf-Jw', '0glgH5rR_po']
for id in id_lst: print( reverse( id + yt ) )
"".join("ht_t_ps://ja_.wiki_pedia.o_rg/_wiki/朝鮮神宮".split("_"))
83:デフォルトの名無しさん
22/06/17 05:22:40.60 eircCDFG.net
>>1
reverse = lambda *argv: [ '//:sptth'[::-1] + url[::-1] for url in argv ]
lst_url = reverse('IPq5AyxxvpM=v?hctaw/moc.ebutuoy.www',
'0EgauYFUN8N=v?hctaw/moc.ebutuoy.www',
'48132/-/selcitra/pj.tnediserp',
'4456111984139806941/sutats/oobnolihsusta/moc.rettiwt',
'81605591320X602502201/txt/elpmis/pj.og.ldn.iakkok',
'1021=morf?15978662os/hctaw/pj.oedivocin.www',
'8xebddeeiYY=v?hctaw/moc.ebutuoy.www')
print(*lst_url, sep='\n')
84:デフォルトの名無しさん
22/06/17 08:29:57.19 doPvN/Dz.net
これを三項演算子で書くことってできますかね?
if a:
if b or c:
print("1")
else:
pring("2")
85:デフォルトの名無しさん
22/06/17 08:40:15.00 impPpfbo.net
インデントどこやった
86:デフォルトの名無しさん
22/06/17 09:16:26.10 b18JcTPN.net
5chはインデント未対応なので
pythonコードを貼るときは
行頭インデントを全角アンダーバーで
埋めてください
87:デフォルトの名無しさん
22/06/17 09:26:11.91 doPvN/Dz.net
こんなかんじです
a b c は true か falseが入る変数です
if a:
_if b or c:
__print("1")
else:
_print("2")
88:デフォルトの名無しさん
22/06/17 09:35:01.18 nb2nCyEf.net
>>86
print((1 if b or c else "") if a else 2)
三項演算子ならば全ケース対応する必要がある
a and not (b or c)の場合は空文字列とした
89:デフォルトの名無しさん
22/06/17 09:52:15.09 Ws3c1l54.net
回答になってないが
if not a:
__print(2)
elif b or c:
__print(1)
でよくない?
90:デフォルトの名無しさん
22/06/17 12:17:47 uqpMsu92.net
a = True, b = False, c = Falseのケースを見落としてるのか
意図して何もしてないのかが読み手にはわからないからすごく気持ち悪い
91:デフォルトの名無しさん
22/06/17 12:40:54 u2aqxJXf.net
テキストだと以下のようになるんだけど
# 整数(Python の int 型)の要素をもつリストを与えた場合
x = np.array([1, 2, 3])
x.dtype
結果
dtype('int64')
自分の環境だとdtype('int32')になるんだよね
これってあんまり気にしなくて良い部分?
ちなみに以下のはテキストと同じ結果になる
# 浮動小数点数(Python の float 型)の要素をもつリストを与えた場合
x = np.array([1., 2., 3.])
x.dtype
結果
dtype('float64')
92:デフォルトの名無しさん
22/06/17 13:02:51.91 sBNVv+WO.net
numpyのintはC言語のlong
あなたの環境はWindowsで本はLinuxなのだろう
93:デフォルトの名無しさん
22/06/17 16:24:32.82 G79h5Zer.net
>>87
無駄な改行が増えるので仕様が異なる
94:デフォルトの名無しさん
22/06/17 16:26:41.62 G79h5Zer.net
>>90
OSの32/64と
pythonの32/64と
それぞれどっちが動いてるかは意識するべき
95:デフォルトの名無しさん
22/06/17 17:59:15.20 JzEGKltv.net
>>93
それとは別の話なんやで
96:デフォルトの名無しさん
22/06/17 19:32:27.63 Ta4m0XWe.net
>>82
'stnemugra-gnikcapnu-tut#lmth.wolflortnoc/lairotut/3/aj/gro.nohtyp.scod//:sptth'[::-1]
97:デフォルトの名無しさん
22/06/17 20:07:00 IFnpw5My.net
jupyternotebook で実行中のセルからほかのセルを呼び出して実行できませんか?
マジックコマンドをみてもそれらしきものがないような
vbaでいえば、セルをプロシージャ、ノートブックをモジュールのように扱いたいのですが・・
98:デフォルトの名無しさん
22/06/17 23:55:43.50 doPvN/Dz.net
86ですが回答ありがとうございました。
これでいけそうです
print("b") if not a else print("a") if b or c else print("c")
99:デフォルトの名無しさん
22/06/18 01:17:30.65 lHai4Yqe.net
>>96
モジュール化するのはだめなんか?
インポートしたらいいじゃまいか
100:デフォルトの名無しさん
22/06/18 11:02:31.05 0BdDrqNN.net
>>90
気になるなら
x = np.array([1, 2, 3], dtype=np.float32)
101:デフォルトの名無しさん
22/06/18 17:19:34.23 AeKYwQGO.net
""と''の違いってある?
単に出力の違いとかじゃなくてコードを書く上での使い方の違いとか
102:デフォルトの名無しさん
22/06/18 18:19:13.17 HiXA4239.net
URLリンク(pep8-ja.readthedocs.io)
103:デフォルトの名無しさん
22/06/18 18:53:41.89 U2ccem7m.net
>>100
英語キーボードなら''のほうが楽
104:デフォルトの名無しさん
22/06/18 19:06:28.02 H57335ve.net
>>98
ありがとうございます
検索すると、実行セルのipynbとは別のipynbファイルおよびセルをインポートする方法はあるのですが、
実行セルと同じipynbファイルにある別セル(例えば、実行セルの一つ上のセル)を呼び出したい
場合は、自分自身のipynbをインポートするということでしょうか?
インポートするipynbのセルすべてを実行するとあるので、素人感覚では無限ループになってしまうそうなのですが・・
呼び出される側のセルをpyファイルに出力してそのpyファイルをインポートすればいい話かもしれませんが、いちいち
pyファイルで書き出すのもなあ…と 理解が悪くてすみません
105:デフォルトの名無しさん
22/06/18 19:19:37.26 HiXA4239.net
普通に関数を作るのではだめなの
106:デフォルトの名無しさん
22/06/18 20:04:40.40 H57335ve.net
>>104
ありがとうございます
それでももちろんできるのですが、呼び出される側のセルを単体で実行することも多く、また同一ipynbのその他多くの
セルからも呼び出したいのです(処理が共通している
vbaだと、publicsubプロシージャで独立させてしまえばいい話だったので同じことがしたいなと
107:デフォルトの名無しさん
22/06/18 20:08:08.31 cOcEcivy.net
jupyterなんて池沼用だろ
108:デフォルトの名無しさん
22/06/18 22:44:24 FjYCWDRz.net
blenderでpythonスクリプトを使ってキャラクターの目のまばたきの動きを制御してるんですがやってることをグラフで表すとこんな感じで
URLリンク(i.imgur.com)
yにどのくらい目を動かすかの数値が入り
xにアニメーションの経過フレーム数が入るとして
xが0のときyは0 xが3のときyは6 という条件があるものとして
それをグラフで表すと増量が一定ならば一番左のグラフのようにyが2ずつ増えるグラフになると思いますけど
これだとまばたきが毎回同じ動きになってしまうので変化をつけたいんですが
たとえば真ん中や右のグラフのようにyの数値が不規則に増えていくグラフを計算するたびに作成するみたいなことをしてまばたきの動きに変化をつけたいんですが
それに使える関数とか計算式みたいのってないですかね
109:デフォルトの名無しさん
22/06/18 22:53:35 HiXA4239.net
この分野はド素人だが
CSSにはanimation-timing-functionってのがあって似てる
110:デフォルトの名無しさん
22/06/19 09:13:37.77 CQcbRoeX.net
dictionary_one = {"a": 1, "b": 2, "c": 3}
dictionary_two = {"c": 3, "d": 4}
merged1 = {**dictionary_one, **dictionary_two}
print(merged) # {'a': 1, 'b': 2, 'c': 3, 'd': 4}
merged2 = dictionary_one | dictionary_two
print(merged2)
これの "merged1="部分と"merged2 ="部分ってやってること同じという認識でいいのかな?
111:デフォルトの名無しさん
22/06/19 09:55:52.19 EfD69g8z.net
>>109
前者は遅い
112:デフォルトの名無しさん
22/06/19 11:42:39.18 Lvzk3izZ.net
速度はほぼ同じ
しかし今の時代に演算子にやらせる処理じゃないな
それも論理演算子を想起するものを使うとか正気と沙汰とは思えない
Guidoも演算子推してたけどセンスが悪すぎないか?
113:デフォルトの名無しさん
22/06/19 12:37:09.83 sa8W0ZGX.net
論理演算自体、集合演算と切っても切れない関係だから、まるで違和感ないな
114:デフォルトの名無しさん
22/06/19 15:08:21.20 mFXr9uBN.net
dictを拡張するPEPは、setに準じた挙動にするのが目標の一つだったから、どう転んでも論理演算子のオーバーライドは外されなかっただろう
115:デフォルトの名無しさん
22/06/19 15:26:32.46 cDaRhPWb.net
>>112
dictは集合演算じゃないからね
a | bで両方にkeyがある場合はset�
116:ニ同じくaが採用されるならまだよかった
117:デフォルトの名無しさん
22/06/19 15:37:38.06 V2Ko/eSH.net
>>113
最初は+で提案されてたんだぞ
それにsetに準じたいなら何で他の演算子は実装されないのさ?
118:デフォルトの名無しさん
22/06/19 15:47:44.79 JUrmuEeo.net
URLリンク(peps.python.org)
こんなの追加するなよと思ってしまうけど結構面白い
119:デフォルトの名無しさん
22/06/19 16:18:18.38 AfW1xcqK.net
inplaceじゃないdict.updateが欲しかっただけなのに
それをメソッドで用意できないところがPythonの限界
sort/sortedやin演算子に共通する基本的API設計の問題だから
Pythonはそういうもんだと諦めて
用意されたものを使う事だけに専念した方が精神衛生上いいよ
120:デフォルトの名無しさん
22/06/19 16:34:05.36 +3VyORCf.net
>>114
keyに注目すれば集合演算そのものじゃん。
valueという属性が各keyに付いてるというだけ。
大体、>>111はsetだったら納得したのかね
121:デフォルトの名無しさん
22/06/19 17:04:44.33 SF0ERYFz.net
不毛な返しだな
潜在的に不幸な奴はどこでどんな生活をしてても不幸だって言うだろ
同様にどこでどんな仕様の言語を使ってても不平を垂れてんだよ
122:デフォルトの名無しさん
22/06/19 17:17:33.66 tgIktWD1.net
誰と会話してるのか知らないが
Pythonこそ人類最大の功績だろ
いかがわしいウェブサイトの構築からAIや研究畑まで広がる広大な活躍範囲
JavaもRubyも要らんかったんや
123:デフォルトの名無しさん
22/06/19 18:03:25.93 EYUnw8+k.net
>>118
setのunionやintersectionの演算子は違和感ないぞ
それにsetの場合は穴にはまるような仕様もないし
__or__以外の通常メソッドも用意されてるから全然状況が違う
124:デフォルトの名無しさん
22/06/19 19:03:27.86 MGBoiv+i.net
俺もDictの論理和で違和感ないがなぁ。
125:デフォルトの名無しさん
22/06/19 22:17:06.63 njnZ7xZC.net
dict1 | dict2で同じ(hash値の)keyが両方にあれば
keyはdict1からvalueはdict2から取ってくる
一般的な論理和の定義とは明らかに異なるけど
これをpythonではdictの論理和と呼ぶことにしたのならそれでいいんじゃない
126:デフォルトの名無しさん
22/06/19 22:17:07.56 m8jSBDD8.net
>>120
原理主義者w
読みやすさがダンチすぎるわな
あとは高速にさえなれば最強
127:デフォルトの名無しさん
22/06/19 22:44:59.15 sa8W0ZGX.net
>>123
keyは同じものなんだからどっちからもってきてもいいだろ。
仕様でもvalueをdict2から持ってくることだけしか決められてないんだからそんなところに依存するコードを書いたらお前が悪いとしか言えん。
あと同じhash値ってだけで同定されると思ってるみたいだな
128:デフォルトの名無しさん
22/06/20 00:01:19.54 FO/JkqKw.net
>>123
誰もdictの論理和と呼ぶ奴いないが
129:デフォルトの名無しさん
22/06/20 00:04:58.71 FO/JkqKw.net
こんな場末の掲示板で美学()を垂れてる大先生達はPEPに提案でもすればいいのにな
URLリンク(github.com)
130:デフォルトの名無しさん
22/06/20 00:51:48.01 3bt1t/j5.net
>>126
>>122
131:デフォルトの名無しさん
22/06/20 09:01:28.64 clQvML/w.net
picture(数字).pngで連番のファイルを生成したんだけどpathlibでディレクトリの中身覗くと
picture0.png
picture1.png
picture3.png
picture2.png
picture4.png
みたいな順番になってる事があってなんだか気持ちが悪い
これって何が原因なんです?pathlibの仕様?
132:デフォルトの名無しさん
22/06/20 10:51:33.24 bmv2finQ.net
iterdir()とiterdir()が使ってるos.listdir()の仕様
133:デフォルトの名無しさん
22/06/20 10:52:01.17 NopO3X5I.net
lenovoのL420っていうノートパソコン使っています
celeron,4GBです
教科書レベルのプログラムを写経してます
画像ファイル256枚、一枚あたり30kb位のファイルを
重ねる画像処理をpythonで行っているのですが
MemoryErrorがでて処理が止まります
画像処理の分野ではよくあることなのでしょうか
メモリ空きスロットが無いです
今までメモリ不足なんて無かったのですが
PC買い替えでしょうか?
134:デフォルトの名無しさん
22/06/20 11:06:40.33 VCuoWLch.net
>>131
エラーメッセージを読んでエラーの原因をまず確かめろ
ハード的なメモリ不足よりプログラムの書き方が悪い可能性のほうがはるかに高い
135:デフォルトの名無しさん
22/06/21 19:48:14.54 BPheRP/d.net
#次のような集合のリストのリストrを作りました:
r = [[set(range(1,4))]*3]*3
> print(r)
[[{1,2,3}, {1,2,3}, {1,2,3}],
[{1,2,3}, {1,2,3}, {1,2,3}],
[{1,2,3}, {1,2,3}, {1,2,3}]]
#上から2番目、左から3番目の集合を更新して要素を1のみとしました:
r[1,2] = {1}
#するとr[0,2]とr[2,2]も{1}になっちゃいました:
> print(r)
[[{1,2,3}, {1,2,3}, {1}],
[{1,2,3}, {1,2,3}, {1}],
[{1,2,3}, {1,2,3}, {1}]]
r[1,2]以外が変わった原因と、r[1,2]以外が変わらないような方法教えて下さい
136:デフォルトの名無しさん
22/06/21 20:00:56.97 BPheRP/d.net
>>133 訂正
r[1,2]じゃなくてr[1][2]でした (他同様)
137:デフォルトの名無しさん
22/06/21 20:03:33.86 nUT03NU2.net
deepcopyで検索ゥ
138:デフォルトの名無しさん
22/06/21 20:08:37.10 SE7t042v.net
[[set(range(1, 4)) in x for range(3)] in y for range(3)]
139:デフォルトの名無しさん
22/06/21 20:18:32.01 SH7wWIQd.net
>>133
多次元のリストを作るにはどうしますか?
URLリンク(docs.python.org)
140:デフォルトの名無しさん
22/06/21 20:18:51.87 BPheRP/d.net
>>136
ありがとうございます~forとin換えたら行けました
>>135
検索してdeepcopyの話かな?という所には辿り着きましたが適応の仕方がよく分かりませんでした 勉強しときます
141:デフォルトの名無しさん
22/06/22 11:44:54.88 EcTc17L7.net
ほとんどの言語は、shallow copy
実体をコピーしない。
ポインター・参照しかコピーしない
実体をいじると、それを参照している全ての参照に影響が出る。
実体を参照を通して見ているから
なかなか簡単には、deep copy できない。
参照のリンクを切り離せない
Elixir みたいな関数型言語は、
オブジェクトを更新できない(状態を持てない)から、
こういう問題はなく、安全にプログラミングできる
142:デフォルトの名無しさん
22/06/22 12:13:41.31 TN4B0obT.net
なんかさ、もううんこだよね
143:デフォルトの名無しさん
22/06/22 21:49:37.76 kEl16R0O.net
特定のフォルダ以下のサブフォルダから拡張子を取得して
指定したフォルダ下に拡張子のフォルダを作りたくて
下記のプログラムを書いたところで動作しましたが
os.makedirs文のみで完結する簡素な記述方法はありますか?
cd_path ← フォルダを作りたい場所
file_extension ← FOR文で取得した拡張子
path = os.path.join(cd_path, file_extension)
os.makedirs(path, exist_ok=True)
144:デフォルトの名無しさん
22/06/22 22:14:47.11 1aHzqpDi.net
>>141
回答になってないけど、初心者なら最初からpathlib覚えたほうがいいぞ
os.pathやglob.globはいろんな罠がある
あと、拡張子にはドットが含まれるから注�
145:モ
146:デフォルトの名無しさん
22/06/22 23:39:08.69 uPuQk0KY.net
みんな一時は罹ってしまうコードゴルフ
中二病にちかい
147:デフォルトの名無しさん
22/06/23 00:13:39.08 RPGBecSe.net
配列(array)の要素それぞれにリストを入れることは出来ない?
リストの要素それぞれに配列を入れることはできる?
でいいのかな?
148:デフォルトの名無しさん
22/06/23 00:24:13.97 RKdZXyYS.net
あまりやらないけれど
配列の要素はそれぞれ任意のものを入れられるから
最初に配列、次に文字列でもすきなクラスでも大丈夫
もちろんぜんぶ配列でもOK
149:デフォルトの名無しさん
22/06/23 10:12:12.29 bFbjfjx7.net
dictのキーにString型のリストとバリューにリストに入った多重結界みたいなデータ作ってjsonとして書き出すみたいな遊びだよね
150:デフォルトの名無しさん
22/06/23 14:55:17.55 EV0+4t37.net
URLリンク(github.com)
のunit_test1.pyの、一番基本的なtest_ayane1を通そうとするとプロンプトにtest_ayane1 : とだけ
でてwrite_workerの734行目のself.proc.stdin.flush()でスレッドが死んでるような?感じなのですが
試して原因を教えてくれる神はいませんか。
ちなみに呼び出すエンジン自体は別のソフトや、cshogiというこれと似たライブラリからの呼び出しでちゃんと
動作していることを確認しています。
151:デフォルトの名無しさん
22/06/23 15:04:04.22 Ukh7Grgr.net
判った
152:デフォルトの名無しさん
22/06/23 15:58:15.03 EV0+4t37.net
>>147
Python 3.7.13で、macOS12.4 Montley上です。
153:デフォルトの名無しさん
22/06/24 11:43:47.67 3JV7YPJq.net
socketのサーバー側で
i=0
while True:
data=soc.recv(受信サイズ)
if not data:
break
data_sum+=data
with open(f"保存するファイル名_{i}.zip",mode="ab") as f:
f.write(data_sum)
i+=1
みたいにするとクライアント側が送信したデータの他に数個のzipファイルが出来るんだけどこのデータの中身は何なんだろう?
zipfileで開こうとするとエラー出力しちゃう
変数iを使わずに受信するとクライアントが送信したデータだけが残るみたいだけど…
154:デフォルトの名無しさん
22/06/24 12:05:35.52 K2we1Lar.net
>>150
死ね
スレリンク(bizplus板)
155:名無し募集中。。。
22/06/24 13:18:15.52 d6WBxki6.net
FOR文の中にtqdm()を入れてみたんんですが
下記みたいなのしか表示されなくプログレスバーが表示されません
70786it [3:35:59, 1.94it/s]
なにが問題なんでしょうか?
156:デフォルトの名無しさん
22/06/24 14:31:40.66 yJmddVFh.net
実際のコードを書かないこと
157:ぴよ
22/06/24 14:59:09.01 XR8KeGTq.net
ほげほげ
158:デフォルトの名無しさん
22/06/24 19:30:36.14 n0/ceoPd.net
>>152
lenが不明なiteratorだとそうなる
tqdm(iterator, total=100)のようにする
159:デフォルトの名無しさん
22/06/24 23:45:09.14 /S8ogjuv.net
>>150
VSCode で、バイナリエディタの拡張機能・Hex Editor でも使って、バイナリとして見てみれば?
文字コードなどが不明なので、テキストとして見るには困る
適当に内容を作って、ファイルの拡張子を .zip にしても、
正しいZIPファイルの形式になるはずがないので、ZIPファイルとしては動作しない
各拡張子のファイルには、決められた構成があるため、
それに従っていない場合は、正常に動作しない
160:デフォルトの名無しさん
22/06/25 00:01:18.86 eoWHGkrH.net
Phil Katz に聞くべき
161:デフォルトの名無しさん
22/06/25 00:11:42.65 z9QRxAiq.net
降霊術を習得しないと
162:デフォルトの名無しさん
22/06/25 19:47:06.55 fwnfW89W.net
Pythonでsetの要素がイミュータブルでないといけないのはなぜですか?
a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 9]
S = {a, b, c}
a.append(0)
この状況で、
a in Sの値が偽になっても別に構わないと思います。
Sに登録した時点でのaは{1, 2, 3}だったわけですから、
d = {1, 2, 3}
d in Sが真になりさえすれば何もおかしなことはないと思います。
163:デフォルトの名無しさん
22/06/25 19:57:20.22 I0eUacPf.net
S = {a,b,c}
TypeError: unhashable type: 'list'
164:デフォルトの名無しさん
22/06/25 20:23:18.44 bZig/WUT.net
こういう馬鹿が辞書のキーにまでリスト入れたいとか言い出すんだろうな
165:デフォルトの名無しさん
22/06/25 20:26:09.88 gQjoPRQF.net
>>159
Pythonのオブジェクトは基本参照だし、setに突っ込んでもコピーされる訳じゃない
重複を許さないsetの要素が変更されたら保証できないし、比較のコストも考えたら…かな
166:デフォルトの名無しさん
22/06/25 20:36:01.58 9jpr7vFN.net
>>159
自作クラスとか、mutableでもsetに突っ込めるよ。
何か読み違えたのでは?
167:デフォルトの名無しさん
22/06/25 21:18:41 gQjoPRQF.net
>>163
本質的にはそうじゃない、ユーザークラスは既定でハッシュ化できるが
これは一般的な実装ではid()、即ちインスタンスアドレスに基づくもの
実質的に求められているのはハッシュの不変性であり、それならば通る
しかし同一性を内容で評価するなら意味は成さないのでlistだと未定義
データモデル曰く「クラスがミュータブルなオブジェクトを定義しており、
__eq__() メソッドを実装しているなら、 __hash__() を定義してはなりません。」
168:デフォルトの名無しさん
22/06/26 01:34:01.17 A2gDvo6x.net
やってやれないことはないけど
デメリットを打ち消すだけのメリットを見いだせなかったんでしょGuidoが
単に他の言語のdict/setに合わせただけかも知れんが
ともかく、真実が知りたかったら開発者に聞いてこいよ
169:デフォルトの名無しさん
22/06/26 07:16:45.51 eSuyoUi6.net
>>95
print('QHG pj.og.ldn.iakkok:etis'[::-1],
'/elpmis/pj.og.ldn.iakkok//:sptth'[::-1], sep='\n')
170:デフォルトの名無しさん
22/06/26 13:31:03.88 DTfGvOZF.net
ねんまつ
171:デフォルトの名無しさん
22/06/27 08:09:04 Zqv939YP.net
PCでのアプリ操作を自動化したいのですが、pyocrで文字認識して、内容によって判断し、pyautoguiでxy座標指定して、ボタン押すしかないでしょうか?
172:デフォルトの名無しさん
22/06/27 08:14:55.95 RN7qnQjk.net
物によるとしか言いようが無いな
173:デフォルトの名無しさん
22/06/27 08:17:13.06 RN7qnQjk.net
PyAutoGui でカバー出来るか出来ないかを判断してみたら?
174:デフォルトの名無しさん
22/06/27 18:27:20 3qzf3wBJ.net
以前MACにいれたpython3を削除できないです。
% rm -rf /usr/bin/python3
rm: /usr/bin/python3: Read-only file system
% sudo rm -rf /usr/bin/python3
Password:
rm: illegal option -- ?
usage: rm [-f | -i] [-dPRrvW] file ...
unlink file
原因わかる方いますか?
175:デフォルトの名無しさん
22/06/27 18:53:43.40 0yF6vhsn.net
>>171
sudoのほうは全角スペースが入ってるのが原因
176:デフォルトの名無しさん
22/06/27 19:05:21.65 a8sMrZjJ.net
172の優しさに感動
177:デフォルトの名無しさん
22/06/27 19:25:49.92 cL/RIHXE.net
そのpython入れたのはAppleだから通常起動したOSからは削除できない仕組み
消えたらOS内のスクリプトが動かなくなるよ
よかったねOSが壊れなくて
178:デフォルトの名無しさん
22/06/27 20:20:17.78 3qzf3wBJ.net
>>172
迅速なレスありがとうございます。
もう一度コメント打ちましたが同じ結果でした。全角は入ってないようです。
>>174
MACから元々インストールされているのはphyon2なので
Phyon3とは関係ない、削除しても問題ないと思うのですが..
URLリンク(i.imgur.com)
179:デフォルトの名無しさん
22/06/27 20:45:49.02 xsOnLI+U.net
>>175
何経由でインストールしたんだこれ
Homebrew使ってインストールしたなら
brewコマンド経由でアンインストール出来ない?
180:デフォルトの名無しさん
22/06/27 21:25:48.96 cL/RIHXE.net
>>175
python3入ってないmacOSってわりと古いよ?
ここ最近はpython2が逆に入ってない(公式サポート終わってるからね)
もし自前で /usr/bin にインストールしたってんならクラッカー気質あるわw
181:デフォルトの名無しさん
22/06/27 21:44:39.26 XFwxgXBL.net
>>175
同じ結果とちゃうやん
全角入ってた時とエラーメッセージ変わってるやん
どうしても削除したいならSIP無効にしてから削除で
182:デフォルトの名無しさん
22/06/27 22:13:08.24 3qzf3wBJ.net
>>175
追記 すみません自分の勘違いでこのpython3はデフォルトから入ってるファイルのようです。
>>177 さんの仰る通りでした。申し訳ありません。
そして再度インストールしようとhomebrewを入れpyenvを入れ
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
を追加し
source ~/.zshrcを実行してpython3.10.4をインストールするとうまくいきません。。おまかんなのでしょうか??
URLリンク(i.imgur.com)
183:デフォルトの名無しさん
22/06/27 22:13:29.06 3qzf3wBJ.net
>>178
申し訳ありません。
184:デフォルトの名無しさん
22/06/28 01:52:22.87 GjoTbrJZ.net
>>179
自決ですが、xcodeが古かったので新しいバージョンにいれた所無事インストールできました。
185:デフォルトの名無しさん
22/06/28 08:26:42.80 UgaAibo1.net
またしても犠牲者が。
pythonの乱用は精神に作用するのかもしれない
186:デフォルトの名無しさん
22/06/28 12:11:58.39 W8L8uteA.net
macのOS環境ごとふっとんで死ねば良いのに
187:デフォルトの名無しさん
22/06/28 12:22:02.22 SMUgtqGT.net
日本人が作った、多言語バージョンマネージャーのanyenv を使えばよい。
同様のツールには、asdf もある
nodenv, pyenv, rbenv,
exenv, goenv, tfenv など
node, python, ruby, elixir, go, terraform など
他には、Docker も多い
188:デフォルトの名無しさん
22/06/28 13:58:17.02 5S91HeIj.net
re.subで[]で囲まれた文字列の中を置換するとき、どんな記述をすればよいですか?
re.sub(r'\[.*c.*\], 'x', '[abcabc]abc')
期待する値
[abxabx]abc
189:デフォルトの名無しさん
22/06/28 14:07:39 N3XtpiKU.net
>>185
re.sub(r'\[[^\]]*\]', lambda m: m[0].replace('c', 'x'), '[abcabc]abc')
190:185
22/06/28 14:31:31.24 5S91HeIj.net
>>186
多謝!! そしてごめんなさい。良ければ解説を。
191:185
22/06/28 14:49:53.04 5S91HeIj.net
[]の中だけを対象にreplaceしているのは、なんとか分かるんですが、re.sub の第2引数、
lambda m: m[0].replace('c', 'x')
が何をしているのかわかりません(泣)
192:デフォルトの名無しさん
22/06/28 14:52:51.94 dX7Zsa+9.net
マニュアルを読もう
URLリンク(docs.python.org)
193:デフォルトの名無しさん
22/06/28 14:59:09.76 d3+RKzUY.net
repl が関数であれば~の下りね、m[g]はm.group(g)と同等
後読みアサーションに固定幅制約がないライブラリなら
面倒なことしなくても(?<=\[.*)c(?=.*\])で済みそうだが
194:デフォルトの名無しさん
22/06/28 15:42:31.79 5S91HeIj.net
re.sub(r'\[.*\]', lambda m: m.group(0).replace('c, 'x')
でlambda関数がヒットするたび呼ばれるわけか!!
仕組みは理解できました。
>>190
look-behind requires fixed-width pattern
に阻まれました。
195:デフォルトの名無しさん
22/06/28 19:31:26.15 mooH0Iqw.net
m.group はめんどくさい
findall の方が便利
196:デフォルトの名無しさん
22/06/29 07:52:27.56 9vdu/PbE.net
>192
re.findall だと re.sub のような仕掛けが利用できなくないですか?
>185 できますか??
197:デフォルトの名無しさん
22/06/29 10:56:55 CtIvUBkO.net
re.findallで[]付きとそれ以外に分けて処理
ちょっと長くなるけど色々応用がききます
# []の中だけreplace
>>>re.findall(r'\[[\w]+\]|[\w]+', 'a[abcabc]abc[abc]')
['a', '[abcabc]', 'abc', '[abc]']
>>>[m.replace('c', 'x') if m[0]=='[' else m for m in _]
['a', '[abxabx]', 'abc', '[abx]']
>>>''.join(_)
'a[abxabx]abc[abx]'
# []の中以外をreplace
>>>re.findall(r'\[[\w]+\]|[\w]+', 'a[abcabc]abc[abc]')
['a', '[abcabc]', 'abc', '[abc]']
>>>[m.replace('c', 'x') if m[0]!='[' else m for m in _]
['a', '[abcabc]', 'abx', '[abc]']
>>>''.join(_)
'a[abcabc]abx[abc]'
198:デフォルトの名無しさん
22/06/29 19:29:51.42 CtIvUBkO.net
完成形できました!記号が含まれていても[]がちゃんと閉じてなくても
ちゃんと閉じているのだけreplaceします
>>186が秀逸だけど、[]で囲まれていない方をreplaceするとなると
途端に難しくなるから、やっぱ私の方法が良いんじゃないでしょうかw
>>>re.findall(r'\[[^\[\]]*\]|[\[\]]*|[^\[\]]*', 'a[abcabc]abc[abc]')
['', 'a', '[abcabc]', '', 'abc', '[abc]', '']
>>>[m.replace('c', 'x') if m and m[0]=='[' else m for m in _]
['', 'a', '[abxabx]', '', 'abc', '[abx]', '']
>>>''.join(_)
'a[abxabx]abc[abx]'
# 文字列に記号が含まれていて[]がちゃんと閉じていなくても大丈夫
>>>re.findall(r'\[[^\[\]]*\]|[\[\]]*|[^\[\]]*', 'a[abcabc]abc[abc$$[abc]')
['', 'a', '[abcabc]', '', 'abc', '[', '', 'abc$$', '[abc]', '']
199:デフォルトの名無しさん
22/06/29 22:12:59.69 sd1PgpdM.net
見通し悪すぎて要件満たしててもレビューで蹴られるコード
200:デフォルトの名無しさん
22/06/29 22:25:07.73 TQFqK5Fi.net
ちゃんと閉じているの定義があやしい
[[abc]とか
201:デフォルトの名無しさん
22/06/29 23:13:54 CtIvUBkO.net
>>196 見通し良いでしょ、角カッコで囲まれた角カッコ以外 or 角カッコ or 角カッコ以外でfindallじゃん
角カッコしか出てこないじゃん、簡潔、シンプル、分かりやすい
>>197 良い指摘、アナタのおかげで改善されました^^
>>>re.findall(r'\[[^\[\]]*\]|[\[\]]*?|[^\[\]]*', 'a[abcabc]abc[[abc]')
['', 'a', '[abcabc]', '', 'abc', '', '[', '[abc]', '']
202:デフォルトの名無しさん
22/06/30 02:06:34.63 HSayXmFT.net
kazuyuki
203:デフォルトの名無しさん
22/06/30 20:55:30.42 QXLJbWFQ.net
ナンプレのゲーム作りたい
縦横はチェックする方法わかるが
3x3マスの部分だけ配列で考える方法がわからない
↓までは考えたんだが方向性が違う気もする
URLリンク(techiedelight.com)
9進法から3進法への変換がベース(ただし3進法は0から始まる)
for x in range(81)
x // 3
x % 3
3桁目に入る場合、1桁目に(3桁目)*3が足される
10 (1,0,0)→(0,3)
4桁目に入る場合、2桁目に(4桁目)*3が足される
28 (1,0,0,0)→(3,0)
204:デフォルトの名無しさん
22/06/30 21:46:07.32 0uxZVqVl.net
簡単なのは3x3を座標系とは別の9マスの配列の配列として保持
置いたとき�
205:ノ縦横とは別にその配列へ反映させる 縦横も同じ手法をとると統一感ある コード上は9マスの配列はクラスにするかも
206:デフォルトの名無しさん
22/06/30 22:01:04.82 zKJ67H3+.net
5桁8色のhit&blowを造りたい
人間が設問してpythonに解かせたい
207:デフォルトの名無しさん
22/07/02 07:54:20.82 oFwScFTn.net
>>201
既存の座標系にこだわらないほうがいいか
ありがとう
ナンプレのゲーム作りたいから手始めにナンプレを解くプログラムの検証をしてたんだけど
URLリンク(techiedelight.com)
37行目の部分ってどうなってるの?
再帰関数なのはわかるんだけど、if文の中で再帰してるじゃん
def 関数():
if 再帰関数():
retrun Ture
retrun Flase
208:デフォルトの名無しさん
22/07/02 09:00:34.91 Zph8lW04.net
>>203
再帰だけどやってることは探索のための分岐
rangeの列挙からcontinueされなかった分を順番に分岐してて
呼んだ先で18-20にひっかかると中断して最初の呼び出しまで戻ってる
deepcopyしてるところが富豪的だけどシンプル
209:デフォルトの名無しさん
22/07/02 09:39:17.61 EefHjxyZ.net
>>204
この37行目
if set_num(ndata, idx + 1): return True
これを
set_num(ndata, idx + 1)
に変えてみたんだけど結果変わらなかった
if の中に入れる意味あるの?
210:デフォルトの名無しさん
22/07/02 09:44:12.51 EefHjxyZ.net
答えが出た後も探索しちゃうからそれを止めるための処理ってことか
211:デフォルトの名無しさん
22/07/02 09:57:44.64 COZLaCzb.net
ninbe
212:デフォルトの名無しさん
22/07/11 12:19:00 aiHSnYNz.net
google colabでcuda使いたい。
良い方法ある?
213:デフォルトの名無しさん
22/07/11 12:19:00 aiHSnYNz.net
google colabでcuda使いたい。
良い方法ある?
214:デフォルトの名無しさん
22/07/11 12:39:20.78 L4tB3bvp.net
金払ってないのか?
215:デフォルトの名無しさん
22/07/11 14:48:46.26 aiHSnYNz.net
>>210
colabはdjangoやfraskができないっぽいからやってない。
もしdjangoが使えるならお勧めあったら教えてほしいっす!
vsかチャームか、atomか・・・。
216:デフォルトの名無しさん
22/07/11 15:51:00.64 EGP2A4JX.net
好きなテキストエディタないの?それで基本いいんだけど
拘りないなら拡張とユーザ数からvscodeでいいんじゃない
PyCharmはリファクタまわりが優れているけど必須じゃないし
Atomはオワコン
217:デフォルトの名無しさん
22/07/11 17:35:44.11 rDGcpouH.net
vsもマイクロソフト以外のプラグインが信用出来ないからあまり良いとは言えないかなー
218:デフォルトの名無しさん
22/07/12 00:04:57.18 eIaiUALg.net
文字列~~~ID123456.text
みたいなファイルからID123456だけを抜き出したいんだけど、どんな方法がある?
IDの後には必ず数字がきて、桁数はかならず6
219:デフォルトの名無しさん
22/07/12 00:06:23.62 eIaiUALg.net
補足
IDが書かれてる場所はファイルによって異なる
文字列~~~ID123456文字列~.text
ID123456文字列~~~.text
みたいなときもある
220:デフォルトの名無しさん
22/07/12 02:57:47 yBYukR5V.net
>>214
普通は正規表現でも使うのかな
俺は正規表現使えないからこう書く
from pathlib import Path
p="C:\abc\あいうID1234567XYZ.text"
print("ID" + Path(p).stem.split("ID")[1][:6])
221:デフォルトの名無しさん
22/07/12 08:19:17.52 hTnf4I/y.net
>>215 正規表現を制する者は文字列を制する、他の言語でも仕様はほぼ同じ、覚えて損は無し
>>>import re
>>>s='''文字列~~~ID123456文字列~.text
・・・ID789012文字列~~~.text
・・・みたいなときもある'''
>>>re.findall(r'ID\d{6}', s)
['ID123456
222:', 'ID789012']
223:デフォルトの名無しさん
22/07/12 10:53:36 eIaiUALg.net
>>216>>217
ありがとうございます、勉強になります
224:デフォルトの名無しさん
22/07/12 20:48:55 gRW1mfOh.net
例外処理ってどう使えばいいんだろ
スクレイピングしてあるサイトのデータ拾いに行って
”データ”がある場合に代入となるんだけど
拾いに行くページによって、その行自体がなくてエラーになってしまうんだよな
if Data[0][0] == ”データ”:
s = Data[0][0]
Data[0][0]がそもそも存在しない時にエラーにならないよう例外処理を使うといい、ぐらいまでは調べたんだけど
書き方がよくわからない
225:デフォルトの名無しさん
22/07/12 21:11:11 hTnf4I/y.net
>>218
より具体的な例としてC:/hogehogeディレクトリ内の全ファイルのファイル名からIDを抜き出します
>>>import pathlib, re
>>>src = pathlib.Path('C:/hogehoge')
>>>list(src.glob('*')) #ファイル確認、この例ではディレクトリ内にファイルが2つあります
[WindowsPath('C:/hogehoge/ID789012文字列~~~.text'), WindowsPath('C:/hogehoge/文字列~~~ID123456文字列~.text')]
# 以下、ID抜き出し処理
>>>l = [re.findall(r'ID\d{6}', f.name) for f in src.glob('*')]
>>>l
[['ID789012'], ['ID123456']]
>>>sum(l, []) #フラット化
['ID789012', 'ID123456']
226:デフォルトの名無しさん
22/07/12 21:56:43.39 UQgGu1pu.net
>>219
データがなかった場合にどう処理したいのかによって
例外処理にするのかif-elseみたいな分岐処理にするのかを選択する
スクレイピングの場合は対象データがなかったら
何も処理しないとか空文字とかのデフォルト値を入れる場合が多いんだけどそのやり方もいろいろ
if-elseで簡易的な関数にした例
def extract(html, selector, fn, default=""):
return fn(element) if (element := html.select_one(selector)) else default
def extract_text(html, selector, default=""):
return extract(html, selector, lambda x: x.text.strip(), default)
def extract_link(html, selector, default=""):
return extract(html, selector, lambda x: x.get('href'), default)
227:デフォルトの名無しさん
22/07/12 22:40:42.84 xLkMA/UK.net
>>219
スクレイピングでたとえると
途中の要素が取得できないと結局な結果が得られないのでその場でプログラム終了する
とすると、取得失敗の都度ifでsys.exit()と書けはする
ここで終了前になにかメッセージ出力したり上位の関数にエラーで戻ったりアレコレしたいとすると
共通化したくなり例外以外では見通しが悪く書きにくい
そういうのもうまく関数設計すれば書けはするけど
Pythonは標準の操作(Data[0][0] とか)で例外あげる場面が多いので例外に寄せる方が楽
228:デフォルトの名無しさん
22/07/13 20:23:40.86 EtP8dxEe.net
Pythonのトップ・キノコードがキノクエストと言う、Pythonの学習サービスを作った!
229:デフォルトの名無しさん
22/07/13 22:27:14.03 XjBOe/Qa.net
s = ’aaa bbb ccc ddd’
という文字列を
s = ’[aaa],[bbb],[ccc],[ddd]’
という文字列にする方法って
s.split()
で一度リストにして
for文内で新しいリストにappendとか使って [ や ] や , をリストの要素として追加して
そのリストをまた文字列に戻すって方法しか思いつかないんだけど、他にあるかな?
230:デフォルトの名無しさん
22/07/13 22:38:12.38 ZiN6uKeA.net
>>224
s = '[' + s.replace(' ', '],[') + ']'
231:デフォルトの名無しさん
22/07/13 22:42:11.0
232:0 ID:tPrODk9K.net
233:デフォルトの名無しさん
22/07/13 22:43:26.48 tPrODk9K.net
かぶったし打ち間違いあるしスマホでコード書くの合わないな…
234:デフォルトの名無しさん
22/07/13 22:44:17.92 hJXXd+YV.net
“,”.join(map(lambda x:f”[{x}]”, s.split(“ “)))
そらで書いてるから動くか分からんが、こんな感じ
235:デフォルトの名無しさん
22/07/13 22:46:15.33 tPrODk9K.net
あと方法としてはjoin使うのとリストをそのまま文字列にするのができる気がする
236:デフォルトの名無しさん
22/07/13 22:53:13.90 XjBOe/Qa.net
>>225-229
マジか
思いつかなかった
237:デフォルトの名無しさん
22/07/13 23:08:11.77 Hjnw35/j.net
教科書的に書くとつまらんな
','.join(f'[{x}]' for x in s.split(' '))
238:デフォルトの名無しさん
22/07/14 10:16:40.49 dxotV0yq.net
くだらんすれ
239:デフォルトの名無しさん
22/07/14 11:38:32.14 3XfxOzel.net
python使い始めて何年も経つが
‘,’.join(…)書くたびにクソコード書いてんなと思う
240:デフォルトの名無しさん
22/07/14 12:12:10.59 mZF8rPll.net
>>233
よく言われるけど、私はPythonスタイルが好きだな
文字列にするのだから文字列のメソッドであるべき
ちゃんと議論されてRubyスタイルは否定されてんだよね
URLリンク(www.lifewithpython.com)
241:デフォルトの名無しさん
22/07/14 16:24:53.41 NrPRW2+E.net
>>234
読んだけど結構乱暴な議論だな
> 文字列にするのだから文字列のメソッドであるべき
数字かどうかを判定するisdigit()をboolのメソッドにしろってか?w
242:デフォルトの名無しさん
22/07/14 16:42:14.94 VCUQdsgR.net
>>234
じゃsplitはリストにするのだからリストのメソッドであるべきだなw
ちゃんと議論ww
243:デフォルトの名無しさん
22/07/14 17:24:02.64 TABkZ95a.net
Pythonって何故だかこういうエクストリームな擁護者が他言語に比べて多いんだよなぁ
どの言語にも良い点悪い点はあるのになんでなんだろ?
244:デフォルトの名無しさん
22/07/14 17:57:33.90 mZF8rPll.net
エクストリームな擁護ならRubyの右に出るものはないよ
「日本人ならRuby」「楽しいからRuby」だもん、初めて聞いた時は寒気がしたね
RubyじゃなくてPython選んでマジで良かった、Python最高!
joinもsplitの話ももう出尽くしているから、勝手にググってフンガーって発狂しててよ
私に言われても困っちゃうし、公式で結論出ているのだからそれで理解できないなら素養が無いよ
245:デフォルトの名無しさん
22/07/14 18:15:53.09 ObgbLbGZ.net
あ~あ、みんな寄ってたかって叩くからファビョっちゃったじゃん
246:デフォルトの名無しさん
22/07/14 18:18:53.53 ATT2arO1.net
>>237
pythonのスレ(しかも超初心者用)で言うことですか?
247:デフォルトの名無しさん
22/07/14 18:40:20.64 NYmoorKP.net
超初心者に変な常識を植え付けないように色んな意見のレスがあっていいと思うよ
変だと思う人も居るんだなということを知ってて損は無い
超初心者だと他言語における常識を知る機会も無いし
248:デフォルトの名無しさん
22/07/14 19:04:20.42 ji0JpZgM.net
>>238
> 私に言われても困っちゃうし
これお前の意見だろ?
> 文字列にするのだから文字列のメソッドであるべき
リンク先も公式もそんなアホなことを言ってないぞw
249:デフォルトの名無しさん
22/07/14 19:09:23.50 mZF8rPll.net
>>242
ひゃーファビョッちゃってるぅーw
素養も読解力も無いことをアピールされましても困りますw
250:デフォルトの名無しさん
22/07/14 19:51:42.67 /4X/rYOa.net
>>243
レスするならちゃんと反論したら?
読解力ガーとか低脳が顔真っ赤になりながらレスしても虚しいだけだろw
251:デフォルトの名無しさん
22/07/14
252:20:59:57.30 ID:jjxIhgjT.net
253:デフォルトの名無しさん
22/07/14 21:03:26.05 mZF8rPll.net
>>244
IDコロコロ変えるコロ助が何をファビョってんの?w
もう>>238で終了してんだよ、公式読んで理解できないなら反論も糞も無いじゃんw
認めたくないだろうけど、そこは認めようよ、君は低能だから理解できなわけよww
別に理解できなくてもいいじゃん、joinって変だな、何でなんだろう?ってずーっとファビョってればいいじゃん
こういう経緯でこうなってんだよってリンクまで貼ってんのに、それで理解できずにそんなことなーい!って
言われてもさ、公式に文句言えばいいじゃん、ほんと低能だなぁーw 何と戦ってんの?w
254:デフォルトの名無しさん
22/07/14 21:41:30 1UfgY23j.net
>>246
どっちが読解力ないだか...
もう一度書いとくね、
> これお前の意見だろ?
>> 文字列にするのだから文字列のメソッドであるべき
公式もリンク先も関係なくお前がアホなだけw
255:デフォルトの名無しさん
22/07/14 21:53:51.76 GadqcTvG.net
これ読むと>>237に同意せざるを得ないな
URLリンク(stackoverflow.com)
256:デフォルトの名無しさん
22/07/14 22:25:47.47 mZF8rPll.net
>>247
うん?じゃあ文字列のメソッドでなくてもいいの?
どーやったらそう読めるんだよwwwwバーーカwww
257:デフォルトの名無しさん
22/07/14 22:56:25.17 vHzneFGJ.net
>>249
まだ恥の上塗りするのかよw
「文字列にするのだから」がアホだって話な
>>235-236 のツッコミみたら普通わかるだろ
258:デフォルトの名無しさん
22/07/14 23:02:08.05 53iLOIJP.net
わざと馬鹿のフリしてんのかな?どっちにしても馬鹿にしか見えないが。
259:デフォルトの名無しさん
22/07/14 23:02:36.06 pmXXTX87.net
読んだけどseqは引数な方が良いってだけで
> 文字列にするのだから文字列のメソッドであるべき
こんなこと書いてない
260:デフォルトの名無しさん
22/07/14 23:04:03.42 mZF8rPll.net
>>250
君が読解力無いのは分かったから、それよりIDコロコロ変えているのバレちゃったねw
>>247の「もう一度書くね」でヘマしちゃったのはやっぱりファビョってるからなの?ww
これ全部オマエだろ、何連投してんだよw顔真っ赤なのどっちだよって話だよ
いやー自作自演バカって本当にいるんだなぁー アホなりに頑張ってるのは分かるけど低能だから
全部台無しだわぁ~ww アホだからすぐバレちゃうwww
そのIDコロコロ変えるようになった経緯を思い出せよ、まともにやるとすぐ負けちゃうからだろ?
自作自演で勝ってる感が欲しかったけど、それも手に入りませんでしたぁ~w 恥の上塗りって
自分のこと言ってんのかよww 全部ブーメラン!おまえは民主党かよってw
261:デフォルトの名無しさん
22/07/15 01:28:28 wi0x7exo.net
すごいチー牛顔引き攣らせて笑ってそう
262:デフォルトの名無しさん
22/07/15 03:30:42.52 MdZ2tfzQ.net
>>253
とうとう壊れちゃったw
263:デフォルトの名無しさん
22/07/15 07:32:09 mXh/FC5X.net
なんかこわい
264:デフォルトの名無しさん
22/07/15 12:20:14.72 Y2OiW31R.net
こんな人生終わってそうな社会不適合者でも稼げちゃうのがIT業界なんだよな
人生終わってそうな外見のやつばかりなのに、金が稼げるからジョーカーみたいなのが生まれにくい
265:デフォルトの名無しさん
22/07/15 14:11:44.43 78D2/2K4.net
iterableを定義してそこにjoinメソッドを追加するだけでよかったのにね
joinメソッドは今どきこんな設計する人がいたらすぐ外されても文句言えないレベル
266:デフォルトの名無しさん
22/07/15 14:28:12.17 MVHCgXBf.net
当人ちゃうけどまず >>234 のリンク先読んどこう
267:デフォルトの名無しさん
22/07/15 15:21:03.77 cpkuMkfN.net
俺も当人ちゃうけどそのリンク先読んでも>>258に同意するわ
268:デフォルトの名無しさん
22/07/15 15:35:58.33 rlSsskU5.net
ずいぶんとお利口な超初心者の集まりだこと…
269:デフォルトの名無しさん
22/07/15 15:52:36.65 cpkuMkfN.net
超初心者が質問できるスレであって住人全員が超初心者というわけじゃないよ
270:デフォルトの名無しさん
22/07/15 17:56:14 qGSK8RbV.net
メーリングリストのログ追ってみたが議論らしい議論は全くなかったぞコレ
Tim Petersが案をだして、じゃそれでくらいのノリ
271:デフォルトの名無しさん
22/07/15 19:33:17.31 5LwbToQX.net
悲しいとき~、悲しいとき~、不毛な努力をしているアホをみたとき~
272:デフォルトの名無しさん
22/07/15 21:59:49.41 Mg+hVTQU.net
少し内容がずれているかもしれませんが質問させてください。
Windows10で右クリック-新規作成で空のpythonファイル(.py)を作成するようにしたいのですが、
何か方法はありますでしょうか?
下記のURLを参考にしてレジストリを変更する方法を調べて実行したのですが、反映しません。
URLリンク(qiita.com)
教えていただきたく。よろしくお願いします。
273:デフォルトの名無しさん
22/07/15 23:42:53 Fa+NFDEY.net
>>258
実際bytesとかでjoin相当のことをしようとしたらどうすればいいんだろう?itertools使えばなんとかなりそうだけど
274:デフォルトの名無しさん
22/07/16 00:03:25 HB6roBeY.net
__add__かjoin専用メソッドがある前提でひたすらinject
それらが型変換できないケースだと失敗とか
275:デフォルトの名無しさん
22/07/16 00:23:45.26 fjBrDVen.net
>>265
少なくとも今試しても記事の通りできた
詳しくどうやったか開示しないと分からん
276:デフォルトの名無しさん
22/07/16 10:38:02.22 5edRFReA.net
>>268
詳しくといっても難しいですが
pythonはAnacondaでインストール。
新規pyファイルはサクラエディタと紐づいています。
277:デフォルトの名無しさん
22/07/16 14:30:48.70 7RINBtm9.net
>>269
そしたらサクラエディタに関連付けしてるからだろうね
新規作成は関連付けされてるアイコンとファイルタイプ名称で表示される
278:デフォルトの名無しさん
22/07/16 16:20:01.38 ck4+820Y.net
なんでこうなるのかわからない
_, *elements , _ = [1, 2, 3, 4, 5, 6, 7, 8]
print(elements) # [2, 3, 4, 5, 6, 7]
print(type(elements)) # <class 'list'>
elements_B = [1, 2, 3, 4, 5, 6, 7, 8]
B = _, *elements_B, _
print(B) # (8, 1, 2, 3, 4, 5, 6, 7, 8, 8)
print(type(B)) # <class 'tuple'>
279:デフォルトの名無しさん
22/07/16 16:34:54.36 730D9OZt.net
print(_)してみたら
280:デフォルトの名無しさん
22/07/16 16:56:27.29 ck4+820Y.net
ああ、理解したわ
a, b, c = 1,2,3
a=1
b=2
c=3
ってのと変わらんのか
a, *b, c = 1,2,2,2,2,3
a=1
b=2,2,2,2
c=3
みたいなことか
281:デフォルトの名無しさん
22/07/16 19:51:21.14 GdTpN6Df.net
bytes で join ってさ
b''.join(bytes_data)
で良いんじゃね
282:デフォルトの名無しさん
22/07/17 11:57:25.95 VAtjDotR.net
2^26倍精度浮動小数点数の最大値
(2^((2^(111-1))-1))*(2-(2^-2147483536))
URLリンク(ideone.com)
は計算できるが、
2^27倍精度浮動小数点数の最大値
(2^((2^(115-1))-1))*(2-(2^-4294967180))
URLリンク(ideone.com)
は誤差が出て計算できない。
何とかならない?
283:デフォルトの名無しさん
284:
emaxの最大値は999999999999999999みたいだからどうにもならんのでは
285:デフォルトの名無しさん
22/07/17 15:02:05.03 QiBhjgar.net
emacs
286:デフォルトの名無しさん
22/07/17 15:16:14.73 VAtjDotR.net
>>276
10^10^100000
URLリンク(ideone.com)
287:デフォルトの名無しさん
22/07/17 15:22:34.18 QiBhjgar.net
>>266
>>274
URLリンク(ideone.com)
# joinの問題と言うよりもlist(b'hoge')の方に問題が在る訳だな
288:デフォルトの名無しさん
22/07/17 15:44:47.39 7GRljLrT.net
def f(a):
return a+1
a=[1,2]
print(f(a))
>[2,3]
みたいなことがやりたいんですが、
関数にまとめてデータを渡して処理してもらうようなことはできないでしょうか
本来はf(1),f(2)とするところです
数が多ければforで回すのですが、まとめてどさっと渡したいです
289:デフォルトの名無しさん
22/07/17 16:13:54.34 eihDCF0F.net
>>280
URLリンク(www.tech-teacher.jp)
290:デフォルトの名無しさん
22/07/17 17:40:51.90 mQpJsc2r.net
何だこの記事は
291:デフォルトの名無しさん
22/07/17 17:47:08.08 GTQ/Lt+k.net
>>279
なるほど。strをバラしてもstrだが、bytesはバラすとintになってしまうということか。
まあ、実用上は問題ないかなあ。というかここを崩すとbytesを1バイトずつバラしてjoinするという殆どしない操作のために、
strとbytesの実用性がかなり失われるよね
292:デフォルトの名無しさん
22/07/17 17:58:37.99 Fxi+TDuE.net
>>280
素直にnumpy使う
ではツマランのでこんなのはどうだろう
def matome(func):
__def process(*list_args):
____return [func(*args) for args in zip(*list_args)]
__return process
@matome
def f(a):
__return a+1
a = [1, 2, 3]
print(f(a))
293:280
22/07/17 18:36:03.96 jWrWgoZv.net
なるほど、map関数や*list_argsなどのやり方があるのですね
これはどちらもforよりは軽くなりそうな感じはします
>>284
素直にnumpy、がそもそもわかってないのですが、教えていただけませんか?
294:デフォルトの名無しさん
22/07/17 19:23:47.87 pr2Iyzs9.net
>>284
無駄な処理があるので修正しときますね
def matome(func):
____def process(list_arg):
________return [func(list_item) for list_item in list_arg]
____return process
>>285
ググレば一発で出てきますよー
import numpy as np
a = np.array([1,2,3])
a+1
_.tolist()
295:デフォルトの名無しさん
22/07/17 19:47:38.44 Fxi+TDuE.net
>>286
それだとfの引数が増えた時に対応できない
296:デフォルトの名無しさん
22/07/17 20:59:15.42 4v0QWrzY.net
mapと内包表記どっちが軽いんだろ?
a=[1,2]
b=[i+1 for i in a]
これで終わる話ではあるよね
297:デフォルトの名無しさん
22/07/17 21:23:00.57 zoulLgXv.net
話を単純化して話してんだろ
一般的な解があるほうが親切
298:デフォルトの名無しさん
22/07/17 21:25:35.67 pr2Iyzs9.net
>>287
なるほど、f([1,2,3],[4,5,6]) → [5,7,9] とかにするならmatomeはそのままで
def f(*a):
__return sum(a)
で対応できるけども、しかし! 引数が1つの場合が f([1,2,3]) → [2,3,4] であるならば、
引数が2つの場合、f([1,2,3],[4,5,6]) → ([2,3,4], [5,6,7]) となるのが自然ではなかろうか?
であるとするならば、fはリストの各要素の計算でありそのままにして、matomeを改造する必要がある
299:デフォルトの名無しさん
22/07/17 21:31:17.15 LbIjTSt1.net
>>289
どれに対しての話?
300:デフォルトの名無しさん
22/07/17 21:38:02.50 Rw0hMsrD.net
>>290
sumでない場合は?
たとえばa1*a2+a3みたいな一般式もありう
301:るよね
302:デフォルトの名無しさん
22/07/17 21:38:57.48 Rw0hMsrD.net
というか、ただのsumなら普通は関数にぶっこまないよね
303:デフォルトの名無しさん
22/07/17 21:43:59.07 pr2Iyzs9.net
リストの各要素に1足すだけの場合も普通に関数にぶっこまないけどな
304:デフォルトの名無しさん
22/07/17 22:12:41.33 pr2Iyzs9.net
>>292
matomeのデコレータ付けるだけで色んな一般式を適用した関数が簡単に作れるってことね
はいはい、理解しました
fをそのまま可変にすることばかり考えてたわ
305:デフォルトの名無しさん
22/07/17 22:43:41.36 Xin01ayH.net
zipするのは違うと思うけどな
306:デフォルトの名無しさん
22/07/18 09:21:19.20 4im9UY7E.net
>>286
教えてくださりありがとうございます
>>284のほうが拡張性があって気に入りました
やりたいことはできそうです
ありがとうございました
307:デフォルトの名無しさん
22/07/18 10:01:23.22 4lWXgehE.net
f(a,b,c) -> rをリスト用にリフトするなら
f'([(a1,b1,c1), (a2,b2,c2),(a3,b3,c3)…]) -> [r1,r2,r3,…]
f'(([a1,a2,a3,…], [b1,b2,b3,…], [c1,c2,c3,…])) -> [r1,r2,r3…]
にするのは筋が悪い
308:デフォルトの名無しさん
22/07/18 10:22:26.91 q/MsDqBP.net
>>290の完成イメージ
def get_list_items(func):
____def process(*lists):
________ret = tuple([func(item) for item in lst] for lst in lists)
________return ret[0] if len(ret) == 1 else ret
____return process
@get_list_items
def f3(item):
____return item+1
f3([1,2,3],[4,5,6],[7,8,9]) → ([2, 3, 4], [5, 6, 7], [8, 9, 10])
f3([1,2,3],[4,5,6]) → ([2, 3, 4], [5, 6, 7])
f3([1,2,3]) → [2, 3, 4]
なるほど、この場合は可変にする必要性をあまり感じないね
f3([1,2,3]), f3([4,5,6]), f3([7,8,9])って個別に呼べばいいだけだし
>>284の方が断然優れていますわ
309:デフォルトの名無しさん
22/07/18 10:36:45.20 E3N1Hbif.net
個別に呼ぶよりまとめて呼んだほうが処理が軽いんじゃないの
310:名無し募集中。。。
22/07/18 10:39:15.32 kc1Sb0dj.net
FOR文でフォルダ以下のサブフォルダの中のファイルを
拡張子毎に振り分けるプログラムを作ってみましたが
1ファイルを移動するのに1秒くらいかかってしまいます
shutil.move(FFF, KKK) (FFFとKKKは変数)
この文を削除するとものすごく早くなります
どうすれば早くなりますか?
311:デフォルトの名無しさん
22/07/18 10:44:27.05 E3N1Hbif.net
でもあれか、matomeをつけてfを宣言してしまうと、普通にfを使うことができなくなってしまうのか
このへん関数を呼ぶときにmatomeをつけるかどうかで使い分ける方法ないのかな
312:デフォルトの名無しさん
22/07/18 10:54:26.68 Tf87Irt3.net
>>302
ごく素直に、fはデコレーターを付けずそのまま宣言する
matomeを適用する関数はf_matome = matome(f)と定義する
313:デフォルトの名無しさん
22/07/18 11:04:03.01 q/MsDqBP.net
>>302
デコレータ付けた関数はまとめてモジュール化するのが一番良いと思う
list_func.f([1,2,3])