嗨我正在试图找出一个函数,其中给定列表的长度n [x1,x2 ... xn],基数为2的数字系统需要多少位数来为每个值分配一个唯一的代码.名单.
例如,一个数字可以包含两个唯一值:
x1 0
x2 1
Run Code Online (Sandbox Code Playgroud)
两位数可以容纳四位数:
x1 00
x2 01
x3 10
x4 11
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写一个python函数calcBitDigits(myListLength),它接受此列表长度并返回所需的位数.calcBitDigits(2)= 1,calcBitDigits(4)= 2,calcBitDigits(3)= 2,等等
这是一个非常简单的问题,但我不知道为什么python会这样做.对于下面的循环,if head != None...正在创建一个局部变量,以便head += 1不修改头部for head in myHeap.array.在头+ + 1之后添加一个打印(头)产生我想要的结果,但if语句之外的头保持不变.
for head in myHeap.array:
if head != None and count % int(grow) == 0:
head += 1
Run Code Online (Sandbox Code Playgroud)
所以当预期[3,3,3,2]时,输入myHeap.array = [2,2,2,1]在迭代结束时输出相同的列表.我还验证了if语句满足条件,解释器使用该head += 1行