一、filter

#filter()函数用于过滤序列。和map()类似,也接收一个函数和一个序列,把函数依次作用于每个元素,根据返回值是True还是False决定是否保留该元素。
#filter()函数返回的是一个Iterator,即惰性序列,所以要强迫filter()完成计算结果,需要用list()函数获得所有结果并返回list。
def odd(n):
return n%2==1
ms=list(filter(odd,[1,2,3,4,5,6,7,8,9,10])) #保留奇数
print(ms) #一、过滤空字符串
def not_empty(s):
return s and s.strip()
ms=list(filter(not_empty,['Zc',' ','BOOM',None,'BLOG']))
print(ms) #二、生成范围素数数组
#构造一个从3开始的奇数序列
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) #构造新序列
#输出1000以内的素数
for n in primes():
if n <1000:
print(n)
else:
break

上面这个用生成器写素数数组的,我这种菜鸡是真的看不懂,没思路。下面是找群里某蓝色兔头专业代言雀巢咖啡三十年的java&Python双料大佬给我写了个简单的:

def test(num):
num_list = [True] * num
num_list[0] = False
for i in range(2, num+1):
for j in range(i+i, num+1, i):
num_list[j-1] = False
return [x+1 for x in range(len(num_list)) if num_list[x]] print(test(100))

二、sorted

#sorted()可以对list进行排序,还可以接收一个key()函数实现自定义排序.
#key指定的函数将作用于list的每一个元素上,并根据key函数返回的结果进行排序。
ms=sorted([35,-9,-20,23,2],key=abs) #按绝对值大小排序 #默认情况下,对字符串排序,是按照ASCII的大小来比较的
ms1=sorted(['boom','axure','Zero','Cat']) #['axure', 'boom', 'Cat', 'Zero']
ms2=sorted(['boom','axure','Zero','Cat'],key=str.upper) #['Zero', 'Cat', 'boom', 'axure'] #反向排序,加参数reverse
ms3=sorted(['boom','axure','Zero','Cat'],key=str.upper,reverse=True)

 三、练习

L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
#按照名字排序
def by_name(n):
return n[0]
print(by_name(L))
L2 = sorted(L, key=by_name)
print(L2) #按照成绩降序
def by_score(n):
return n[1]
L2 = sorted(L, key=by_score,reverse=True)
print(L2)

Python学习笔记系列——高阶函数(filter/sorted)的更多相关文章

  1. Python学习笔记系列——高阶函数(map/reduce)

    一.map #变量可以指向函数,函数的参数能接受变量,那么一个函数就可以接受另一个函数作为参数,这种函数被称之为高阶函数 def add(x,y,f): return f(x)+f(y) print( ...

  2. Python学习 Day 5 高阶函数 map/reduce filter sorter 返回函数 匿名函数 装饰器 偏函数

    高阶函数Higher-orderfunction 变量可以指向函数 >>> abs #abs(-10)是函数调用,而abs是函数本身 <built-in function ab ...

  3. 【Python学习之六】高阶函数2(map、reduce、filter、sorted)

    3.filter filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素.相当于一 ...

  4. 【Python学习之六】高阶函数1(map、reduce、filter、sorted)

    1.map map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回.示例: >>> def ...

  5. python学习笔记011——内置函数filter()

    1 描述 filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表. 2 语法 filter(function, iterable) function -- 函数,过 ...

  6. scala学习笔记:高阶函数

    scala> def power(y:Double)=(x:Double)=>Math.pow(x,y) warning: there were 1 deprecation warning ...

  7. python六十三课——高阶函数之sorted

    演示sorted函数的使用,以及和sort的区别:我们将sorted和sort进行一番比较:相同点:它们都是来实现排序的操作(功能层面)不同点:列表中的sort函数,它执行完毕后会直接影响原本这个li ...

  8. 【python】python函数式编程、高阶函数

    1.map() : python内置的高阶函数,接收一个函数f和一个list,并通过把函数f依次作用在list的每个元素上,得到一个新的list并            返回. def f(x): r ...

  9. python入门16 递归函数 高阶函数

    递归函数:函数内部调用自身.(要注意跳出条件,否则会死循环) 高阶函数:函数的参数包含函数 递归函数 #coding:utf-8 #/usr/bin/python """ ...

随机推荐

  1. c#如何仅在datatgirdview控件的头部(列名处)添加右键菜单

    近期在弄ArcgisAE实习,其中有一个功能是需要操作图层的属性字段的,为了方便操作图层的属性,最好是在图层的属性表中,也就是在显示图层属性的DataGirdView控件的头部添加一个右键菜单来实现相 ...

  2. 在android工程中,res目录下又有anim、drawable、layout、menu、raw、values和xml文件夹,分别用来保存?

    res目录主要是存放资源文件的!layout 布局 这个就是你经常看到的与用户交互的界面的 xml 文件,就是各个 view 的排列和嵌套,没什 么好说的啦 风格和主题. 风格主要是指 view 的显 ...

  3. windows 静态IP设置举例

    IP 172.20.108.239 子网掩码 255.255.255.0 网关 172.20.108.1

  4. SpringBoot 之配置server 信息

    一.修改端口号 spring-boot 默认的端口号是8080,如需修改. 1.新建一个src/main/resources 文件夹 2.在这个文件夹下新建一个application.properti ...

  5. java基础(八) 深入解析常量池与装拆箱机制

    引言   本文将介绍常量池 与 装箱拆箱机制,之所以将两者合在一起介绍,是因为网上不少文章在谈到常量池时,将包装类的缓存机制,java常量池,不加区别地混在一起讨论,更有甚者完全将这两者视为一个整体, ...

  6. Linux pyenv环境安装

    python工作环境管理 pyenv安装: git clone https://github.com/pyenv/pyenv ~/.pyenv echo 'export PYENV_ROOT=&quo ...

  7. 009_svn配置多仓库与权限控制(Alpha)

    1,配置多仓库 实际项目中,我们会同时开发多个项目,通过SVNserve进行仓库监管,但是监管命令只能同时监管一个文件夹,而不能同时监管多个仓库. 解决方法: 可以通过监管总目录来监管所有仓库 SVN ...

  8. windows下建立netcore控制台程序,然后传送到centos7下的docker容器里运行

    1.首先,在window下用vs2017开发netcore控制台项目. 2.把建立好的项目传送到centos7下面的容器里. docker cp sharefoldersforwindows/ 359 ...

  9. Paxos可容错的一致性协议

    一致性问题要求多个process对一个值达成一致.基于消息传递的分布式系统中,在不考虑消息篡改等拜占庭错误的情况下,Paxos可以解决在进程退出,消息延迟,丢失,重复等异常发生的环境中对某个值达成一致 ...

  10. [CENTOS7] 修改机器名:hostnamectl set-hostname host.domain

    # hostnamectl set-hostname host.domain