• Hoo-Ah
    2019-05-31
    第一问:sorted(d.items(), key=lambda x: x[1], reverse=True);
    第二问:最开始接触 lambda 匿名函数的时候觉得蛮不理解的,觉得这个函数没有灵魂,用完一次就扔掉。后来在和高阶函数、列表生成式搭配使用以及一些小功能的使用上觉得很好用,这样代码即简洁又易于阅读。
    注:匿名函数最难理解的地方就是要传入的参数是一个可迭代的对象,lambda 内部会调用可迭代对象的 __next__ 方法取值当作参数传入 lambda 函数冒号前面的值,然后把表达式计算的结果进行返回。

    作者回复: 你说的对。关于迭代器生成器后面会讲到,所以这篇文章没有提及。

     2
     28
  • lmingzhi
    2019-05-31
    python3 -mtimeit -s'xs=range(1000000)' 'map(lambda x: x*2, xs)'

    这个地方map生成的是生成器,与后面的2个做比较感觉不大合适,是否更改为测试list(map(lambda x: x*2, xs))更恰当?

    作者回复: 实际情况中,Map返回的对象依然可以直接遍历,所以直接比较从实用的角度上来说也是可以的,Map在Python3中变为Lazy了以后,速度得到了很大的提升。当然,如果以返回的类型一致为标准,你的建议也是可以的

    
     18
  • 欧
    2019-06-15
    每次听音频的时候,老师说到建议听音频的同学打开文章,获得最优学习体验时,我就想把这段话装入函数里,哈哈哈
    
     11
  • 爬行的蜗牛
    2019-06-04
    1.reduce报错问题,python3需要加
    from functools import reduce
    2.filter,print变量时,需要加list()
    如下:
    l =[1,2,3,4,5]
    new_list3 = filter(lambda x:x%2==0,l)
    list(new_list3)
    # 输出
    [2,4]
    展开
    
     8
  • Geek_59f23e
    2019-05-31
    1. sorted(d.item(), key = lambda x: x[1], reverse = True)

    2. 一般想偷懒和装X的时候用(来个玩笑😜)
    
     7
  • Jove
    2019-05-31
    在python3中,map、filter函数返回的是迭代器,不是集合
    
     3
  • Geek_59f23e
    2019-05-31
    一楼说的对,list(map(###))和列表推导式对比更科学,显然后者生成列表速度更快,另外我实测圆括号生成器和map生成器速度在一个数量级,性能差别很小,结果如下:

    函数generator被调用了1000000次,共计用时:2.248 秒
    <generator object generator.<locals>.<genexpr> at 0x000002D735AE5ED0>

    函数map被调用了1000000次,共计用时:2.243 秒
    <map object at 0x000002D7346F7470>
    展开
    
     3
  • hello,everyone
    2019-07-26
    数据清洗过程常用lambda 函数
    data["工作日"] = data["日期"].map(lambda x: x.weekday())
    data["工作日"] = data["工作日"].map(lambda x: 1 if x<5 else 0)
    
     2
  • kilien
    2019-06-10
    不好意思问个低级问题,
    python -mtimeit -s'xs=range(1000000)' 'map(lambda x: x*2, xs)'
    这句代码在windows的dos环境里跑的话,会报SyntaxError: EOL while scanning string literal, Python版本是3.6.3,-s后面好像只能接受一对单引号
    
     2
  • Steven
    2019-06-02
    我还以为列表推导式已经是公认的说法了,原来还没有统一呀😄 。
    不过之前也有看过流畅的python,好像说也是列表推导式比map更快。
     1
     2
  • catshitfive
    2019-05-31
    应用场景举个栗子:比如在 pandas 中对二维数据进行数据分析时,对于某些数据块我们需要用函数如apply applymap transform 等进行临时性一次性的转换变更以得到最终的分析结果,那么就可以用匿名函数配合着来使用,使代码更简洁易读高效
    
     2
  • 跑跑
    2019-06-04
    dict(sorted(d.items(),key=lambda x:x[1], reverse=True))
    
     1
  • rogerr
    2019-06-02
    可耻地抄了一遍答案
    sorted(d.items(),key=lambda x:x[1],reverse=True)

    对lambda函数的语法还是不太清楚,感觉可读性没有普通函数那么清晰易懂呢,只是为了简洁么
    
     1
  • 风居住的街
    2019-06-02
    # map 生成序列的效率是最高的, 若要保证类型一致,赋值效率更高
    a = timeit.timeit("map(lambda x: x*2, range(100))")
    b = timeit.timeit("list(map(lambda x: x*2, range(100)))")
    c = timeit.timeit("[i*2 for i in range(100) ]")
    d = timeit.timeit("list1 = map(lambda x: x*2, range(100))")
    print(a)
    print(b)
    print(c)
    print(d)
    # output
    # 0.7083226156547896
    # 16.946590069091638
    # 7.938522968590437
    # 1.0409960818161217
    展开
    
     1
  • 冲
    2020-01-10
    sorted(d.items(),key=lambda x:x[1],reverse=True)
    
    
  • 谁谁
    2019-12-23
    请问老师,如何理解这一句:
    [(lambda x: x*x)(x) for x in range(10)]
    其中的(lambda x: x*x)(x),这个lambda函数括起来是代表直接调用?

    作者回复: 这个就是语法啊,这句话的意思就是对于1-10的每个整数,都调用lambda函数(自身相乘)

    
    
  • 咸鱼不想翻身
    2019-12-20
    d = {'mike': 10, 'lucy': 2, 'ben': 30}
    dSorted = sorted(d.items(), key=lambda x: x[1], reverse=True)
    print(dict(dSorted))
    
    
  • Paul Shan
    2019-11-14
    感觉Python的map,filter,reduce,不如其他的语言直观,例如map filter reduce组合的时候,Kotlin语言是从前往后执行,比较符合直觉,Python是从中间往两边执行的,比较费解。
    
    
  • 轻风悠扬
    2019-11-02
    sorted(d.items(), key = lambda x: x[1], reverse = True) 返回的是list of tuple, 我觉得答案应该是dict(sorted(d.items(), key = lambda x: x[1], reverse = True))
    
    
  • 轻风悠扬
    2019-11-02
    老师,python3 里面调用reduce 方法需要引入functools
    
    
我们在线,来聊聊吧