如果两个相同值之间的距离小于 5,如何更新二进制值数组?

How to update an binary values array if the distance between two same values is less than 5?

我正在处理 python 编码中的一个用例。

问题:

我有一个包含二进制值的数组,如 [0,0,0,0,1,0,0,1,0,1,0,0,0,0,0,1,0,1,1,1,0,0,0,0,1,1]。现在,如果它们(1's)之间的距离小于 5.

,我必须用两个(1's)之间的 1 替换所有值

例如,第一个1的索引是4,第二次出现的1的索引是7,所以它们之间的距离两次出现的 1 是 3,它小于 5(根据条件)因此,我们将用 1 替换这两个值之间的所有值。

同样,我们必须对数组的每个值都这样做。

示例 [0,0,0,0,1,0,0,1,0,1,0,0,0,0,0,1,0,1,1,1,0,0,0,0,1,1]

期望的输出

[0,0,0,0,1,**1,1**,1,**1**,1,0,0,0,0,0,1,**1**,1,1,1,**1,1,1,1**,1,1]
def insert_ones(bit_stream):
    new_bit_stream = bit_stream.copy()
    last_one_idx = -1
    for idx, bit in enumerate(bit_stream):
        if last_one_idx == -1:
            if bit == 1:
                last_one_idx = idx
        else:
            if bit == 1:
                length = idx - last_one_idx
                if length < 6:
                    new_bit_stream[last_one_idx : idx] = [1] * length
                last_one_idx = idx
    return new_bit_stream

如果您想就地改变流,可以将 new_bit_stream 替换为 bit_stream