>
Python编程 Python编程 81907Pythonista

销魂的lambda语法

桂林 2010-07-23
很有写c的感觉

join = lambda * ps : ''.join(ps)
pairs = lambda *t : [(t[i << 1], t[i << 1 | 1 ]) for i in xrange(0, len(t) >> 1)]

join('a','b','c')
'abc'
pairs('a','b','c','d')
[('a','b'),('c','d')]

有2个str,a,b,如果a,b都存在返回a+b,如果a不为空返回a,如果b不为空返回b,否则返回None,销魂的写法

lambda a,b: a and b and (a+b) or a or b

0

查看更多有趣的豆瓣小组

回应 (16条) 只看楼主

  • 星星点灯
    说实话,这样只会降低代码的可读性,与pythonic哲学背道而驰
  • lichray
    用2.5后加的表达式if-else就好了。
  • 理想
    我做快速原型就常用 lambda
  • hongqn
    ((a or '') + (b or '')) or None
  • BladeWang可能
    # 假装模式匹配……

    reduce(
      lambda (a,b), (c,d): (a+c, b and d),
        dict.fromkeys(
          range(10)).items())

    # (45, None)

  • 一中年丧偶友邻
    哥玩儿F#基本不用let,玩儿python基本不用lambda
  • 桂林
    都是人才
  • 桂林
    ((a or '') + (b or '')) or None

    你这个永远不会None啊
  • 后知后觉
    这里有没有python专家需要换工作的?
  • 理想
    @桂林 没有 a + b if a and b else a or b 来的清晰
查看更多回应(16)/  添加回应

Python编程的热门贴

推荐小组

值得一读

    豆瓣
    我们的精神角落
    免费下载 iOS / Android 版客户端