代码拉取完成,页面将自动刷新
# filter()也接收一个函数和一个序列。
# 和map()不同的是,filter()把传入的函数依次作用于每个元素,
# 然后根据返回值是True还是False决定保留还是丢弃该元素。
# 例如,在一个list中,删掉偶数,只保留奇数,可以这么写:
def is_odd(n):
return n%2 == 1
l = list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
print(l)
def not_empty(s):
return s and s.strip()
n = list(filter(not_empty, ['A', '', 'B', None, 'C', ' ']))
print(n)
# 可见用filter()这个高阶函数,关键在于正确实现一个“筛选”函数。
# 注意到filter()函数返回的是一个Iterator,
# 也就是一个惰性序列,所以要强迫filter()完成计算结果,需要用list()函数获得所有结果并返回list。
# 用filter求素数
def _odd_iter():# “全体素数”序列
n=1
while True:
n = n +2
yield n
def _not_divisible(n):
return lambda x:x%n >0
def primes():
yield 2
it = _odd_iter()# 初始序列
while True:
n = next(it)# 返回序列的第一个数
yield n
it = filter(_not_divisible(n),it)
# 打印20以内的素数:
for n in primes():
if n < 20:
print(n)
else:
break
# 注意到Iterator是惰性计算的序列,所以我们可以用Python表示“全体自然数”,
# “全体素数”这样的序列,而代码非常简洁。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。