擅长:python、mysql、java
<p>您可以更改您的<code>RepresentsInt</code>函数,以实际返回整数(如果可能),这样做会更容易:</p>
<pre><code>def RepresentsInt(s):
try:
return int(s)
except ValueError:
return s
</code></pre>
<p>然后转换列表的代码可以写成(使用<code>for item in l</code>循环可能比迭代索引要好):</p>
^{pr2}$
<p>或者,如果您希望作为可重用的模式,您仍然需要一个helper函数(我在这里选择了一种类似于decorator的方法),因为您不能在理解中使用<code>try</code>和/或{<cd4>}:</p>
<pre><code>def try_to_apply_func(func, exception):
def newfunc(value):
try:
return func(value)
except exception:
return value
return newfunc
>>> to_int_if_possible = try_to_apply_func(int, ValueError)
>>> [to_int_if_possible(item) for item in l]
[1, 2, 3, 'rt4', 'rt5']
>>> to_float_if_possible = try_to_apply_func(float, ValueError)
>>> [to_float_if_possible(item) for item in l]
[1.0, 2.0, 3.0, 'rt4', 'rt5']
</code></pre>