Pythonに関する質問です。 0と1が不規則に並んでいるリストにおいて、0の連続が3つ以下の箇所を1に置き換えたリストを作成するコードが書きたいです。

ベストアンサー

0

ThanksImg質問者からのお礼コメント

分かりやすくご教授いただきありがとうございます。解決しました!

お礼日時:2021/11/30 10:13

その他の回答(2件)

0

from itertools import groupby lst = [0,0,0,0,1,1,0,0,0,1,0,0,0,0,1,1,0,0,1,1] ans = sum([[1]*len(g) if k == 0 and len(g) <= 3 else g             for k, d in groupby(lst) if (g:=[*d])], []) print(ans) # [0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1]

0

3回置き換えをするしかないような。 import re n = [0,0,0,0,1,1,0,0,0,1,0,0,0,0,1,1,0,0,1,1] s = ''.join(map(str, n)) o = re.sub(r'(^|(?<=1))(0{1})((?=1)|$)', '1', s) o = re.sub(r'(^|(?<=1))(0{2})((?=1)|$)', '11', o) o = re.sub(r'(^|(?<=1))(0{3})((?=1)|$)', '111', o) o = list(map(int, o)) print(o)

この返信は削除されました