''''''
'''
内置函数或者和匿名函数结合输出
4,用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb
name=[‘oldboy’,'alex','wusir'] 5,用map来处理下述l,然后用list得到一个新的列表,列表中每个人的名字都是sb结尾
l=[{'name':'alex'},{'name':'y'}] 6,用filter来处理,得到股票价格大于20的股票名字
shares={
'IBM':36.6,
'Lenovo':23.2,
'oldboy':21.2,
'ocean':10.2,
} 7,有下面字典,得到购买每只股票的总价格,并放在一个迭代器中。
结果:list一下[9110.0, 27161.0,......]
portfolio = [
{'name': 'IBM', 'shares': 100, 'price': 91.1},
{'name': 'AAPL', 'shares': 50, 'price': 543.22},
{'name': 'FB', 'shares': 200, 'price': 21.09},
{'name': 'HPQ', 'shares': 35, 'price': 31.75},
{'name': 'YHOO', 'shares': 45, 'price': 16.35},
{'name': 'ACME', 'shares': 75, 'price': 115.65}] 8,还是上面的字典,用filter过滤出单价大于100的股票。 9,有下列三种数据类型,
l1 = [1,2,3,4,5,6]
l2 = ['oldboy','alex','wusir','太白','日天']
tu = ('**','***','****','*******')
写代码,最终得到的是(每个元祖第一个元素>2,第三个*至少是4个)
[(3, 'wusir', '****'), (4, '太白', '*******')]这样的数据。 10,有如下数据类型:
l1 = [ {'sales_volumn': 0},
{'sales_volumn': 108},
{'sales_volumn': 337},
{'sales_volumn': 475},
{'sales_volumn': 396},
{'sales_volumn': 172},
{'sales_volumn': 9},
{'sales_volumn': 58},
{'sales_volumn': 272},
{'sales_volumn': 456},
{'sales_volumn': 440},
{'sales_volumn': 239}]
将l1按照列表中的每个字典的values大小进行排序,形成一个新的列表。
''' # 4,用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb
# name=[‘oldboy’,'alex','wusir']
name=['oldboy','alex','wusir']
li2 = map(lambda x:x+'_sb',name)
print(li2)
print(list(li2)) #['oldboy_sb', 'alex_sb', 'wusir_sb']
print('----------------------------------4') # 5,用map来处理下述l,然后用list得到一个新的列表,列表中每个人的名字都是sb结尾
# l=[{'name':'alex'},{'name':'y'}]
l=[{'name':'alex'},{'name':'y'}]
li5 = map(lambda dic:dic['name']+'sb',l)
print(li5)
print(list(li5))
print('----------------------------------5') # 8,还是上面的字典,用filter过滤出单价大于100的股票。
portfolio = [
{'name': 'IBM', 'shares': 100, 'price': 91.1},
{'name': 'AAPL', 'shares': 50, 'price': 543.22},
{'name': 'FB', 'shares': 200, 'price': 21.09},
{'name': 'HPQ', 'shares': 35, 'price': 31.75},
{'name': 'YHOO', 'shares': 45, 'price': 16.35},
{'name': 'ACME', 'shares': 75, 'price': 115.65}] li8 = filter(lambda dic:dic['price']>100,portfolio)
print(li8)
print(list(li8))
#[{'name': 'AAPL', 'shares': 50, 'price': 543.22}, {'name': 'ACME', 'shares': 75, 'price': 115.65}]
print('----------------------------------8') # 10,有如下数据类型:
# l1 = [ {'sales_volumn': 0},
# {'sales_volumn': 108},
# {'sales_volumn': 337},
# {'sales_volumn': 475},
# {'sales_volumn': 396},
# {'sales_volumn': 172},
# {'sales_volumn': 9},
# {'sales_volumn': 58},
# {'sales_volumn': 272},
# {'sales_volumn': 456},
# {'sales_volumn': 440},
# {'sales_volumn': 239}]
# 将l1按照列表中的每个字典的values大小进行排序,形成一个新的列表。
l1 = [ {'sales_volumn': 0},
{'sales_volumn': 108},
{'sales_volumn': 337},
{'sales_volumn': 475},
{'sales_volumn': 396},
{'sales_volumn': 172},
{'sales_volumn': 9},
{'sales_volumn': 58},
{'sales_volumn': 272},
{'sales_volumn': 456},
{'sales_volumn': 440},
{'sales_volumn': 239}]
li10 = sorted(l1,key=lambda dic:dic['sales_volumn'],reverse = False)
print(li10)
#[{'sales_volumn': 0}, {'sales_volumn': 9}, {'sales_volumn': 58}, {'sales_volumn': 108},
# {'sales_volumn': 172}, {'sales_volumn': 239}, {'sales_volumn': 272}, {'sales_volumn': 337},
# {'sales_volumn': 396}, {'sales_volumn': 440}, {'sales_volumn': 456}, {'sales_volumn': 475}]
print('----------------------------------9')
 # 6,用filter来处理,得到股票价格大于20的股票名字
shares={
'IBM':36.6,
'Lenovo':23.2,
'oldboy':21.2,
'ocean':10.2,
} li61 = filter(lambda x:x[-1]>20,shares.items())
print(list(li61)) #[('IBM', 36.6), ('Lenovo', 23.2), ('oldboy', 21.2)]
print('----------------------1') def func62(items1):
if items1[1] >20:
return items1 #返回的是参数,键值对
li62 = filter(func62,shares.items()) #shares.items()的每一个元素都是键值对
print(list(li62)) #[('IBM', 36.6), ('Lenovo', 23.2), ('oldboy', 21.2)]
#最后返回的是键值对,组成的列表
print('----------------------2') def func621(items1):
return items1[1] >20 #返回的是参数,键值对
li621 = filter(func621,shares.items()) #shares.items()的每一个元素都是键值对
print(list(li621)) #[('IBM', 36.6), ('Lenovo', 23.2), ('oldboy', 21.2)]
#最后返回的是键值对,组成的列表
print('----------------------2-2')
'''
分析过程1:
1 遍历循环字典.items()后,每一个元素都是键值对元组,而不是key,在这里--关键点
2 把每一个键值对元组依次作为参数items1传入
3 当字典的值items1[1]大于20的时候
4 将字典的items1(即参数)返回,而不是字典的key返回
5 最后返回的是满足条件的items1(键值对元组)组成的列表
''' li63 = filter(lambda k:shares[k]>20,shares)
print(list(li63)) #['IBM', 'Lenovo', 'oldboy']
print('----------------------3')
'''
分析过程2:
1 遍历循环字典后,每一个元素都是key,而不是键值对,在这里--关键点
2 把每一个key依次作为参数k传入
3 当字典的值share[k]大于20的时候
4 将字典的k返回,而不是字典的键值对返回
5 最后返回的是满足条件的key组成的列表
''' for i in shares:
print(i) #这个i是字典的key,而不是键值对
# IBM
# Lenovo
# oldboy
# ocean
print('----------------------3-1') for i in shares.items():
print(i) #这个i是字典的key,而不是键值对
# ('IBM', 36.6)
# ('Lenovo', 23.2)
# ('oldboy', 21.2)
# ('ocean', 10.2)
print('----------------------3-2') def func64(key):
if shares[key]>20:
return key #返回的是字典的key,而不是字典的键值对
li64 = filter(func64,shares)
print(list(li64)) #['IBM', 'Lenovo', 'oldboy']
#最后返回的是满足条件的key组成的列表
print('----------------------4') def func65(key):
return shares[key]>20 #返回的是字典的key,而不是字典的键值对 关键点
li65 = filter(func65,shares)
print(list(li65)) #['IBM', 'Lenovo', 'oldboy']
print('----------------------5') '''
小结:
filter函数+匿名函数,当iterable是字典的时候
it1 = filter(lambda k:dic1[k]>20,dic1)
print(list(it1)) #传入的参数是key,返回的就是key组成的列表 it2 = filter(lambda items1:items1[-1]>20,dic1.items())
print(list(it2)) #传入的参数是item(键值对元组),返回的就是键值对元组组成的列表 上述两个的区别
1 前者返回的是符合条件(字典的value-dic1[k]大于20)的字典key,组成的列表
['IBM', 'Lenovo', 'oldboy']
2 后者返回的是符合条件(字典的value-items[1]大于20)的字典的items(键值对元组),组成的列表
[('IBM', 36.6), ('Lenovo', 23.2), ('oldboy', 21.2)] '''
# 7,有下面字典,得到购买每只股票的总价格,并放在一个迭代器中。
# 结果:list一下[9110.0, 27161.0,......]
portfolio = [
{'name': 'IBM', 'shares': 100, 'price': 91.1},
{'name': 'AAPL', 'shares': 50, 'price': 543.22},
{'name': 'FB', 'shares': 200, 'price': 21.09},
{'name': 'HPQ', 'shares': 35, 'price': 31.75},
{'name': 'YHOO', 'shares': 45, 'price': 16.35},
{'name': 'ACME', 'shares': 75, 'price': 115.65}] #方法1 普通函数
def func1(dic1):
return dic1['shares'] * dic1['price'] # func1(portfolio)
it1 = map(func1,portfolio)
print(list(it1)) #[9110.0, 27161.0, 4218.0, 1111.25, 735.7500000000001, 8673.75]
print('------------------1 map+普通函数')
'''
分析过程:
1 portfolio是列表,列表的每一个元素是字典
2 把字典作为普通函数的参数,依次传入,将股票价格*股票数量=股票总价值 作为元素返回
3 最后得到股票总价值作为元素的列表
注意:map和filter不同的地方
1、map最后得到的是将普通函数(或者匿名函数)的返回值作为元素的列表
2、filter最后得到的是普通函数(或者匿名函数)的参数(参数经过了筛选,返回的是True)作为元素的列表
''' #方法2 匿名函数
it2 = map(lambda dic1:dic1['shares'] * dic1['price'],portfolio)
print(list(it2))
#[9110.0, 27161.0, 4218.0, 1111.25, 735.7500000000001, 8673.75]
print('------------------2 map+匿名函数') '''
方法论小结:
当匿名函数一下子写不出来的时候,就需要先写出普通函数(写普通函数的过程就是在整理思路)
然后,将普通函数的参数和返回值,填入匿名函数即可,匿名函数就写出来了
'''
# 9,有下列三种数据类型
# l1 = [1,2,3,4,5,6]
# l2 = ['oldboy','alex','wusir','太白','日天']
# tu = ('**','***','****','*******')
# 写代码,最终得到的是(每个元组第一个元素>2,第三个*至少是4个)
# [(3, 'wusir', '****'), (4, '太白', '*******')]这样的数据。 l1 = [1,2,3,4,5,6]
l2 = ['oldboy','alex','wusir','太白','日天']
tu = ('**','***','****','*******') '''
思路
1、列表1和列表2和列表3的同位置元素,组成元组,元组作为新列表的元素
一一对应-map, zip
2、且列表1的元素都大于2-filter
3、且列表3的元素至少是4个星-filter 步骤:
1、先普通函数
2、后匿名函数
''' #1 3个列表的同位置元素组成的元组--zip
print(list(zip(l1,l2)))
#[(1, 'oldboy'), (2, 'alex'), (3, 'wusir'), (4, '太白'), (5, '日天')]
li3 = list(zip(l1,l2,tu)) #zip支持3个参数
print(li3)
#[(1, 'oldboy', '**'), (2, 'alex', '***'), (3, 'wusir', '****'), (4, '太白', '*******')]
print('------------------------------0 ') #方法1 普通函数1
def func4(tu1):
if tu1[0] > 2 and len(tu1[-1]) >=4: #条件判断
#元组的第一个元素大于2,元组的最后一个元素的长度大于等于4
return tu1
it4 = filter(func4,li3) #这里列表的每一个元素都是一个元组
#将列表的每一个元素作为参数,依次传递到普通函数,进过条件筛选后,返回符合条件的参数组成的迭代器
li4 = list(it4) #迭代器转成列表
print(li4) #[(3, 'wusir', '****'), (4, '太白', '*******')]
print('------------------------------1 filter+普通函数1 ') #方法2 普通函数2
def func6(tu1):
return tu1[0] > 2 and len(tu1[-1]) >=4
#把上面方法1的条件,作为返回值(实际上,返回的是符合筛选条件的参数组成的迭代器)
it6 = filter(func6,li3)
li6 = list(it6) #迭代器转成列表
print(li6) #[(3, 'wusir', '****'), (4, '太白', '*******')]
print('------------------------------2 filter+普通函数2 ') # 1-2、返回值--关键点
# filter最终返回的是普通函数(或者匿名函数)的参数(符合条件)组成的迭代器(可转成列表)
# map最后返回的是普通函数(或者匿名函数)的返回值组成的迭代器(可转成列表) #方法3 匿名函数
it5 = filter(lambda tu1:tu1[0] > 2 and len(tu1[-1]) >=4,li3)
# 把上述方法2中 普通函数的参数和返回值 填入匿名函数的冒号前后
li5 = list(it5) #迭代器转成列表
print(li5) #[(3, 'wusir', '****'), (4, '太白', '*******')]
print('------------------------------3 filter+匿名函数1 ') '''
方法论小结:
1、用filter函数的时候,先写普通函数
函数内是if 条件判断 + return
2、将普通函数修改一下
函数内直接返回判断条件
return + 条件判断 形成普通函数2
3、将上述普通函数2的
参数和返回值 填入匿名函数
上述filter或者map先写普通函数,然后写匿名函数的方法就是:
1、不跳步骤
2、写普通函数的时候,就是在整理思路
思路明确了,匿名函数只需要翻译即可 知识点小结:
01返回值--关键点1
filter最终返回的是普通函数(或者匿名函数)的参数(符合条件)组成的迭代器(可转成列表)
--filter对参数做了if条件筛选
可以return参数
也可以return筛选条件(if后的)
map最后返回的是普通函数(或者匿名函数)的返回值组成的迭代器(可转成列表)
--map对参数没有做if条件筛选,而是做了批量修改或者2个列表的同位置运算等 02运行原理--关键点2
filter是把iterable中的每一个元素作为参数,依次传递到自定义函数(匿名函数),
返回值是普通函数的参数(符合条件的--即对参数进行了条件筛选)组成的迭代器(可转成列表)
map是把iterable中的每一个元素作为参数,依次传递给自定义函数(匿名函数),
返回值是普通函数(或者匿名函数)的返回值组成的迭代器(可转成列表)
map和filter的区别在于:
1、map没有对参数进行if条件筛选,返回参数组成的迭代器(可转成列表)
2、而是对参数进行了批量操作(比如:批量增加)
或者多个列表的同位置元素的相加等运算
返回的是返回值组成的迭代器(可转成列表) 03zip函数
1、zip函数的参数可以是2个列表,也可以是2个以上列表(比如3个)
2、支持2个及2个以上列表的同位置元素组成元组,元组作为新列表的元素
'''

Python【day 14-5】sorted filter map函数应用和练习的更多相关文章

  1. 小学生都能学会的python(<lamda匿名函数,sorted(),filter(),map(),递归函数>)

    小学生都能学会的python(<<lamda匿名函数,sorted(),filter(),map(),递归函数,二分法>> 1. lambda 匿名函数 lambda 参数: ...

  2. Python【day 14-4】sorted filter map+递归文件夹+二分法查找

    def func(x): #普通函数 return x*x ret1 = func(10) #匿名函数 f = lambda x:x*x # 匿名函数写法: 匿名函数名=lambda 参数:返回值 ' ...

  3. 内置函数 lambda sorted filter map 递归

    一 lambda 匿名函数 为了解决一些简单的需求而设计的一句话函数 # 计算 n 的 n次方 def func(n): return n**n print(func(10)) f = lambda ...

  4. 匿名函数 sorted() filter() map() 递归函数

    一. lambda() 匿名函数   说白了,从字面理解匿名函数就是看不见的函数,那么他的看不见表现在哪里呢? 其实就是在查询的时候他们的类型都是lambda的类型所以叫匿名,只要是用匿名函数写的大家 ...

  5. Python_Mix*匿名函数,sorted,filter,map,递归函数,二分法查找

    lambda匿名函数(函数名统一都叫lambda) 为了解决简单的需求而设计的一句话函数 语法: lambda 参数 返回值 n = lambda a,b: max(a,b) ret = n(9,4) ...

  6. python基础之lambda,sort,filter,map,递归函数的运用

    内容梗概:1. lamda 匿名函数2. sorted()3. filter()4. map()5. 递归函数 1.lambda 形式: lambda 参数:返回值 f = lambda x,y: x ...

  7. sorted&filter&map

    python里列表的sort和内置的sorted函数,都可以进行排序,列表的sort方法是在原有的列表上进行排序,sorted是会返回一个新的对象 persons = [ {'name': '小明', ...

  8. Day14--Python--函数二,lambda,sorted,filter,map,递归,二分法

    今日主要内容:1. lambda 匿名函数 lambda 参数: 返回值-------------------------------------def square(x): return x**2 ...

  9. Python高级特性: 函数编程 lambda, filter,map,reduce

    一.概述 Python是一门多范式的编程语言,它同时支持过程式.面向对象和函数式的编程范式.因此,在Python中提供了很多符合 函数式编程 风格的特性和工具. 以下是对 Python中的函数式编程 ...

随机推荐

  1. 深入selenium三种等待方式使用

    深入selenium三种等待方式使用 处理由于网络延迟造成没法找到网页元素 方法一 用time模块不推荐使用 用time模块中的time.sleep来完成等待 from selenium import ...

  2. zabbix snmp监控与主被模式

    1.snmp基础介绍 snmp全称是简单网络管理协议 为什么要用? 路由器交换机无法安装agent程序,但是都提供snmp服务端, 我们可以使用zabbix的snmp方式监控snmp服务端的数据 2. ...

  3. MySQl看这一篇就够了

    MySQL分享 一.数据库结构 语句 DDL(Data Definition Languages):数据定义语句,常用的语句关键字主要包括 create.drop.alter等操作表结构 DML(Da ...

  4. Vue.js+vue-element搭建属于自己的后台管理模板:创建一个项目(四)

    Vue.js+vue-element搭建属于自己的后台管理模板:创建一个项目(四) 前言 本章主要讲解通过Vue CLI 脚手架构建工具创建一个项目,在学习Vue CLI之前我们需要先了解下webpa ...

  5. 用两种以上的 方式实现一个方法或者对象,调用时打印"你好xx",已定义的代码不能做修改,自己编译的不能出现"你好"? (Javasctript)

    先上代码 const obj = { say(){ Array.from(arguments).forEach(item=>{ console.log(`${this.str} ${item}` ...

  6. easyui textbox setValue以及setText的使用技巧

    1.先赋值Value,后赋值Text $('#Name').textbox('setValue', "11");$('#Name').textbox('setText', &quo ...

  7. requests---requests上传图片

    我们在做接口测试的时候肯定会遇到一些上传图片,然后进行校验,今天我们一起学习通过requests上传图片,查看是否上传成功 抓取上传接口 这里我以百度为例子进行操作,为啥要用百度呢,主要上传文件比较简 ...

  8. 机器学习--K近邻 (KNN)算法的原理及优缺点

    一.KNN算法原理 K近邻法(k-nearst neighbors,KNN)是一种很基本的机器学习方法. 它的基本思想是: 在训练集中数据和标签已知的情况下,输入测试数据,将测试数据的特征与训练集中对 ...

  9. Re-py交易

    python在线反编译 https://tool.lu/pyc/ 获得源码 import base64 def encode(message): s = '' for i in message: x ...

  10. acwing 517. 信息传递

    地址 https://www.acwing.com/problem/content/description/519/ 有 n 个同学(编号为 1 到 n)正在玩一个信息传递的游戏. 在游戏里每人都有一 ...