[過去ログ] Pythonのお勉強 Part74 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
576: (ワッチョイ 0301-B2gY) 01/25(土)17:05 ID:I/LFBEOt0(1)調 AAS
逆回しにしたところでリストの場合は途中の要素を削除したらそれ以降の要素(のポインタ)をコピーして詰める必要があるから非効率なんだよね
577: (ワッチョイ f354-Be6J) 01/25(土)17:19 ID:YBOPAb6b0(3/3)調 AAS
どう考えもバグりやすいし、大丈夫だと判っても他人や未来の自分は不安だし、
理解するのも時間かかるし、何もいいことがない
時間がかかったとしても、判りやすく堅牢な方法で書いて、
速度で困った時に初めてトリッキーな方法を検討する
578: (ワッチョイ 6fb3-3anD) 01/25(土)19:02 ID:ue9pmKTV0(1)調 AAS
for i in original_list[:]:
some_process( i )
みたいな感じでやるんじゃなかったっけ。
特に問題がないケースなら、
res = []
for i in original_list:
some_process( i )
と新しいリストを作ってsome_processの中で適宜res.appendする方が分かりやすいかなと思う。
579: (ワッチョイ b69f-19vF) 01/26(日)00:49 ID:tS9IC3AC0(1)調 AAS
ソースが巨大なら印だけつけてあとで一括削除
580: (ワッチョイ 8754-5CbQ) 01/26(日)08:01 ID:W6rEvGvT0(1)調 AAS
対象を直接操作して一括で削除するアルゴリズムってどんなの
581: (アウアウエー Sa52-FFa5) 01/28(火)10:16 ID:dqvH8r5Ca(1)調 AAS
循環参照ありのRCGC
582: (ワッチョイ 0ec0-natb) 01/28(火)10:44 ID:jWrC9Jca0(1)調 AAS
それリストの話じゃなくなってるやん
583: (スップ Sd5a-ejc7) 01/28(火)16:47 ID:GmSjCRuqd(1)調 AAS
去年poetryでやってたけど
uv圧倒的に速いな
584(2): (ワッチョイ 9a6a-cjCd) 01/30(木)17:48 ID:VLQDVSyo0(1)調 AAS
光る君への公式ホームページが31日で消去されるから保存したい
シンプルだしwgetでいけるかと思ったら表示にjavascript使ってるから
それのせいで保存できなかった
調べていくうちにpythonとヘッドレスブラウザを利用する方法があると知った
しかし、プログラミングのプの字もさっぱりです。pythonも昨日インスコしたばっかり
pythonとヘッドレスブラウザを利用した方法、解説されているようなサイトやヒントご存じでしたら教えてください
585: (ワッチョイ de01-M74Q) 01/30(木)18:08 ID:+zNA14SN0(1)調 AAS
まるっとローカルに保存してくれるツールを買え
586: (スップ Sd5a-ejc7) 01/30(木)18:13 ID:x7iBFXJ9d(1/2)調 AAS
>>584
https://ja.m.wikipedia.org/wiki/波乗野郎
587: (スップ Sd5a-ejc7) 01/30(木)18:14 ID:x7iBFXJ9d(2/2)調 AAS
>>584
PerMan Surfer 波乗野郎でごっそり保管
https://ja.m.wikipedia.org/wiki/波乗野郎
588: (ワッチョイ 1a9f-M+tv) 01/30(木)18:27 ID:lxoi8Hgj0(1)調 AAS
HTTrackのProxyTrackつかうのがええんでは
589: (ワッチョイ 8754-5CbQ) 01/30(木)19:59 ID:rlxtAv1y0(1)調 AAS
画像だけ全部落としたい、みたいな時も大抵は汎用ツールは使えなくて、
サイト毎に特化したのを作るな
サイトまるごとだとさらに難易度が上がる
リンク先は含めるのかみたいな判断付かない問題が出てくる
外部サイトは含めないとしたくても、ページの内容が複数のサイトで構成されてたりする
590: (アウアウエー Sa52-FFa5) 02/01(土)12:23 ID:Dm0gVBeEa(1)調 AAS
imgタグもファイル名とかじゃなくてbase64で展開されてたりするよな
591: (ワッチョイ 3f3d-ZuVD) 02/03(月)09:45 ID:gwlnb/NB0(1/3)調 AAS
data1からdata2に変換したい。
data1=b'Z\x00V\x00-\x00E\x001\x000\x00\x00'
data2="ZV-E10"
data1はバイナリデーターで元はtcpのパケットの一部。
(英数+x00) (英数+x00) (英数+x00) ・・・・
というふうになってる。
592(1): (ワッチョイ 7f45-+jK0) 02/03(月)10:56 ID:CGp2zuw30(1/3)調 AAS
変換したいのならすればいいじゃない
593: (ワッチョイ 3f3d-ZuVD) 02/03(月)12:03 ID:gwlnb/NB0(2/3)調 AAS
>>592
どうやって?
594(1): (ワッチョイ 3f9f-UQx/) 02/03(月)12:46 ID:eVgE9/na0(1/2)調 AAS
https://docs.python.org/ja/3.13/library/stdtypes.html#bytes
bytesはバイトのシーケンスだから好きにすればいいけど
一見UTF-16LEにもみえるから
data2 = data1.decode('utf-16le', errors='ignore')
でもいけそう
595: (ワッチョイ 7f45-+jK0) 02/03(月)12:46 ID:CGp2zuw30(2/3)調 AAS
えー
置換すりゃあいいじゃん
文字列短いかいならsplit/joinでもまあいい
596: (ワッチョイ 7f45-+jK0) 02/03(月)12:48 ID:CGp2zuw30(3/3)調 AAS
たよねー
俺もnull終端させたutf16-leだと思う
ignoreせずにstripしてからdecodeかな
597: (ワッチョイ 3f3d-ZuVD) 02/03(月)14:44 ID:gwlnb/NB0(3/3)調 AAS
>>594
THXです。
できました。
598: (ワッチョイ 3f9f-UQx/) 02/03(月)15:00 ID:eVgE9/na0(2/2)調 AAS
596さんが書いてるけどignoreだと不正なシーケンスに弱いから
末尾0か確認してスライス[:-1]で削るのが手堅いよ
安価なかったので心配
599: (アウアウエー Sabf-J/8e) 02/04(火)12:24 ID:AbihjpY6a(1)調 AAS
data1=b'Z\x00V\x00-\x00E\x001\x000\x00\x00\x00'
じゃないのは何故なんだぜ
600: (ワッチョイ 3f86-vucM) 02/04(火)19:51 ID:Nh0/7bRn0(1)調 AAS
Google Colaboratoryで自動でカッコやシングルクォーテーション、ダブルクォーテーションを閉じてくれるのはいいのですが
改行するのに右小指を右矢印まで移動させるのが面倒くさいです
この機能を有効にしながらタイピングのホームポジションから極力指を動かさずにプログラムを改行する方法はどういったものがありますか
601: (ワッチョイ 0f54-U+zU) 02/04(火)20:02 ID:Q6BV74Me0(1/2)調 AAS
ダイヤモンドカーソル
602: (ブーイモ MM0f-92nP) 02/04(火)20:05 ID:Yb/oB3W3M(1)調 AAS
wordmasterですね?
603: (ワッチョイ 3f9f-UQx/) 02/04(火)20:15 ID:bltbnC560(1)調 AAS
キーボードショートカット表示させたら発見多い
vimバインドがあるのにも気づける
604: (ワッチョイ 0f54-U+zU) 02/04(火)20:16 ID:Q6BV74Me0(2/2)調 AAS
capsキーをモディファイア化して、カーソルとpgup/dn, home, end, ctrl-home, ctrl-end
なんかをそのへんのキーにアサインすると便利
ctrlなんかにするのはもったいない
605: (ワッチョイ cf3e-fK0e) 02/05(水)12:03 ID:0aVaPzHU0(1)調 AAS
textwrap --- テキストの折り返しと詰め込み
https://docs.python.org/ja/3.12/library/textwrap.html
標準ライブラリにこんなモジュールあったの初めてしった
606: (アウアウエー Sabf-J/8e) 02/05(水)14:41 ID:RWIQAOlpa(1)調 AAS
ctrl+J ctrl+M
607: (ワッチョイ 4f01-NuNG) 02/05(水)18:14 ID:d15iAK/y0(1)調 AAS
WindowsだとCtrl+EやCtrl+Aは動かないんだっけ?
608: (ワッチョイ 3f8b-GcXq) 02/05(水)18:53 ID:dNg2S/kf0(1)調 AAS
アンダースコア2個の変数って
VSCodeのデバックでも見えなくなるんだな
そこは値みせろよ
609: (ワッチョイ ffb9-UQx/) 02/05(水)21:07 ID:4wonhmBO0(1)調 AAS
https://www.deback.be
選択肢にないからドイツ語圏は弱小なんだな
学びがある
610: (ワッチョイ 63c4-SXYI) 02/09(日)17:06 ID:cm7GCNiQ0(1)調 AAS
スレッド処理できんぞこのポンコツ
611: (ワッチョイ 1a8b-RGTj) 02/09(日)17:14 ID:tUOkxeUe0(1)調 AAS
ThreadPoolExecutor使えば簡単に実装できるだろ
GIL無効のはまだ試したことないけど
612: (ワッチョイ ef54-r5n3) 02/09(日)22:07 ID:DVKKH7160(1)調 AAS
enumerate()はindexが追加される、と覚えてるから、
indexを2番目にしてしまうという間違いを繰り返す
大抵は、for val in array: と書いてて、
indexが必要になって追加すると思うので、
前に挿入という変更にも抵抗がある
613: (ワッチョイ abfb-5zF4) 02/09(日)22:42 ID:1H3Dm2g50(1)調 AAS
使い勝手からするとindexは先頭であってんだけど
tupleやなくクラスだったらよかったかな
挿入という感覚はないな
614: (ワッチョイ ef54-r5n3) 02/10(月)09:56 ID:JMZMJPbu0(1)調 AAS
items() が key, valueの順で渡してくるのは納得なんだよな
enumerate() も意味的には似てるんだけど、
dictはforで読んだらkeyが返るけど、listは中身だしな
まあ、複数同時に返して順番意識しないと間違う仕様が全部悪
615: (ワッチョイ ef54-r5n3) 02/13(木)17:02 ID:uy7D7eTZ0(1/4)調 AAS
windowsでリアルタイムで画像を描かせるとウィンドウが反応なしになる
最初pygameで作って、Pyxelでも駄目で、matplotlibも駄目だった
どう見ても原因はwindows側なんだけど、どうやったら回避できるんだろう
616: (ブーイモ MMc6-3Y69) 02/13(木)17:53 ID:iuf/njBUM(1)調 AAS
メッセージキューの状態は?
617(1): (ワッチョイ 232a-6f6K) 02/13(木)18:21 ID:gV1L3zya0(1/2)調 AAS
型ヒント、どうやって書くとおK?
>>> a:int, b:int = 1, 2
File "<stdin>", line 1
a:int, b:int = 1, 2
^
SyntaxError: invalid syntax
618(1): (ブーイモ MMaa-RGTj) 02/13(木)18:50 ID:UcNEd134M(1)調 AAS
>>617
そういう書き方しなければならない理由ある?
619(1): (ワッチョイ 232a-6f6K) 02/13(木)20:34 ID:gV1L3zya0(2/2)調 AAS
>>618
そういう書き方とは何を指したの。
書き方がおかしいので、正しい書き方を質問した。
620: (ササクッテロラ Spa3-Z3xl) 02/13(木)21:07 ID:1OgGkneUp(1)調 AAS
二ついっぺんに?
621(1): (ワッチョイ ef54-r5n3) 02/13(木)21:41 ID:uy7D7eTZ0(2/4)調 AAS
def func(a:int = 0, b:int = 0): # OK
a, b = 0, 0 # OK
a:int = 0, b:int = 0 #NG
ということだな
622: (ワッチョイ 1a8b-RGTj) 02/13(木)23:08 ID:FScSEbGI0(1)調 AAS
>>619
回答がでてるから(俺は確認してない)
気にしてないと思うけど
コードは手段であって目的ではない
エラーが出てよくわからないなら別の方法探すのが合理的だろ?
623: (ワッチョイ ef54-r5n3) 02/13(木)23:20 ID:uy7D7eTZ0(3/4)調 AAS
a, b = 0, 0
のケースは、
(a, b) = (0, 0)
というタプルへの代入の省略形だと思うので、
関数定義の引数の列とは本質的に別物
タプルだと思って書くと、
(a:int, b:int) = (0, 0)
これが文法的に許されてるかという個別の話になって、
単純にタプルに型アノテーションは書けません
という誤りに帰着する
624: (ワッチョイ 0701-k+Qr) 02/13(木)23:39 ID:3i0teOTZ0(1/2)調 AAS
>>621
>a:int = 0, b:int = 0 #NG
a:int = 0; b:int = 0 #OK
7.2.2. Annotated assignment statements
The difference from normal Assignment statements is that only a single target is allowed.
https://docs.python.org/3/reference/simple_stmts.html#annotated-assignment-statements
625(1): (ワッチョイ 0701-k+Qr) 02/13(木)23:48 ID:3i0teOTZ0(2/2)調 AAS
変数の数が多かったりアノテーションが長かったりするのであれば
一旦1つの変数で受けといてからunpackすればいいんじゃないか思う
style guideとかでこの辺りが確立されてるやつがあるのかどうかは知らん
xs: Tuple[Optional[int]] = 1, 2, 3
x, y, z = xs
626: (ワッチョイ ef54-r5n3) 02/13(木)23:50 ID:uy7D7eTZ0(4/4)調 AAS
a:int = 0, b:int = 0
だと何が不味くてエラーにしたのか、ピンとこないな
誤解の余地はどこにもないと思うけど
627: (ワッチョイ 0701-k+Qr) 02/14(金)00:40 ID:itWJ0HMk0(1/2)調 AAS
文法規則に沿ってないからエラーになってるだけでしょ
a:int = 0, の時点でパーサーからすると`0, `はタプルなのに
b:intのコロンようなサポートされてない表現が来てるから文法エラー
628: (ワッチョイ ef54-r5n3) 02/14(金)00:52 ID:kUuP9oE90(1)調 AAS
いや、言語設計の話ね
引数の列みたいなタプル的なもので許されてるなら、
タプルでも許されるような規則になってる方がコンシスタント
それを許すと別の問題が生じるなら仕方ないけど、
特にそんなのがあるような気がしない
629: (ワッチョイ 0701-k+Qr) 02/14(金)01:53 ID:itWJ0HMk0(2/2)調 AAS
54氏に絡んだ私が馬鹿だったみたいだね
630(1): (JP 0Hc6-nRXM) 02/14(金)07:12 ID:P2h4GvQIH(1)調 AAS
型アノテーションはどう考えてもコードを冗長にするだけの効果しかなかった
次期バージョンからは廃止して欲しい
アノテーションありとなしのコードが混在する世界は誰も得しない
631: (ワッチョイ ef54-r5n3) 02/14(金)07:34 ID:8QRTr0+h0(1)調 AAS
01氏は相変わらずだのう
よく知らんけど
632: (ワッチョイ bbb2-QNOZ) 02/14(金)12:40 ID:mTgus/9Q0(1)調 AAS
型アノテーションしないとvscodeでメソッドとか補完してくれないじゃん~
633: (ワッチョイ 6317-3fWp) 02/14(金)12:47 ID:rES5mJq/0(1)調 AAS
>>630
これはそう
型の表現がゴミなのでその型意味ある?ってやつばっかでノイズにしかならん
tsみたいに別の処理系として作るべき
634: (ワッチョイ 0601-X7Ot) 02/14(金)13:23 ID:6dC8Hfpk0(1)調 AAS
>>625
>xs: Tuple[Optional[int]] = 1, 2, 3
これじゃダメじゃん
ellipsis忘れてた
635: (ワッチョイ ef54-r5n3) 02/14(金)19:00 ID:y0//4+C60(1/2)調 AAS
どうせdataclassで型指定が必須になる
636(1): (ワッチョイ 8edb-u07z) 02/14(金)22:20 ID:zA34SgDn0(1/2)調 AAS
age : int = int(9)
右のint()は不要ってことだよね
今だと全部上の文にしようとしていました
637: (ワッチョイ ef54-r5n3) 02/14(金)22:27 ID:y0//4+C60(2/2)調 AAS
型なんかコンテキストに任せるperlの時代がまた来ないかな
厳密なのはCに任せておいて、手抜き派は限界まで脱力しないと
638(1): (ワッチョイ 8edb-u07z) 02/14(金)23:33 ID:zA34SgDn0(2/2)調 AAS
perlは$@%で変数の中身と参照方法の手がかりがあるの楽すぎる
しかも記号の切り替えでアクセス方法も切り替えられる
初心者の俺だけかもしれないけど
639: (ワッチョイ 7f6e-HfJw) 02/15(土)00:03 ID:7QZxROg40(1)調 AAS
>>638
dollar_とかatmark_とか変数に付ければいいのでは?
640(1): (ワッチョイ ef54-r5n3) 02/15(土)00:09 ID:nmEKbiHe0(1)調 AAS
指し示す時は%varとか@varだけど、使う時は$var{}とか$var[]なのは、
普通に混乱するよな
同じ名前が使えるのはやばすぎるので、敢えて使わないようにしてた
641(1): (ワッチョイ 0701-Wuzd) 02/15(土)00:24 ID:Ff6IMwfd0(1)調 AAS
>>636
右のint()はintにキャストしたい時に使う
左のintも大半の箇所では不要
数値リテラルで初期化する場合に明示的に型を書く必要があるケースはあまりない
上で書かれてるdataclassのfieldなんかは例外
642: (ワッチョイ 1a8b-RGTj) 02/15(土)01:12 ID:8VzqP0+T0(1/2)調 AAS
type aliasでwin32 apiみたいに狂ったようなヘッダーファイルのimportとかになったら嫌だな
643: (ワッチョイ 7f32-pSVK) 02/15(土)02:36 ID:jP/E47uy0(1)調 AAS
型ヒントないとやだやだ
644: (ワッチョイ 8edb-u07z) 02/15(土)03:01 ID:uBYSxski0(1/2)調 AAS
>>641
ありがとうございます
645: (ワッチョイ 8edb-u07z) 02/15(土)03:03 ID:uBYSxski0(2/2)調 AAS
>>640
なるほど
646(1): (ワッチョイ bbe4-1V4e) 02/15(土)09:21 ID:PDHi7G9/0(1/2)調 AAS
一括代入の左辺って、正確にはタプルではないよね。タプルに引き付けて考えるより、代入文の構文の1類型として整理しておく方が良いんじゃないかと思うが。
647(1): (ワッチョイ ab62-5zF4) 02/15(土)10:22 ID:FKA6BWJy0(1)調 AAS
>>> x = a, b = 2, 3
>>> type(x)
<class 'tuple'>
よくわからんな
648: (ワッチョイ 1e2a-pN73) 02/15(土)10:51 ID:HEvUb6VY0(1)調 AAS
>>646
タプルとおもっていたが、正確には何なの?
649: (ワッチョイ 0601-Wuzd) 02/15(土)13:22 ID:j/KKg+ui0(1)調 AAS
タプルだよ
a, b = 1, 2 は(a, b) = (1, 2)と同じ
内部的にも一旦タプルとして扱われてunpackingが行われる
[a, b] = 1, 2とかにすれば左辺はリストになるけど
括弧省略したカンマ区切りの場合はタプル
650: (ワッチョイ 6aeb-12Ab) 02/15(土)14:36 ID:0rXlrcS60(1/2)調 AAS
たとえば、タプル (3, 4) では、(要素0の)3を指すポインタと(要素1の)4 を指すポインタとはメモリ上隣接した位置に配置されるけど、
a = 1 b = 2 の後に a, b = 3, 4 と一括代入をしても、(一旦タプルが作られるのかどうかはともかく)そういうことにはならないんじゃない?
*[a, b], c = 1, 2, 3 のようないわゆるスター代入も、イテラブルのunpackではないと思うし。
651: (ワッチョイ 1379-JmS7) 02/15(土)16:45 ID:yy3Wu/gg0(1)調 AAS
return文の複数値の返却もタプルだけど、
なぜかカッコを省略することが多い
まぁ、あくまでカンマがタプルの肝だからということか
652: (ワッチョイ ef54-r5n3) 02/15(土)17:05 ID:0vZBBpUh0(1/3)調 AAS
リストの内包表記の[]を()にすると、
タプル内包表記ではなくジェネレータ内包表記になる罠
653: (ワッチョイ 1a8b-RGTj) 02/15(土)17:06 ID:8VzqP0+T0(2/2)調 AAS
カッコの用途と意味が多くて初学者にはきついと思うわ
( ) はタプルとGenerater
{ } は辞書と集合
[ ] はリストと内包表記
654: (ワッチョイ ef54-r5n3) 02/15(土)17:09 ID:0vZBBpUh0(2/3)調 AAS
空の集合で初期化しようとしてs = {} とか書いてしまう罠
(1,) とか class_ とか苦し紛れいろいろ
655: (ワッチョイ 6aeb-12Ab) 02/15(土)17:33 ID:0rXlrcS60(2/2)調 AAS
丸括弧は関数・クラス等の呼び出し、角括弧はリスト、波括弧は辞書および集合。
リストと辞書と集合には内包表記があって、generator式は内包表記の仲間。
そうやって整理する分には、(単要素タプルの書き方がちょっと不格好なところを除けば)そんなに違和感はないけどなぁ。
辞書についてリテラル表記は波括弧なのに参照は角括弧なのはちょっと引っかかりを憶えないでもないけれども、これは他の言語でもそうだし。
他の言語と比べて特に複雑ということはないと思うけど。
むしろVBAみたいに、配列の添字指定に丸括弧を使わされたりする方が嫌だわ。
656: (ワッチョイ bbe4-1V4e) 02/15(土)19:13 ID:PDHi7G9/0(2/2)調 AAS
immutableなタプルの要素にはそもそも代入ができないはずなので、それだけでも一括代入の左辺がタプルでないのは明らかなのでは。
一括代入の左辺に丸括弧や角括弧が使えるのは、入れ子構造になっているときにその構造を明確にするために過ぎず、リストやタプルとは全く関係ないって考えた方が分かりやすいように思う。
657(1): (ワッチョイ 0601-Wuzd) 02/15(土)23:10 ID:DkQLiBFd0(1/2)調 AAS
左辺と右辺で違いがあるのは当たり前
右辺の値としてのタプルと左辺の言うなればパターンとしてのタプルが
全く同じように評価・実行されるわけがない
タプルじゃないとしたほうがわかりやすいならそうすればいいとは思うけど
言語的には左辺の(a, b)もタプルという扱い
658(2): (ワッチョイ 0601-Wuzd) 02/15(土)23:12 ID:DkQLiBFd0(2/2)調 AAS
ASTで見るとこうなる
import ast
expr = ast.parse("a, b = 1, 2")
print(ast.dump(expr, indent=4))
Module(
body=[
Assign(
targets=[
Tuple(
elts=[
Name(id='a', ctx=Store()),
Name(id='b', ctx=Store())],
ctx=Store())],
value=Tuple(
elts=[
Constant(value=1),
Constant(value=2)],
ctx=Load()))])
659: (ワッチョイ ef54-r5n3) 02/15(土)23:29 ID:0vZBBpUh0(3/3)調 AAS
a = 1
b = 2
t = (a, b)
print(t) # (1, 2)
a = 3
b = 4
print(t) # (1, 2)
変数でもそのオブジェクトでもなく、
中に入ってるものでタプルを作る
だから、(a, b) がタプルというのも不正確
660(1): (ワッチョイ cb10-+v22) 02/16(日)00:53 ID:wh5aR4tC0(1)調 AAS
>>657-658
ASTでタプルとされているからタプルなのだ、それが言語上の定義なのだと言われればそうですかと言うしかないのだけれど、メモリレイアウトがどうなっているかは気になるな。a, bはメモリ上隣接した位置に配置されるのか、それとも、離れた位置に配置されるけれども代入文の左辺である限りはタプルと呼んでいいということなのか。
661: (ワッチョイ c579-o6Hv) 02/16(日)07:14 ID:ThFtPuZc0(1/2)調 AAS
メモリ上隣接はCPythonの話?
それこそはいそうですかだけど
662: (アウアウエー Sa13-9cJ9) 02/16(日)12:09 ID:rAQQ2/+ca(1/4)調 AAS
(a, b): (int, int) = (0, 0)
663: (ワッチョイ fd01-/GLU) 02/16(日)13:10 ID:24lkekzA0(1)調 AAS
>>660
a, b = 1, 2とすればaとbが個別のローカル変数としてスタックフレームに追加されるだけ
CPythonでは定義順になるから内部の配列内で隣接してる場合もあればしてない場合もある
スタック上の変数でかつそれぞれ直接アクセスしかしないんだから隣接してるかどうかは実用上はどうでもいいこと
664: (ワッチョイ e3bf-CQxi) 02/16(日)13:51 ID:dLfK62nh0(1/4)調 AAS
そうでしょ、やっぱりメモリレイアウトが全然違うよね。
一括代入の左辺の場合には、その後もタプルとして使われることは全くなく個別的にしかアクセスしないのだから、メモリ上隣接しているかどうかがどうでもいいというのはある意味当然のことで、それは、通常の意味でのタプル(固定長でimmutableなコレクション・コンテナとしてのタプル)でないことの裏返しだと思うけど。
言語仕様上はそれもまたタプルとして定義されているということであれば「タプルではない」というのは正しくないことになるしそれはそれで構わないのだけれど、重要なのは通常の意味でのタプルとは全く別物だという点であって、その点の認識はあった方が良いんじゃないかなぁ。
665: (アウアウエー Sa13-9cJ9) 02/16(日)13:58 ID:rAQQ2/+ca(2/4)調 AAS
a, b = 0, 0
構文解析上の文法は
(a, b) = (0, 0) の略
ではなく
a, b = (0, 0) の略
じゃないかな
代入前(右辺)はタプルで代入後(左辺)はタプルではなく個別
もし左辺がタプルならbindされた名前が無いので利用出来ない
666: (ワッチョイ e318-+v22) 02/16(日)14:30 ID:dLfK62nh0(2/4)調 AAS
一括代入の左辺のターゲット並びは、丸括弧や角括弧で囲うことも全く囲わないこともできる。
角括弧で囲った場合はリストになり、丸括弧で囲った場合や全く囲わない場合はタプルになるということはできるけれども、通常の意味でのリストやタプルとはまったく別物だし、その後もリストやタプルとして利用されることはないので、それがリストやタプルであるということにどれほどの意味があるのか、むしろ通常の意味でのリストやタプルと混同してしまう人が出かねない弊害の方が多いのではないかというのが個人的な感想。
むろん、言語仕様上、リストやタプルとして定義されていますということであれば、あえて逆らうつもりはないけれども、リストやタプルの概念の中に異質なものを抱え込むことになって概念内容が拡散するように思うし(e.g.要素に代入できるタプル)、概念整理としては、一括代入の左辺については、リストやタプルのリテラル構文の形式を借用した代入構文の一形式であって、それ自体としてはリストでもタプルでもないという形で整理した方が遥かに分かりやすいのではないかと思っている。
667: (アウアウエー Sa13-9cJ9) 02/16(日)15:20 ID:rAQQ2/+ca(3/4)調 AAS
>全く囲わない場合はタプルになるということはできるけれども
いや出来ないやろ
668: (ワッチョイ e318-+v22) 02/16(日)16:31 ID:dLfK62nh0(3/4)調 AAS
自分は、一括代入の左辺については(通常の意味での)リストやタプルとは区別した方がわかりやすいのではないかという立場だけど、これらもリストやタプルであると考える立場に立つ場合、その中で、丸括弧で囲むか否かによってタプルになったりならなかったりするという考え方はないんじゃない? ASTでは丸括弧がなくてもタプル扱いみたいだし(>>658)
669(1): (アウアウエー Sa13-9cJ9) 02/16(日)16:50 ID:rAQQ2/+ca(4/4)調 AAS
左辺がタプルになる代入は
c = 0, 0
とか
_ = 0, 0
の場合な訳で
(後者は暗黙で名前が付かないbindの例で敢えて描いたけど)
(a, b) = 0, 0
はタプルに代入してる訳じゃないでしょ
という立場ですね
670: (ワッチョイ c57e-o6Hv) 02/16(日)17:02 ID:ThFtPuZc0(2/2)調 AAS
>>669
>>647
タプルでもリストでもない何かとしてもいいけどね
即値だけのコードも正当なのでbinding(assignment?)の有無は根拠にならんかも
671: (ワッチョイ e39c-+v22) 02/16(日)17:36 ID:dLfK62nh0(4/4)調 AAS
c = 0, 0 と _ = 0, 0 は、代入ターゲットが1つしかない単一代入の文だから、今の話題と直接的な関係はないかと。
一括代入として、
ア a, b = 0, 0
イ (a, b) = 0, 0
ウ [a, b] = 0, 0 の3つの文に実質的な違いは(おそらく)何もなく、あえて左辺がタプルだリストだという必要はないのではないか(少なくとも通常の意味でのタプルやリストではないので、これらがタプルやリストであると考える意味もほとんどないのではないか)、それよりも一括代入の構文として共通のものとして理解する視点の方が有用なのではないかという感覚かな。
言語仕様上、リストやタプルの概念がこれらも含むような形で定義されているかはまた別の問題として。
672: (ワッチョイ 3de8-TCCQ) 02/16(日)22:36 ID:38lJcH0O0(1/2)調 AAS
個人的には一括代入って言葉の方がよっぽど気になるけどな
673: (ワッチョイ e55b-+v22) 02/16(日)22:53 ID:6PRP0OeT0(1)調 AAS
用語法はまったく本質的な部分ではないので、意味が通じれば何でもいいと思うけど。一括代入、複数代入、多重代入、併行代入……好きなのを使えばいいんじゃない? 既に定着している用語法があるならそれに従っておく方が無難だとは思うが。
あとa = b = c みたいなのと語感上、区別しやすい用語だとなお良いね。
674: (ワッチョイ 3de8-TCCQ) 02/16(日)23:06 ID:38lJcH0O0(2/2)調 AAS
じゃ左辺のタプルも意味が通じればなんでもいいんじゃない?
675: (ワッチョイ cb10-+v22) 02/17(月)00:13 ID:S+Nz3ahz0(1)調 AAS
要素に代入できるタプルというものを観念して、いわば特殊なタプルと位置付けてタプル概念に含める方向性で考えるのか、タプルとは区別して整理する方向性を指向するのかというのは、理屈としてはタプル概念の外縁の画定に関する1つの態度決定の問題だから、重要でないとはいえないだろうし、タプルに含める立場をとる場合でも、通常の意味でのタプル(immutableな固定長コンテナとしてのタプル)とは質的に異なるということを意識しておくことは実践的にも意味がある……と自分なんかは思うけど、人の考え方はさまざまだからね。674が、用語法の違いと同程度のどうでもいい問題だと思うのなら、実際674にとってはそうなんでしょ。そのことを否定はしないよ。
上下前次1-新書関写板覧索設栞歴
あと 327 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.020s