擅长:python、mysql、java
<p>我认为你的for循环没有达到你想要的效果:</p>
<pre><code>pos = 0
IC = 0
for list in lst:
for i in list:
</code></pre>
<p>第一个问题是您正在设置<code>pos = 0</code>并在循环中使用它,但是您从不增加它(即在循环中您不执行<code>pos += 1</code>)。另一个问题是,嵌套循环是没有原因的。想想你的代码做了什么-<code>for list in lst:</code>意味着你做了四次外循环;然后在每一次外循环中,你对每一个项目进行循环,并对所有四个列表中的项目执行操作。我认为这意味着你要做的循环数是你想要的4倍,在每个循环中,你总是从每个列表中获取第一项(因为<code>pos</code>总是等于0)。你知道吗</p>
<p>我认为要得到你想要的,你需要做一些事情,比如:</p>
<pre><code>def function_name(lst, background):
ab, cb, gb, tb = background[0], background[1], background[2], background[3]
a, c, g, t = lst[0][:], lst[1][:], lst[2][:], lst[3][:]
pos = 0
IC = 0
for pos in range(len(a)):
loga = math.log(((a[pos])/ab), 2)
logc = math.log(((c[pos])/cb), 2)
logg = math.log(((g[pos])/gb), 2)
logt = math.log(((t[pos])/tb), 2)
ICi = (a[pos]*loga + c[pos]*logc + g[pos]*logg + t[pos]*logt)
IC += ICi
return IC
</code></pre>