短代码不是更好的代码.短代码不是更快的代码.短代码不是可维护的代码.现在,也就是说,让您的个人组件简洁明了是件好事.
这就是我要做的事情:
def split_odd_even(number_list):
return {
'odds': filter(lambda n: (n % 2) != 0, number_list),
'evens': filter(lambda n: (n % 2) == 0, number_list)
}
def string_to_ints(string):
return map(int, numbers.strip().split())
numbers = '1 2 3 4 5 6 7 8 9 10'
nums = split_odd_even(string_to_ints(numbers))
print nums
这给了我:
{'odds': [1, 3, 5, 7, 9], 'evens': [2, 4, 6, 8, 10]}
虽然这段代码实际上已经添加了几行,但是程序正在做的事情变得更加清晰,因为我们已经应用了Abstraction并且使代码的每个组件只做了一件事.
尽管我们已经添加了两个函数,但代码中最可见的部分已经从这个:
numbers = '1 2 3 4 5 6 7 8'
nums = {'evens': [], 'odds': []}
for number in numbers.split(' '):
if int(number) % 2:
nums['odds'].append(number)
else:</