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

回答編集履歴

2

追記

2021/12/19 05:51

投稿

katoy
katoy

スコア22328

answer CHANGED
@@ -43,4 +43,6 @@
43
43
  ```
44
44
 
45
45
  実行例
46
- ![イメージ説明](d992646886759c822ed570cd099e4882.png)
46
+ ![イメージ説明](d992646886759c822ed570cd099e4882.png)
47
+
48
+ 処理をまとめるときには、事前に作業変数を宣言せずに、lis だけを使って書くのが好ましいです。(個人的な嗜好)

1

修正

2021/12/19 05:51

投稿

katoy
katoy

スコア22328

answer CHANGED
@@ -19,18 +19,23 @@
19
19
  print("lis に含まれていない要素を列挙する")
20
20
  print(" lis4 = ", lis4)
21
21
 
22
+ print("lis を 展開する")
23
+ lis_ex = list(map(lambda x: list([e for e in range(x[0], x[1] + 1)]), lis))
24
+ print("lis_ex", lis_ex)
25
+
22
- lis5 = sorted(lis4 + lis)
26
+ lis5 = sorted(lis4 + lis_ex)
23
27
  print("両者を結合してソートする")
24
28
  print(" lis5 = ", lis5)
25
29
 
26
30
  print("サイズ 1 の要素は list から int に変換する")
27
- lis6 = list(map(lambda x: x if len(x) == 2 else x[0], lis5))
31
+ lis6 = list(map(lambda x: x[0] if len(x) == 1 else x, lis5))
28
32
  print(" lis6 = ", lis6)
29
33
 
30
34
  # 上の処理を1 行にまとめる
31
35
  result = list(
32
- map(lambda x: x if len(x) == 2 else x[0],
36
+ map(lambda x: x[0] if len(x) == 1 else x,
37
+ sorted(list(map(lambda y1: list([e for e in range(y1[0], y1[1] + 1)]), lis))
33
- sorted(lis + [[y] for y in range(0, lis[-1][1])
38
+ + [[y] for y in range(0, lis[-1][1])
34
39
  if y not in sum(list(map( lambda z: list(range(z[0], z[1] + 1)), lis)), [])])
35
40
  )
36
41
  )
@@ -38,4 +43,4 @@
38
43
  ```
39
44
 
40
45
  実行例
41
- ![イメージ説明](3e7e7236e517ab4ac8907517e14d1d90.png)
46
+ ![イメージ説明](d992646886759c822ed570cd099e4882.png)