例子:有趣的素数
假设你的老板让你写一个函数,输入参数是一个int的list,返回一个可以迭代的包含素数
记住,迭代器(Iterable) 只是对象每次返回特定成员的一种能力。
你肯定认为"这很简单",然后很快写出下面的代码:
def get_primes(input_list):
result_list = list()
for element in input_list:
if is_prime(element):
result_list.append()
return result_list
# 或者更好一些的...
def get_primes(input_list):
return (element for element in input_list if is_prime(element))
# 下面是 is_prime 的一种实现...
def is_prime(number):
if number > 1:
if number == 2:
return True
if number % 2 == 0:
return False
for current in range(3, int(math.sqrt(number) + 1), 2):
if number % current == 0:
return False
return True
return False
上面 is_prime 的实现完全满足了需求,所以我们告诉老板已经搞定了。她反馈说我们的函数工作正常,正是她想要的。