擅长:python、mysql、java
<p><a href="http://numpy.scipy.org/" rel="nofollow">Numpy</a>比单个查找的首选解决方案差:</p>
<pre><code>$ python -m timeit -s 'import numpy as np; s="aabbccdd"' 'a = np.fromstring(s.decode("hex"), dtype="uint32"); a.dtype = "uint8"; list(a)'
100000 loops, best of 3: 5.14 usec per loop
$ python -m timeit -s 's="aabbcc";' '[int(s[i:i+2], 16) / 255. for i in xrange(0, len(s), 2)]'
100000 loops, best of 3: 2.41 usec per loop
</code></pre>
<p>但是如果你一次做几个转换,numpy要快得多:</p>
^{pr2}$
<p>在我的电脑上,Numpy对于大于2的批处理程序更快。您可以通过将<code>a.shape</code>设置为<code>(number_of_colors, 4)</code>来轻松地对值进行分组,尽管这会使<code>tolist</code>方法慢50%。在</p>
<p>实际上,大部分时间都花在将数组转换为列表上。根据您希望如何处理结果,您可以跳过这一步,并获得一些好处:</p>
<pre><code>$ python -m timeit -s 'import numpy as np; s="aabbccdd" * 100' 'a = np.fromstring(s.decode("hex"), dtype="uint32"); a.dtype = "uint8"; a.shape = (100,4)'
100000 loops, best of 3: 6.76 usec per loop
</code></pre>