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

■ このスレッドは過去ログ倉庫に格納されています
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 ###
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
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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