一、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)

最新文章

  1. S5PV210_时钟系统
  2. [BZOJ1861][Zjoi2006]Book 书架
  3. sparksql udf的运用----scala及python版(2016年7月17日前完成)
  4. (转) TexturePacker 3.0 使用教程
  5. JavaScript拼接字符串传递多个参数
  6. 虚拟机centos6.5 --开放端口
  7. 部署Ossim
  8. [转]https方式使用git保存密码的方式
  9. ASP.NET - 无限极分类
  10. web开发与设计--js数据类型,js运营商
  11. 用html+css+js做打地鼠小游戏
  12. mongoDB之数据库操作
  13. java的properties文件-jdbc优化编程(五)
  14. oracle修改字符集方法
  15. openstack(Pike 版)集群部署(六)--- Horizon 部署
  16. 超详细的PS抠图方法
  17. 微信小程序开发工具常用快捷键
  18. Java服务CPU飙到99%问题排查
  19. 内存映射文件(Memory-Mapped File)
  20. Android重写HorizontalScrollView仿ViewPager效果

热门文章

  1. jQuery筛选结果等于true的筛选
  2. Android ListView的XML属性
  3. MYSQL 外键 on语句 多表查询
  4. 使用ASP.Net WebAPI构建REST服务——客户端
  5. 用Spider引擎解决数据库垂直和水平拆分的问题
  6. uml各类图
  7. 也许,这样理解HTTPS更容易
  8. Python学习---IO的异步[asyncio +aiohttp模块]
  9. Centos7下Mysql通过.frm和.ibd恢复数据
  10. 在 vSphere 5.x/6.0 中配置 Network Dump Collector 服务 (2002954)