gpt4 book ai didi

python - 如何在 python 中使用二进制模式(按位)计数访问列表元素

转载 作者:太空宇宙 更新时间:2023-11-03 18:18:39 26 4
gpt4 key购买 nike

我很难找到一种方法来访问以二进制访问模式表示的某些列表元素。我的意思是:

假设我们有一个 4 位二进制数 Bin:Bin = 0b0000我们还有一个与 Bin 长度相同的列表(或集合或元组,无关紧要),可以说: list = [A, B, C, D]

现在,我想组合访问 Bin 中由 1 表示的元素,这意味着如果我们位于 ,则计数器在每个循环上递增 +1 >Bin = 0b0101 (这意味着 Bin = 10)然后我想访问相应的索引,因此列表中的 BD 元素。

同样的情况,直到当 Bin = 0b1111Bin = 15 时循环结束,我最终访问列表 A、B、C、D.

提前致谢。

最佳答案

这是 M.I.T 6.00x 类(class)中使用的幂集生成器。

def powerSet(items):
n = len(items)
for i in xrange(2**n):
combo = []
for j in xrange(n):
#print i,j,(i >> j) % 2 == 1 # uncomment to see the values through the loop
# test bit jth of integer i
if (i >> j) % 2 == 1:
combo.append(items[j])
yield combo
print list(powerSet([1,2,3,4]))
[[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3], [4], [1, 4], [2, 4], [1, 2, 4], [3, 4], [1, 3, 4], [2, 3, 4], [1, 2, 3, 4]]

if (i >> j) % 2 == 1 也可以写成 if (i >> j) & 1

它使用>> Bitwise Operator .

*x >> y返回 x,其中位向右移动 y 位。这与//'ing x by 2**y 相同。*

关于python - 如何在 python 中使用二进制模式(按位)计数访问列表元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24600564/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com