2015-08-10

Pythonの条件演算子(三項演算子)に対する2chの反応

580 :デフォルト名無しさん[sage]:2006/07/26(水) 00:33:38

普通に三項演算子 ? : いれた方がよかったんだと思うけど、そうできない理由があったのか?

581 :デフォルト名無しさん[sage]:2006/07/26(水) 00:37:57

>>580

ああすごい同意

なんで三項演算子入れないで、あんなきもい

構文入れるんだよ。

583 :デフォルト名無しさん[sage]:2006/07/26(水) 00:44:31

つか、一種の3項演算子じゃん。

[x for y in z] とかとも類似する構文だし、俺はあれでいいと思うけどなぁ。。。

584 :デフォルト名無しさん[sage]:2006/07/26(水) 00:45:26

>581

入れたくないものを仕方なしに入れるから

とか? (本音を言うと誰にも使って欲しくない)

585 :デフォルト名無しさん[sage]:2006/07/26(水) 00:46:03

? : が既に使われててダメだったなら

C then X else Y

みたいにできなかったのか疑問

条件が真ん中に来るとか見づらいよ……

586 :デフォルト名無しさん[sage]:2006/07/26(水) 00:46:09

別にCに合わせる必要はないと思うよ。演算子関係ではCと違う部分がいっぱいあるから

半端に似せて「Cと同じだ」とか誤解を招くのはよろしくないと思う。

587 :デフォルト名無しさん[sage]:2006/07/26(水) 00:48:42

"x for y in z"

  ←  ←

データの流れが見える

"X if C else Y"

↑      ↑

分かれていて嫌

588 :デフォルト名無しさん[sage]:2006/07/26(水) 00:57:28

>>587

気持ちはわかる。対称性が悪い感じだね。

でももう決まったことだし、個人的にはあまり気にしないで使うことになるだろうな。

意見を述べるならもっと前に言うべきだったってことでしょう。

591 :デフォルト名無しさん[sage]:2006/07/26(水) 01:07:32

初めてリスト内包を見たときは「何じゃこりゃ、ワケわかめ」という印象だったけど

もう慣れてしまった。今ではリスト内包直観的で分かりやすいと感じる。

ずっと Guido のセンスで取捨選択してきたわけだし、ぶっちゃけ今のところこれといって

ダメ杉な仕様とゆーのは思い付かない。

今度の新しい三項演算子も慣れたら普通だと感じるようになるんジャマイカ

592 :デフォルト名無しさん[sage]:2006/07/26(水) 01:13:04

X if C else Y

「Xなんだよ! まあCだったらの話だけどな そうじゃなければYでよろしく」

593 :デフォルト名無しさん[sage]:2006/07/26(水) 01:15:11

このスレ読んでるうちにだんだん慣れてきたw

594 :デフォルト名無しさん[sage]:2006/07/26(水) 01:16:06

リスト内包表記は書いちゃうけど読みにくいな

[x for y in z]

ここにたどり着く前に脳内スタック忘却を始めるw

[x for x in original_list if x>2 and x<5]

こっちは自分で書いてもコメント必要だww

595 :591[sage]:2006/07/26(水) 01:37:07

文が書ける文脈では普通の if 文を使えばいいわけで、

X if C else Y を使うのはきっと式の中がメインになるんだろうな。

lambda の中とかリスト内包の中とか。

functor = lambda x: x+1 if y > 0 else lambda x: x-1 if y < 0 else lambda x: x

とか、

delta = Numeric.array([[1 if i == j else 0 for i in range(M)] for j in range(N)], Numeric.Float32)

みたいな。>>593の言う通り、用例を考えていたらもう慣れてきた希ガス

596 :591[sage]:2006/07/26(水) 01:54:02

q, r = divmod(n, 10)

print "%d%s" % (n, "th" if q == 1 else "st" if r == 1 else "nd" if r == 2 else "rd" if r == 3 else "

th")

たくさん if ... else が続く場合はなかなか読みやす希ガス

601 :デフォルト名無しさん[sage]:2006/07/26(水) 11:08:59

>>596

その書き方が許されるとすると、かなり応用力がありそうですね。

実質任意バージョンでOKてことだから・・・

でも、あんまりやるとさすがに見づらい気もする・・・

596がすでにぱっと見ではよく分からない

602 :デフォルト名無しさん[sage]:2006/07/26(水) 13:39:10

やっぱり、判定式が真ん中に来ると読みにくいな。

A = if C then B else D

みたいな形の方が文章として読みやすいと思うんだが。

603 :デフォルト名無しさん[sage]:2006/07/26(水) 14:03:57

>>596

三項演算子いれて、

print "%d%s" % (i, r == 1 ? "st" : r == 2 ? "nd" : r == 3 ? "rd" : "th")

にしたほうが見やすくない?

607 :デフォルト名無しさん[sage]:2006/07/26(水) 15:15:14

>>602

A = B if C else D だと

CならばDと目が流れちゃうかもかも。

まあ、慣れれってことか。

608 :デフォルト名無しさん[sage]:2006/07/26(水) 15:28:49

まあ、ハズレのときはNoneが返る形ならば、

A = B or D で済むんだけどねぇ。

BがNoneならDって使い方。これは結構便利でよく使ってるんだけども。

いまだに

A = B and D は使ったことがないけども。

609 :デフォルト名無しさん[sage]:2006/07/26(水) 15:49:33

>>596

> たくさん if ... else が続く場合はなかなか読みやす希ガス

おお!まさにそう思うよ!急にこの演算子が大好きになった。

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん