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

回答編集履歴

3

修正

2020/04/09 16:13

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -15,10 +15,11 @@
15
15
  # 結果リストに対して、関数リストを適用
16
16
  for f in function:
17
17
 
18
- tmp = []
18
+ tmp = [] # f の適用結果を記録する一時的な配列
19
- for x in numbers: # X周目は、numbersリストのX個目しかとっていない???
19
+ for x in numbers:
20
20
  y = f(x)
21
21
  tmp.append(y)
22
+
22
23
  numbers += tmp
23
24
 
24
25
  print(numbers)

2

修正

2020/04/09 16:13

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -2,8 +2,6 @@
2
2
  では、`for y in numbers` 内で `append()` すればいいのかというと、ループするたびにリストに要素を1つ追加していくと、無限ループになってしまうので、一旦別の配列に `res` の値を append() していき、ループを抜けたら、`numbers` に追加する形にすれば、意図通りに動きます。
3
3
 
4
4
  ```python
5
- import numpy as np
6
-
7
5
  # 関数の定義
8
6
  bai2 = lambda x: x * 2
9
7
  bai3 = lambda x: x * 3
@@ -29,8 +27,6 @@
29
27
  map() を使って簡潔に書くなら以下のように改善できます。
30
28
 
31
29
  ```python
32
- import numpy as np
33
-
34
30
  # 関数の定義
35
31
  bai2 = lambda x: x * 2
36
32
  bai3 = lambda x: x * 3

1

修正

2020/04/09 16:12

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -24,7 +24,26 @@
24
24
  numbers += tmp
25
25
 
26
26
  print(numbers)
27
+ ```
27
28
 
29
+ map() を使って簡潔に書くなら以下のように改善できます。
30
+
31
+ ```python
28
- # 得られる結果:1, 2, 6
32
+ import numpy as np
33
+
34
+ # 関数の定義
35
+ bai2 = lambda x: x * 2
36
+ bai3 = lambda x: x * 3
37
+
38
+ # 関数用リスト
29
- # 得たい結果: 1, 2, 3, 6
39
+ function = [bai2, bai3]
40
+
41
+ # 結果リスト
42
+ numbers = [1]
43
+
44
+ # 結果リストに対して、関数リストを適用
45
+ for f in function:
46
+ numbers += list(map(f, numbers))
47
+
48
+ print(numbers)
30
49
  ```