2个功能一样的代码输出竟然不一样 郁闷

2个功能一样的代码输出竟然不一样 郁闷

def info(object, spacing=10, collapse=1):
    """Print methods and doc strings.
   
    Takes module, class, list, dictionary, or string."""
    methodList = [method for method in dir(object) if callable(getattr(object, method))]
    processFunc = collapse and (lambda s: " ".join(s.split())) or (lambda s: s)
    print "\n".join(["%s %s" %
                      (method.ljust(spacing),
                       processFunc(str(getattr(object, method).__doc__)))
                     for method in methodList])

info(list)


代码2
def info(ob,dq=10,k=1):
    if k==True:
        lists=["%s %s"%((li.ljust(dq)),(str(getattr(ob,li).__doc__)))
           for li in dir(ob) if callable(getattr(ob,li))]
        print '\n'.join(lists)
info(list)

代码2输出的结果莫名其妙多一行,输出的排版也有差别
Use  of negative indices is not supported.
请问哪里错了啊???? 两个代码 不都一样的功能吗
明显差了一行lambda -_-
。。。。。。。。。。。。。。。。。。。。。