 <p>You could get rid of columns with<code>None</code>in them like this (in either Python 2.7 or 3+):</p> <pre><code>from __future__ import print_function try: from itertools import izip except ImportError: izip = zip ra = [0, 1, 2, float('nan'), 8 , 3, 8, 5] ma = [3, float('nan'), 5, 8, 9, 6, 4, 10] op = [7, None, 7, 9, 3, 6, None, 7] ra, ma, op = izip(*(col for col in izip(ra, ma, op) if None not in col)) print('ra =', ra) print('ma =', ma) print('op =', op) </code></pre> <p>Output:</p> <pre class="lang-none prettyprint-override"><code>ra = (0, 2, nan, 8, 3, 5) ma = (3, 5, 8, 9, 6, 10) op = (7, 7, 9, 3, 6, 7) </code></pre> <p>As @Bakuriu mentioned in a comment, it might be a better to use the<code>compress()</code>function which is in the built-in<code>itertools</code>module and is therefore likely to be faster. It also eliminates the relatively slow linear search through each column of values in the above.</p> <pre><code>from itertools import compress ra, ma, op = izip(*compress(izip(ra, ma, op), (x is not None for x in op))) </code></pre>