练习:

  1. 用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb

    l=[{'name':'alex'},{'name':'y'}]
    l=[{'name':'alex'},{'name':'y'}]
    l = list(map(lambda x:{"name":x["name"]+"_sb"},l))
    print(l)
  2. 用map来处理下述l,然后用list得到一个新的列表,列表中每个人的名字都是sb结尾

l=[{'name':'alex'},{'name':'y'}]
l=[{'name':'alex'},{'name':'y'}]
l1 = list(map(lambda x:{"name":x["name"]+"sb"},l))
print(l1)
  1. 用filter来处理,得到股票价格大于20的股票名字
shares={
'IBM':36.6,
'Lenovo':23.2,
'oldboy':21.2,
'ocean':10.2,
}
shares={
'IBM':36.6,
'Lenovo':23.2,
'oldboy':21.2,
'ocean':10.2,
}
lst = list(filter(lambda x:shares[x]>20,shares))
print(lst)
  1. 有下面字典,得到购买每只股票的总价格,并放在一个迭代器中。

    结果: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}]
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}]
lst = map(lambda x: x["shares"]*x["price"],portfolio)
print(list(lst))
  1. 还是上面的字典,用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}]
    lst = filter(lambda x:x["shares"]>100,portfolio)
    print(list(lst))
  2. 有下列三种数据类型,

     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 = ('**', '***', '****', '*******')
    lst = zip(l1,l2,tu)
    print(list(filter(lambda x:x[0]>2 and len(x[2])>3,list(lst))))
  3. )有如下数据类型(实战题):

     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}]
    lst = sorted(l1,key=lambda x:x["sales_volumn"])
    print(lst)
  4. 有如下数据结构,通过过滤掉年龄大于16岁的字典

    lst = [{'id':1,'name':'alex','age':18},
    {'id':1,'name':'wusir','age':17},
    {'id':1,'name':'taibai','age':16},]
lst = [{'id':1,'name':'alex','age':18},
{'id':1,'name':'wusir','age':17},
{'id':1,'name':'taibai','age':16},]
new_lst =filter(lambda x:x["age"]>16,lst)
print(list(new_lst))

9.有如下列表,按照元素的长度进行升序

lst = ['天龙八部','西游记','红楼梦','三国演义']
lst = ['天龙八部','西游记','红楼梦','三国演义']
new_lst = sorted(lst,key=lambda x:len(x))
print(new_lst)

10.有如下数据,按照元素的年龄进行升序

lst = [{'id':1,'name':'alex','age':18},
{'id':2,'name':'wusir','age':17},
{'id':3,'name':'taibai','age':16},]
lst = [{'id':1,'name':'alex','age':18},
{'id':2,'name':'wusir','age':17},
{'id':3,'name':'taibai','age':16},]
new_lst = sorted(lst,key=lambda x:x["age"])
print(new_lst)

11..看代码叙说,两种方式的区别

lst = [1,2,3,5,9,12,4]
lst.reverse()
print(lst) print(list(reversed(lst)))
lst = [1,2,3,5,9,12,4]
lst.reverse()
print(lst)
#直接修改了原列表 print(list(reversed(lst)))
#原列表没有改变,只是新建了一个列表

求结果(面试题)

v = [lambda :x for x in range(10)]
print(v)
print(v[0])
print(v[0]())
v = [lambda :x for x in range(10)]
print(v)#10个lambda函数地址
print(v[0])#第一个lambda函数的地址<function <listcomp>.<lambda> at 0x000002846C5EDB70>
print(v[0]())#9

13.求结果(面试题)

v = (lambda :x for x in range(10))
print(v)
print(v[0])
print(v[0]())
print(next(v))
print(next(v)())
v = (lambda :x for x in range(10))
print(v)#生成器地址<generator object <genexpr> at 0x00000257F81E4C50>
print(v[0])#报错
print(v[0]())#报错
print(next(v))#生成器第一个函数的地址<function <genexpr>.<lambda> at 0x00000257F827DAE8>
print(next(v)())#1

14.map(str,[1,2,3,4,5,6,7,8,9])输出是什么? (面试题)

map(str,[1,2,3,4,5,6,7,8,9])
#什么也不输出
print(map(str,[1,2,3,4,5,6,7,8,9]))
#得到一个迭代器的地址
print(list(map(str,[1,2,3,4,5,6,7,8,9])))
#['1','2','3','4','5','6,'7','8','9']

15.有一个数组[34,1,2,5,6,6,5,4,3,3]请写一个函数,找出该数组中没有重复的数的总和(上面数据的么有重复的总和为1+2=3)(面试题)

#方法一

lst = [34,1,2,5,6,6,5,4,3,3]
l = 2*sum(set(lst)) - sum(lst)
print(l)
#方法二
lst = [34,1,2,5,6,6,5,4,3,3]
from functools import reduce
lst = sum(filter(lambda x: lst.count(x) < 2, lst))
print(lst)

16.求结果:(面试题,比较难,先做其他题)

def num():
return [lambda x:i*x for i in range(4)]
print([m(2)for m in num()])
结果
#[6,6,6,6]

lambda map() filter() zip()练习的更多相关文章

  1. Python面试题之Python中的lambda map filter reduce zip

    当年龟叔想把上面列出来的这些都干掉.在 “All Things Pythonic: The fate of reduce() in Python 3000”这篇文章中,他给出了自己要移除lambda. ...

  2. Python---高级函数map, filter, zip, enumerate等的用法

    今天看自然语言处理这本书的时候,被这里的高级函数的概念吸引了,因为我觉得所有的函数都只是函数而已,是为了实现特定功能而实现的,不应该有高级,低级之分啊!不过了解之后,发现这几个函数确实是有点高级,非常 ...

  3. lambda,map,filter,reduce

    lambda 编程中提到的 lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数.返回一个函数对象. func = lambda x,y:x+y fu ...

  4. Python -- lambda, map, filter

    lambda f = lambda x : x * 2 f(5) f = lambda x,y,z : x+y+z f(2,1,3) map list(map(lambda x:x[0].upper( ...

  5. Python——高阶函数——map filter zip

    一.map函数 1.作用:它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回. 2.实例 def f(x): return x* ...

  6. python中 Lambda,Map,Filter,Itertools,Generator高级函数的用法

    Lambda 函数 Lambda 函数是一种比较小的匿名函数--匿名是指它实际上没有函数名. Python 函数通常使用 def a_function_name() 样式来定义,但对于 lambda ...

  7. [Python学习笔记-002] lambda, map, filter and reduce

    1. lambda lambda, 即匿名函数,可以理解为跟C语言的宏类似.例如: >>> max = lambda x, y: x if x > y else y >& ...

  8. lambda map filter 用法

    lambda 可以这样认为,lambda作为一个表达式 非常容易理解,在这里lambda简化了函数定义的书写形式.是代码更为简洁,但是使用函数的定义方式更为直观,易理解. #定义函数:普通方式 def ...

  9. lambda(),map(),filter()

    Lambda 函数 Lambda 函数是一种比较小的匿名函数.Python 函数通常使用 def a_function_name() 样式来定义,但对于 lambda 函数,我们根本没为它命名.这是因 ...

随机推荐

  1. 对html2canvas的研究

    介绍 该脚本允许您直接在用户浏览器上截取网页或部分网页的“屏幕截图”.屏幕截图基于DOM,因此它可能不是真实表示的100%准确,因为它没有制作实际的屏幕截图,而是根据页面上可用的信息构建屏幕截图. 这 ...

  2. Cloud Computing——Everything as a Service

    service 分类 有Iaas, Paas, SaaS HDFS 总结☞: HDFS应付不了的场景 无法低时延 小文件存储存在空间利用率问题 文件不可修改 三副本有什么作用 防止单机故障,提高可用性 ...

  3. linux crontab -e生成日期格式

    近期公司数据库服务器要上双活项目,实施顾问要收集服务器(磁盘性能数据)IO及VM的一些相关信息,并已日期时间格式生成文件 用crontab –e增加以下内容,它的作用是每隔1个小时启动一次iostat ...

  4. DVWA--XSS(DOM)

    0X01爱之先了解 DOM,全称Document Object Model,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容.结构以及样式. DOM型XSS其实是一种特殊类型 ...

  5. wannalfy 挑战赛8 F 白云的树(树形dp)

    链接:https://www.nowcoder.com/acm/contest/57/F 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言524288K 64b ...

  6. libusb获取usb设备的idVendor(vid),idProduct(pid),以及Serial Number

    发表于2015/6/23 21:55:11  4594人阅读 最近在做关于usb设备的项目,用到了libusb,发现关于这个的函数库的介绍,讲解很少,下面仅仅是简单展示一些基本的使用方法,以备后用. ...

  7. open jdk卸载

    //查找:open jdk # rpm -qa | grep java //卸载open jdk # rpm -e --nodeps 包 # source /etc/profile # java -v ...

  8. kurento搭建以及运行kurento-hello-world

    搭建环境的系统是ubuntu 1.kurento服务器搭建 运行如下脚本即可完成安装 #!/bin/bash echo "deb http://ubuntu.kurento.org trus ...

  9. 2、maven仓库位置设置

    根据我们maven的安装目录找到config文件夹,并找到下面的setting.xml文件,在该文件里面添加下面的代码: <localRepository>F:\apache-maven- ...

  10. leetcode 53. Maximum Subarray 、152. Maximum Product Subarray

    53. Maximum Subarray 之前的值小于0就不加了.dp[i]表示以i结尾当前的最大和,所以需要用一个变量保存最大值. 动态规划的方法: class Solution { public: ...