擅长:python、mysql、java
<blockquote>
<p>Would it be sacrilegious to use <code>if type(val) is list</code> instead?</p>
</blockquote>
<p>是的,因为它不适用于list的子类。如果你想走这条路,至少要做<code>isinstance(val, list)</code>。这里有一个特别处理列表的解决方案,并将其他所有内容(包括标量和元组)转换为NumPy数组:</p>
<pre><code>def feetToMeters(feet):
meters = np.asarray(feet) * 0.3048
return list(meters) if isinstance(feet, list) else meters
</code></pre>
<p>请注意:</p>
<ul>
<li>传递<code>list</code>子类的实例将导致返回一个普通的<code>list</code></li>
<li>传递列表列表将导致返回NumPy数组的列表。在</li>
</ul>
<p>您可以扩展它来专门处理更多类型,但一般来说,对于要处理的每个类型,您需要编写更多的代码,因为您需要知道如何构造该类型。因此,这种类型转换通常留给客户端代码。在</p>