python自学(八)——高阶函数(filter)

一、filter

接着昨天的学习filter
这个函数算是比较熟悉的了,和js的功能效果基本一致:对于传入的列表的每一个元素执行目标函数,返回函数中返回值为True的元素,组成一个新的列表

def f(item):

filter(f, list)
作业一:生成质数集合
#!/usr/bin/env python3
#encoding=utf-8
def getSu():
        def getJi():
                n = 1
                while True:
                        n = n+2
                        yield n
        def format(n):
                return lambda x:x%n>0
        def primes():
                yield 2
                it = getJi()
                while True:
                        n = next(it)
                        yield n
                        it = filter(format(n),it)
        for n in primes():
                if n < 1000:
                        print(n)
                else:
                        break
作业二:请利用filter()筛选出回数:
def getJi():
   n = 9
   while True:
   	n = n+1
   	yield n
def format(x):
   return str(x)[::-1] ==str(x) 
def primes():
   yield 9
   it = getJi()
   while True:
   	n = next(it)
   	yield n
   	it = filter(format,it)
for n in primes():
   if n < 1000:
   	print(n)
   else:
   	break

后记(字符串反转)

在完成作业的过程中,发现了字符串反转的操作,这是之前没讲过的,记下来

1. [::-1]

学切片的时候没有提到这个

	[::2] // 表示从头开始,每两个取一个
	[::-2] // 表示从右边开始,每隔两个取一个
2.reverse()
s = "123"
l = list(s) // reverse()不能在str上调用,所以要专程list了使用
l.reverse()
3.reduce (lambda配合更爽)
from functools import reduce
reduce(lambda a,b:b+a,"123")
发布了60 篇原创文章 · 获赞 66 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/u012436704/article/details/96375386