当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 3 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 死在expression下,做鬼也風流
帖子发表于 : 2012-10-03 12:52 
头像

注册: 2005-07-02 14:41
帖子: 4160
系统: Ubuntu 14.04 (Kylin)
送出感谢: 64
接收感谢: 12
好吧,其實偶一直有不肯寫if-for statement的怪癖。

代码:
flatten_diffs = lambda diffs: tuple(
    chain.from_iterable(
      ( t
        if isinstance(t[0], tuple)
        else (t,))
      for t in diffs))


lambda用來弄短函數,這個還不算長吧。

下面這個就表明誓死不寫if-for statement的決心:

代码:
swap_insert = lambda diffs: (
    ( diffs[t+1]
      if
        t != (len(diffs) - 1)
        and all(
          (diffs[t][0] == 0, is_not_important(diffs[t]), diffs[t+1][0] == 1))
      else (
        diffs[t-1]
        if
          t != 0
          and all(
            (diffs[t][0] == 1, diffs[t-1][0] == 0, is_not_important(diffs[t-1])))
        else (diffs[t])))
    for t in range(len(diffs)))



上面用了lambda,爲了強調是expression。實際代碼的時候我還是乖乖寫成def的,因爲要用doctest,也因爲python的lambda不支持定義符號,有時候不方便。

PEP 8裏沒講這種情況該怎麼縮進的?上面的縮進是我自己想的,求吐槽。這種複雜的conditional experssion和generator comprehension該怎麼縮進,求指點。


_________________
https://weakish.github.io


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 死在expression下,做鬼也風流
帖子发表于 : 2012-10-04 9:15 

注册: 2008-01-04 9:55
帖子: 495
地址: Beijing /PRC
系统: Ubuntu 12.10
送出感谢: 12
接收感谢: 3
lambda写这么长应该用def了吧


_________________
还在纠结发行版和版本号的基本上是新手
$.get('better.life',
  {study:hard,work:hard},
    function(reality){
      return Math.random(reality)
    })


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 死在expression下,做鬼也風流
帖子发表于 : 2012-10-04 9:29 
头像

注册: 2008-07-24 11:33
帖子: 4793
地址: 郑州
送出感谢: 4
接收感谢: 92
一点都不符合python精神,人家管你怎么缩进 :em04


_________________
求人不如求它仨: 天蓝的Wiki 屎黄的Wiki 绿
Site: CUIHAO.TK    Twitter: @cuihaoleo
Machine: Athlon64 X2 5200+ / 2x2GB DDR2-800 / GeForce GTS 450
AD: ~まだ見ぬ誰かの笑顔のために~


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 3 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译