我有一个名为chromosome
的列表,其中包含40个条目。每个条目都是一个二进制数字。例如,错误“'int'对象不可自订”虽然对象是一个列表
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]
我需要每4个二进制文件转换为整数。例如,整数列表将
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
这在大多数情况下 - 功能每4个二进制文件的确转换为整数。但是,迟早我得到了如下错误信息:
builtins.TypeError: 'int' object is not subscriptable
,问题似乎是intstring[i] = int(intstring[i],2)
。我真的不知道为什么会发生这种情况。 intstring
也不是chromosome
是一个整数,所以为什么我不能地址这些列表?
在此先感谢!
PS:如果有任何其他聪明的方法对这些条目我是开放的建议:)
您显示的代码没有问题。 – ooga
你说这个函数大多是有效的,但迟早会出错。这意味着错误不是与函数本身,而是调用该函数的代码。你确定没有错误,它最终传递一个int而不是一个列表?使用try/catch块并在'TypeError'后将参数打印到函数中。 – Dunes
为什么downvote? – TheWaveLad