擅长:python、mysql、java
<p>我比较了使用<code>random.choice</code>的版本与使用<code>random.uniform</code>的另一个版本。后者更快。后者根据字符串的长度生成随机数重新采样,并将其作为字符串的索引。在</p>
<p>这里有两个要比较的函数:您的<code>resampling_f</code>和{<cd4>}。在</p>
<hr/>
<pre><code>import random
import time
fastadict = {"seq1" : "ATGCAGTCACGT", "seq2" : "ATGTGTGTACG"};
def resampling_f(fastadict, seq, num):
fastadict[seq] = fastadict[seq].replace("N","").replace("n","")
l = []
new_seq = ''.join([random.choice(fastadict[seq]) for i in range(num)])
l.append(new_seq)
return l
def resample_new(data, num):
new= ''.join([data[int(random.uniform(0,num))] for i in range(num)]);
return new
</code></pre>
<p>与其在循环内<code>fastadict[seq].replace....</code>,不如在循环外执行,这样只需执行一次。在</p>
<hr/>
<p>下面是比较它们的代码:</p>
^{pr2}$
<hr/>
<p>我得到了<code>total_1</code>是<code>3.6</code>秒,<code>total_2</code>是{<cd9>}秒。在</p>
<p>如果20万次重采样,我得到第一个<code>37</code>秒,第二个是<code>28</code>秒。在</p>