擅长:python、mysql、java
<p>我在你的代码中看到很多for循环。这会减慢你的程序。以下是一些具有更好运行时的代码:</p>
<pre><code>bcDict = {'TTCTCTTACCGGGTAC':1,'ACCTCTCGAGAATTCA':2,'TGCAGTTCTGTGCATC':3}
bcMutCount = [(('TTCTCTTACCGGGTAC', 'ATTCAACA'), 184),
(('ACCTCTCGAGAATTCA', 'CATCCCAC'), 136),
(('ACCTCTCGAGAATTCA', 'CATGCCAC'), 1),
(('ACCTCTCGAGAATTCA', 'CATCCCCC'), 1),
(('TGCAGTTCTGTGCATC', 'TCTACATT'), 373),
(('TGCAGTTCTGTGCATC', 'ACTGCGCA'), 2)]
for key in bcDict:
print({key:[(a[1],b) for a,b in bcMutCount if a[0] == key]})
</code></pre>
<p>输出:</p>
<pre><code>{'TTCTCTTACCGGGTAC': [('ATTCAACA', 184)]}
{'ACCTCTCGAGAATTCA': [('CATCCCAC', 136), ('CATGCCAC', 1), ('CATCCCCC', 1)]}
{'TGCAGTTCTGTGCATC': [('TCTACATT', 373), ('ACTGCGCA', 2)]}
</code></pre>
<p>如果这不是你想要的,请纠正我。上面的代码应该在<em>O(m*n)</em>中运行,其中<em>m</em>是bcDict中的键数,<em>n</em>是bcMutCount的长度。
这个速度够快吗?你知道吗</p>