回答編集履歴

2

リスト内包表記からジェネレータ式に変更

2018/10/12 01:00

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  >>> spam = ['apples', 'bananas', 'tofu', 'cats']
8
8
 
9
- >>> "".join([e for l in [len(spam)] for i, word in enumerate(spam) for e in [word, ", " if i < l-2 else (" and " if i == l-2 else "")]])
9
+ >>> "".join(e for l in [len(spam)] for i, word in enumerate(spam) for e in [word, ", " if i < l-2 else (" and " if i == l-2 else "")])
10
10
 
11
11
  'apples, bananas, tofu and cats'
12
12
 
@@ -18,7 +18,7 @@
18
18
 
19
19
  ### 追記
20
20
 
21
- 質問文を読み直したら、「関数を定義せよだったのを見落としていました。
21
+ 質問文を読み直したら、「関数を書きなさい」を見落としていたことに気づきました。
22
22
 
23
23
 
24
24
 
@@ -26,7 +26,7 @@
26
26
 
27
27
  >>> spam = ['apples', 'bananas', 'tofu', 'cats']
28
28
 
29
- >>> f = lambda spam : "".join([e for l in [len(spam)] for i, word in enumerate(spam) for e in [word, ", " if i < l-2 else (" and " if i == l-2 else "")]])
29
+ >>> f = lambda spam : "".join(e for l in [len(spam)] for i, word in enumerate(spam) for e in [word, ", " if i < l-2 else (" and " if i == l-2 else "")])
30
30
 
31
31
  >>> f(spam)
32
32
 

1

追記

2018/10/12 01:00

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -13,3 +13,35 @@
13
13
 
14
14
 
15
15
  ```
16
+
17
+
18
+
19
+ ### 追記
20
+
21
+ 質問文を読み直したら、「関数を定義せよ」だったのを見落としていました。
22
+
23
+
24
+
25
+ ```python
26
+
27
+ >>> spam = ['apples', 'bananas', 'tofu', 'cats']
28
+
29
+ >>> f = lambda spam : "".join([e for l in [len(spam)] for i, word in enumerate(spam) for e in [word, ", " if i < l-2 else (" and " if i == l-2 else "")]])
30
+
31
+ >>> f(spam)
32
+
33
+ 'apples, bananas, tofu and cats'
34
+
35
+ >>> f(list("ABCDEFG"))
36
+
37
+ 'A, B, C, D, E, F and G'
38
+
39
+ ```
40
+
41
+
42
+
43
+ > ※また、「関数は任意のリスト値を渡してもよい」とはどういうことでしょうか?
44
+
45
+
46
+
47
+ 長さが任意なのかもしれないし、型が任意という可能性もあるでしょうね。