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

回答編集履歴

4

追記

2021/05/10 08:18

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -57,5 +57,25 @@
57
57
  break
58
58
 
59
59
  dst[-1].append(i)
60
-
60
+ ```
61
+
62
+ さらに追記
63
+ ---
64
+ 普通に読み辛いですし効率面も特段良くありませんが、個人的にはこういうのが好きです。
65
+ おまけです。
66
+
67
+ ```Python
68
+ indice_1 = (
69
+ i for i, e in enumerate(src)
70
+ if e == 1
71
+ )
72
+ dst = [
73
+ [idx, *map(operator.itemgetter(0), zip(
74
+ itertools.count(idx+1),
75
+ itertools.takewhile(
76
+ lambda e: e == 2, src[idx+1:]
77
+ )
78
+ ))]
79
+ for idx in indice_1
80
+ ]
61
81
  ```

3

追記

2021/05/10 08:18

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -38,4 +38,24 @@
38
38
  while i < len(src) and src[i] == 2:
39
39
  dst[-1].append(i)
40
40
  i += 1
41
+ ```
42
+
43
+ for文を使うなら二回に分けた方が無駄が少ないように思います。
44
+ ```Python
45
+ dst = []
46
+
47
+ it = (
48
+ i for i, e in enumerate(src)
49
+ if e == 1
50
+ )
51
+ for index_1 in it:
52
+ dst.append([index_1])
53
+
54
+ idx = index_1 + 1
55
+ for i, e in enumerate(src[idx:], start=idx):
56
+ if e != 2:
57
+ break
58
+
59
+ dst[-1].append(i)
60
+
41
61
  ```

2

追記

2021/05/10 06:41

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -18,4 +18,24 @@
18
18
  **実行結果** [Wandbox](https://wandbox.org/permlink/SVnsvzydmFuJXlyh)
19
19
  ```
20
20
  [[6], [9, 10, 11]]
21
+ ```
22
+
23
+ コメントを受けて
24
+ ---
25
+ 例えば、こんなふうに。
26
+ ```Python
27
+ dst = []
28
+
29
+ i = 0
30
+ while i < len(src):
31
+ if src[i] != 1:
32
+ i += 1
33
+ continue
34
+
35
+ dst.append([i])
36
+ i += 1
37
+
38
+ while i < len(src) and src[i] == 2:
39
+ dst[-1].append(i)
40
+ i += 1
21
41
  ```

1

追記

2021/05/10 06:32

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -3,7 +3,9 @@
3
3
  import re
4
4
 
5
5
 
6
- src = [4, 4, 2, 4, 5, 3, 1, 3, 4, 1, 2, 2, 3]
6
+ src = [4,4,2,4,5,3,1,3,4,1,2,2,3]
7
+ assert all(len(str(e)) == 1 for e in src) # srcの全要素は1桁
8
+
7
9
  dst = [
8
10
  [*range(m.start(), m.end())]
9
11
  for m in re.finditer(r'12*', ''.join(map(str, src)))
@@ -13,9 +15,7 @@
13
15
  print(dst)
14
16
  ```
15
17
 
16
- **実行結果** [Wandbox](https://wandbox.org/permlink/UisInPKlpqtXe35k)
18
+ **実行結果** [Wandbox](https://wandbox.org/permlink/SVnsvzydmFuJXlyh)
17
19
  ```
18
20
  [[6], [9, 10, 11]]
19
- ```
21
+ ```
20
-
21
- srcの全ての要素が1桁の整数との前提です。