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

回答編集履歴

1

コメントを追加、スペルミス(overrap→overlap)を修正

2021/03/03 09:44

投稿

NGW
NGW

スコア48

answer CHANGED
@@ -1,12 +1,13 @@
1
1
  以下のような感じでどうでしょうか
2
2
  ``` python
3
- n = 4
3
+ n = 4 # 重ね合わせ対象の1リストに含まれる要素数(サンプルのデータはすべて4個だったので。)
4
4
  new_list=[]
5
- overrap_num = n//2
5
+ overlap_num = n//2 # 重ね合わせのレートが50% (// は、割り切れない場合を考慮して整数にしています)
6
6
  for old in old_list:
7
- if len(new_list) > overrap_num:
7
+ if len(new_list) > overlap_num:
8
- prefix_index = len(new_list) - overrap_num
8
+ prefix_index = len(new_list) - overlap_num # 重ね合わせをしない、すでに決まった先頭部分のインデックスを探査
9
+ # 重ね合わせをしないすでに決まった先頭部分のリスト + 重ね合わせする部分のリスト + 重ね合わせしない追加分のリスト
9
- new_list = new_list[:prefix_index] + [ new_list[prefix_index + idx] + old[idx] for idx in range(overrap_num)] + old[overrap_num:]
10
+ new_list = new_list[:prefix_index] + [ new_list[prefix_index + idx] + old[idx] for idx in range(overlap_num)] + old[overlap_num:]
10
11
  else:
11
12
  new_list = old
12
13
  ```