实际问题有哪些?

  1. 过滤掉列表[3,9,-1,10.-2......] 中负数
  2. 筛选出字典{‘li_ming’:90,’xiao_hong’:60,’li_kang’:95,’bei_men’:98} 中值高于90的项
  3. 筛选出集合{3,9,-1,10.-2......]中能被3整除的数

问题1如何解决?

  最普通方法

#!/usr/bin/python3

def filter_l(data):
res = []
for i in data:
if i > 0:
res.append(i)
return res if __name__ == '__main__':
data = [3, 9, -1, 10, -2]
new_l = filter_l(data)
print(new_l)

如何解决列表问题?

   初始化列表: 生成 -10 到 10 的随机数列表,去除负数

  1filter方法:

#!/usr/bin/python3

from random import randint

def filter_l(data):
# 循环data列表,把值一个一个取出 交个lambda中x,如何lambda函数为True,返回x生成一个新的filter对象
return filter(lambda x: x >= 0, data) if __name__ == '__main__':
# 列表生成10个 -10 到 10 的随机数
data = [randint(-10, 10) for _ in range(10)]
print(data)
# new_l 为可迭代对象
new_l = filter_l(data)
print(list(new_l), type(new_l))

2. 列表解析:

#!/usr/bin/python3

from random import randint

def filter_l(data):
# 循环data列表,把值一个一个取出 是否满足if条件,满足True返回x生成一个新列表
return [x for x in data if x >=0 ] if __name__ == '__main__':
# 列表生成10个 -10 到 10 的随机数
data = [randint(-10, 10) for _ in range(10)]
print(data)
# new_l 为可迭代对象
new_l = filter_l(data)
print(list(new_l), type(new_l))

运行速度比较:解析 > filter > 普通

如何解决字典?

字典解析,筛选数据:

#!/usr/bin/python3

from random import randint

def filter_l(data):
print(data.items())
# 把字典转换成dict_items,循环里面的key和value,满足if条件返回对应的key和value值
return {k: v for k, v in data.items() if v > 90} if __name__ == '__main__':
# 字典生成式
data = {x: randint(0, 100) for x in range(10)}
print(data)
new_l = filter_l(data)
print(new_l, type(new_l))

  如何解决集合问题?

#!/usr/bin/python3
from random import randint def filter_l(data):
# 迭代集合中值,满足条件为True返回x
return {x for x in data if x % 3 == 0} if __name__ == '__main__':
# 集合生成式
data = {randint(0, 100) for x in range(10)}
print(data)
new_l = filter_l(data)
print(new_l, type(new_l))

逻辑整理

  无论是解析器还是普通方法,都需要for循环,if判断,逻辑都是满足条件返回值,过滤出满足条件的值,无论是生成器还是解析器都满足这个格式:“ 返回值 for循环 if判断 “,通过lambda满足格 式:“lambda 输入值:条件, 格式化数据

北门吹雪: https://www.cnblogs.com/2bjiujiu/

最新文章

  1. MonkeyTest简单实用介绍
  2. android的基础入门
  3. 缓存需要注意的问题以及使用.net正则替换字符串的方法
  4. ios/mac/COCOA系列 -- UIALertVIew 学习笔记
  5. org.apache.hadoop.fs-BlockLocation
  6. 个人笔记--Servlet之过滤器实现权限拦截
  7. ASP.NET给Table动态添加删除行,并且得到控件的值
  8. SpringMVC日期类型转换问题三大处理方法归纳
  9. 布局神器display:flex
  10. Ubuntu 18.04 安装博通(Broadcom)无线网卡驱动
  11. 当页面是动态时 如果后台存储id可以通过查询后台方式获取对象;当后台没有存储时候 只有通过前端标记了 例如标记数量为10 我们根据传递过来的10循环取值
  12. 定时器同步+触发三ADC采样+输出6路PWM波
  13. Select 子句后的别名,在where条件中不能使用
  14. BZOJ.1492.[NOI2007]货币兑换(DP 斜率优化 CDQ分治/Splay)
  15. Redis服务搭建与基础功能示例
  16. HTML/HTML5 Input类型&&表单
  17. vue组件的使用和事件传递
  18. C#中让WebBrowser运行Javascript脚本
  19. Flexbox指南
  20. [转]winform利用读取xml获取webconfig

热门文章

  1. Go从三个站点中返回响应最快的
  2. 第三章 go语言 程序的流程控制
  3. 2017-07-20聊聊《C#本质论》
  4. 集合并发修改异常-foreach的时候不可修改值
  5. Zabbix实战-简易教程--技巧(本地化)
  6. Struts2中访问web元素的四种方式
  7. Django----->Ajax
  8. AdaBoostRegressor
  9. HDU 1711 Number Sequence(KMP裸题,板子题,有坑点)
  10. 状压dp入门第一题 poj3254