擅长:python、mysql、java
<p>我注意到了一些关于Python效率的琐事:</p>
<pre><code>if x not in dropoff_ids
</code></pre>
<p>使用<code>in</code>运算符检查成员身份在<code>set</code>上比在<code>list</code>上更有效。但是用<code>for</code>遍历<code>list</code>可能比在<code>set</code>上更有效。因此,如果您希望前两行尽可能高效,您应该事先准备好这两种类型的数据结构。你知道吗</p>
<pre><code>list(set(pickup_ids + dropoff_ids))
</code></pre>
<p>在合并数据之前创建集合比创建长的<code>list</code>并从中构造<code>set</code>更有效。幸运的是,您现在可能已经有了<code>set</code>版本(参见第一条注释)!你知道吗</p>
<p>首先,你需要问自己一个问题:</p>
<blockquote>
<p>Is the time I save by constructing extra data structures worth the time it takes to construct them?</p>
</blockquote>
<p>下一个:</p>
<pre><code>np.sum([...])
</code></pre>
<p>我接受过Python的训练,可以考虑构造一个<code>list</code>,然后应用一个理论上只需要生成器作为<a href="http://en.wikipedia.org/wiki/Code_smell" rel="nofollow">code smell</a>的函数。我不确定这是否适用于numpy,因为据我所知,从生成器中提取数据并将其放入numpy结构并不完全简单。你知道吗</p>
<p>看起来这只是代码的一小部分。如果您真的关心效率,我建议您使用numpy数组而不是列表,并尽可能地使用numpy的内置数据结构和函数。与内置的Python函数相比,它们可能更适合于C中的原始数据处理。你知道吗</p>
<p>如果你真的,真的关心效率,那么你应该直接用C语言进行数据分析。特别是如果你没有比你在这里介绍的更多的代码,那么翻译起来可能非常容易。你知道吗</p>