回答編集履歴
5
更新
answer
CHANGED
@@ -48,16 +48,16 @@
|
|
48
48
|
```python
|
49
49
|
def f(a, b):
|
50
50
|
if a < b:
|
51
|
-
return
|
51
|
+
return c()
|
52
52
|
else:
|
53
|
-
return
|
53
|
+
return d()
|
54
54
|
```
|
55
55
|
より
|
56
56
|
```python
|
57
|
-
f=lambda a,b: a<b and
|
57
|
+
f=lambda a,b: a<b and c() or d()
|
58
58
|
```
|
59
|
-
の方が短い、ただし`
|
59
|
+
の方が短い、ただし`c()`が真値を返すという保証がある場合だけ、みたいな話だったのではないでしょうか?
|
60
60
|
|
61
|
-
それなら`min`では済まないし、`f=lambda a,b:[
|
61
|
+
それなら`min`では済まないし、`f=lambda a,b:[c(),d()][a<b]`でも解決しない(`c()`と`d()`の2つの式が両方評価されてしまう)ので多少の意味はあるかな、と思いました。
|
62
62
|
|
63
63
|
そういう前提とかいったものが伝言ゲームの過程で無くなっていって、まったくの無意味な話になったのではないかな、と想像します。
|
4
さらに考察
answer
CHANGED
@@ -38,4 +38,26 @@
|
|
38
38
|
```
|
39
39
|
~~の方が短いだろ、と思いました。~~
|
40
40
|
|
41
|
-
ここは取り消します
|
41
|
+
ここは取り消します
|
42
|
+
|
43
|
+
----
|
44
|
+
|
45
|
+
追記
|
46
|
+
|
47
|
+
考えみたら`f=min`で済む内容なので(注:`min`が3回呼ばれる場合には`f`に束縛した方が全体を短くできる)そもそも話がおかしいわけで、ということはおおもとの趣旨は
|
48
|
+
```python
|
49
|
+
def f(a, b):
|
50
|
+
if a < b:
|
51
|
+
return hogehoge()
|
52
|
+
else:
|
53
|
+
return fugafuga()
|
54
|
+
```
|
55
|
+
より
|
56
|
+
```python
|
57
|
+
f=lambda a,b: a<b and hogehoge() or fugafuga()
|
58
|
+
```
|
59
|
+
の方が短い、ただし`hogehoge()`が真値を返すという保証がある場合だけ、みたいな話だったのではないでしょうか?
|
60
|
+
|
61
|
+
それなら`min`では済まないし、`f=lambda a,b:[fugafuga(),hogehoge()][a<b]`でも解決しない(2つの式が両方評価されてしまう)ので多少の意味はあるかな、と思いました。
|
62
|
+
|
63
|
+
そういう前提とかいったものが伝言ゲームの過程で無くなっていって、まったくの無意味な話になったのではないかな、と想像します。
|
3
取り消します
answer
CHANGED
@@ -32,8 +32,10 @@
|
|
32
32
|
----
|
33
33
|
追記
|
34
34
|
|
35
|
-
全く本筋じゃないですが
|
35
|
+
~~全く本筋じゃないですが~~
|
36
36
|
```python
|
37
37
|
f=lambda a,b:[b,a][a<b]
|
38
38
|
```
|
39
|
-
の方が短いだろ、と思いました。
|
39
|
+
~~の方が短いだろ、と思いました。~~
|
40
|
+
|
41
|
+
ここは取り消します(追記)
|
2
追記
answer
CHANGED
@@ -27,4 +27,13 @@
|
|
27
27
|
と認識したのが誤りです。
|
28
28
|
|
29
29
|
おそらくですが、**a>0かつb>0であることが前提として示されている**場合などにはこういうテクニックもあるよ、というような話だったんだろうと思います。
|
30
|
-
(説明の時にうっかり省いてしまったのか、書いた人が理解できていないのかは判断できませんので、よい方で解釈すると、ということで)
|
30
|
+
(説明の時にうっかり省いてしまったのか、書いた人が理解できていないのかは判断できませんので、よい方で解釈すると、ということで)
|
31
|
+
|
32
|
+
----
|
33
|
+
追記
|
34
|
+
|
35
|
+
全く本筋じゃないですが
|
36
|
+
```python
|
37
|
+
f=lambda a,b:[b,a][a<b]
|
38
|
+
```
|
39
|
+
の方が短いだろ、と思いました。
|
1
些細
answer
CHANGED
@@ -15,12 +15,12 @@
|
|
15
15
|
```
|
16
16
|
と書く方が**短くて済む**という話だと思うのですけれど、これら2つのコードは同じ意味でもなければ、**同じ動きをするコードでもありません**。(理由と説明は他の方の回答の通りなので省きます)
|
17
17
|
|
18
|
-
|
18
|
+
その記事は悪く言うと**嘘**もしくは**間違い**、悪く言わなくても「使い道が限定されていることを端折っている正確ではない記事」です。
|
19
19
|
|
20
20
|
|
21
21
|
----
|
22
22
|
|
23
|
-
つまり、
|
23
|
+
つまり、その記事を読んで
|
24
24
|
|
25
25
|
> a<bが「偽」のときbが代入される
|
26
26
|
|