<p>这应该管用。我们检查一个数字是NaN还是不使用<a href="http://docs.python.org/2/library/math.html#math.isnan" rel="nofollow">^{<cd1>}</a>。</p>
<p>如果原始列表中的元素都不是<code>NaN</code>,我们将元素插入<code>list1_clean</code>和<code>list2_clean</code>。为了检查这一点,我们使用<a href="http://docs.python.org/2/library/functions.html?highlight=any#any" rel="nofollow">^{<cd5>}</a>函数,如果iterable的任何元素是<code>True</code>,则返回<code>True</code>。</p>
<pre><code>>>> list1 = [[1, 2, float('NaN')], [3, 7, 8], [1, 1, 1], [10, -1, float('NaN')]]
>>> list2 = [1, 2, 3, 4]
>>> from math import isnan
>>> list1_clean = [elem for elem in list1 if not any([isnan(element) for element in elem])]
>>> list1_clean
[[3, 7, 8], [1, 1, 1]]
>>> list2_clean = [list2[index] for index, elem in enumerate(list1) if not any([isnan(element) for element in elem])]
>>> list2_clean
[2, 3]
</code></pre>
<p>为了缩小它并避免使用<code>zip</code>您可以这样做</p>
<pre><code>>>> cleanList = [(elem, list2[index]) for index, elem in enumerate(list1) if not any([isnan(element) for element in elem])]
>>> cleanList
[([3, 7, 8], 2), ([1, 1, 1], 3)]
>>> list1_clean = [elem[0] for elem in cleanList]
>>> list2_clean = [elem[1] for elem in cleanList]
</code></pre>
<p><code>any</code>函数-></p>
<pre><code>any(...)
any(iterable) -> bool
Return True if bool(x) is True for any x in the iterable.
</code></pre>
<p><code>isnan</code>函数-></p>
<pre><code>isnan(...)
isnan(x) -> bool
Check if float x is not a number (NaN).
</code></pre>