<p>可以从这些基本体构建所有变体:</p>
<pre><code>def even_list(numbers):
return [x for x in numbers if not (x & 1)]
def odd_list(numbers):
return [x for x in numbers if x & 1]
def negative_list(numbers):
return [x for x in numbers if x < 0]
def positive_list(numbers):
return [x for x in numbers if x > 0]
</code></pre>
<p>然后测试:</p>
<pre><code>>>> def test():
... numbers = list(range(-3, 4))
... print even_list(numbers)
... print odd_list(numbers)
... print positive_list(numbers)
... print negative_list(numbers)
...
>>> test()
[-2, 0, 2]
[-3, -1, 1, 3]
[1, 2, 3]
[-3, -2, -1]
</code></pre>
<hr/>
<p>稍后:所以从@Kos中偷窃,您可以这样写<code>split_list</code>:</p>
<pre><code>def split_list(myList, option):
predicate = negative_list if not option else even_list
return predicate(myList)
</code></pre>
<p>或:</p>
<pre><code>def split_list(myList, option):
predicates = [negative_list, even_list]
return predicates[option](myList)
</code></pre>
<p>如果<code>for-loop</code>在被调用函数的列表理解中,不确定它是否满足您的需要。</p>
<p><a href="http://www.python.org/dev/peps/pep-0008/#function-names" rel="nofollow">Also</a>:“函数名应该小写,必要时用下划线分隔单词,以提高可读性。”</p>