如何将整数序列转换为双重复交替二进制序列?
索引映射解决方案
要将 range(0,36) 生成的整数索引序列映射为 0,0,1,1 循环交替的序列(每2个连续索引对应同一值),最简实现方式如下:
方法一:整数除法+取余
这是最直观的实现方式,逻辑清晰易懂:
result = [n // 2 % 2 for n in range(36)]
- 解释:
n // 2先将每2个连续索引归为一组(比如索引0、1对应0,2、3对应1,以此类推),再对2取余,就能让分组后的数值在0和1之间循环,得到目标序列。
方法二:位运算优化
如果追求更高效的计算,可使用位运算替代取余操作(仅适用于对2的幂取余的场景):
result = [(n // 2) & 1 for n in range(36)]
- 解释:
(n // 2) & 1的效果和n // 2 % 2完全一致,但位运算在底层执行时速度更快。
结果验证
生成的序列前8项为:[0, 0, 1, 1, 0, 0, 1, 1],完全满足每2个连续索引对应同一值、0和1循环交替的要求。
内容的提问来源于stack exchange,提问作者DM71
相关产品推荐
相关产品推荐

