teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

5

更新

2019/11/29 14:15

投稿

quickquip
quickquip

スコア11327

answer CHANGED
@@ -48,16 +48,16 @@
48
48
  ```python
49
49
  def f(a, b):
50
50
  if a < b:
51
- return hogehoge()
51
+ return c()
52
52
  else:
53
- return fugafuga()
53
+ return d()
54
54
  ```
55
55
  より
56
56
  ```python
57
- f=lambda a,b: a<b and hogehoge() or fugafuga()
57
+ f=lambda a,b: a<b and c() or d()
58
58
  ```
59
- の方が短い、ただし`hogehoge()`が真値を返すという保証がある場合だけ、みたいな話だったのではないでしょうか?
59
+ の方が短い、ただし`c()`が真値を返すという保証がある場合だけ、みたいな話だったのではないでしょうか?
60
60
 
61
- それなら`min`では済まないし、`f=lambda a,b:[fugafuga(),hogehoge()][a<b]`でも解決しない(2つの式が両方評価されてしまう)ので多少の意味はあるかな、と思いました。
61
+ それなら`min`では済まないし、`f=lambda a,b:[c(),d()][a<b]`でも解決しない(`c()`と`d()`の2つの式が両方評価されてしまう)ので多少の意味はあるかな、と思いました。
62
62
 
63
63
  そういう前提とかいったものが伝言ゲームの過程で無くなっていって、まったくの無意味な話になったのではないかな、と想像します。

4

さらに考察

2019/11/29 14:15

投稿

quickquip
quickquip

スコア11327

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

取り消します

2019/11/29 14:13

投稿

quickquip
quickquip

スコア11327

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

追記

2019/11/29 13:55

投稿

quickquip
quickquip

スコア11327

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

些細

2019/11/29 13:24

投稿

quickquip
quickquip

スコア11327

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