我有一个列表chromosome
,其中包含40个条目。每个条目都是一个二进制数。例如,
chromosome = [1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1]
我需要将每个四个二进制文件转换为整数。例如,整数列表为
intlist = [12, 6 ... ]
从此1100b = 12
等等。
为了解决这个问题,我写了下面的Python函数
def makeChromosomeInteger(chromosome, chrom_size):
intstring = [0] * 10
i = 0
for j in range(0, 40, 4):
intstring[i] = str(chromosome[j]) + str(chromosome[j+1]) + str(chromosome[j+2]) + str(chromosome[j+3])
intstring[i] = int(intstring[i],2)
i = i+1
return intstring
在大多数情况下,这是可行的-该函数确实将每个四个二进制文件都转换为整数。但是,迟早我会收到以下错误消息:
builtins.TypeError: 'int' object is not subscriptable
问题似乎是intstring[i] = int(intstring[i],2)
。我真的不知道为什么会这样。既不是整数intstring
也不chromosome
是整数,那么为什么不能访问这些列表?
提前致谢!
PS:如果还有其他巧妙的方法可以转换这些条目,我欢迎您提出建议:)
您的代码应该可以工作,但是这是一个简化:
chromosome = [1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0,
0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0,
1, 0, 0, 1, 0, 0, 1, 1]
def makeIntList(chrom):
intlist = []
for j in range(0, len(chrom), 4):
intlist.append(chrom[j]*8 + chrom[j+1]*4 + chrom[j+2]*2 + chrom[j+3])
return intlist
intlist = makeIntList(chromosome)
print(intlist)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句