<p>本着简短代码的精神。。。我有一个数字或空字符串的列表,我希望<code>map(int, mylist)</code>不会失败。在</p>
<pre><code>mylist = "123//456".split("/") #['123', '', '456']
myints = <something to quickly convert the list>
</code></pre>
<p>需要编辑相同的令牌数。一、 e.<code>myints = [123, 0, 456]</code>。在</p>
<p>我想的是<code>map(lambda x: int(x) or 0, mylist)</code>,但这当然还是抛出了<code>ValueError</code>。有什么想法吗?在</p>
<hr/>
<p><strong>另一个编辑</strong></p>
<p>一些结果(计时<code>for xrange(1000000)</code>)。。。在</p>
<ul>
<li><em>2.03秒</li>
<li><em>1.37s</em><code>l = [x.isdigit() and int(x) or 0 for x in mylist]</code></li>
<li><em>{EE8><1.99米</li>
<li><em>1.35s</em><code>l = [int(x) if x.isdigit() else 0 for x in mylist]</code></li>
<li><em>1.24秒</li>
<li><em>1.45秒</li>
<li><em>4.44s</em><code>the big chunk of code with try/except</code>所以越大越慢:)好吧,不总是这样</li>
</ul>
<p>只是包括这些时间,因为他们不产生期望的输出。。。在</p>
<ul>
<li><em>3.71s</em><code>l = map(int, re.findall('[0-9]+', "123//456"))</code>('过程正则表达式很慢。时间和地点)</li>
<li><em>1.47秒</li>
<li><em>1.15s</em><code>[int(x) for x in mylist if x]</code>(好时候!)在</li>
</ul>
<p>我应该提一下,<code>re.compile</code>将3.71秒降至2.11秒。</em></p>
<p><code>Python 2.7.3, Xeon E5-1607</code></p>
<p><strong><code>myints = [int(x or 0) for x in mylist]</code></strong>不仅最快,结果正确,而且非常短,只有29个字符。在</p>
<p>谢谢大家的意见!不太可能是落选者:P</p>