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

回答編集履歴

2

d

2019/04/16 07:15

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -35,4 +35,27 @@
35
35
  # 0 [0, 0, 0]
36
36
  # 1 [1, 1, 1, 1, 1]
37
37
  # 0 [0, 0, 0, 0]
38
+ ```
39
+
40
+ ## 自前で書く場合
41
+
42
+ ```python
43
+ lst = [0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0]
44
+ N = 3
45
+
46
+ curr_value = lst[0]
47
+ cnt = 0
48
+ for i, value in enumerate(lst):
49
+ if value == curr_value:
50
+ # 前回と同じ値ならカウント +1
51
+ cnt += 1
52
+ else:
53
+ # 前回と異なる値ならカウントを0にする。
54
+ cnt = 0
55
+ curr_value = value
56
+
57
+ if cnt == N and value == 1:
58
+ # N個連続 かつ 値が1の場合ループ終了
59
+ print(i - N)
60
+ break
38
61
  ```

1

d

2019/04/16 07:15

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -6,7 +6,7 @@
6
6
  lst = [0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0]
7
7
  N = 3 # 「N 個以上連続していたら」という条件の値
8
8
 
9
- i = 1
9
+ i = 0
10
10
  for k, g in groupby(lst):
11
11
  g = list(g) # list に変換
12
12
 
@@ -18,6 +18,10 @@
18
18
  i += len(g)
19
19
  ```
20
20
 
21
+ ```output
22
+ 8
23
+ ```
24
+
21
25
  [itertools.groupby](https://docs.python.org/ja/3/library/itertools.html#itertools.groupby) の使い方
22
26
 
23
27
  ```python