用lambda实现Python列表理解

用lambda实现Python列表理解,python,lambda,list-comprehension,Python,Lambda,List Comprehension,谁能给我解释一下吗 为什么a是真/假列表,而b是lambda列表 为什么该规则不适用于c和d 代码: foo = (lambda a, b: a >= b) if False else (lambda a, b: a <= b) a = [foo(x, x+1) for x in xrange(10)] foo = lambda a, b: a >= b if False else lambda a, b: a <= b b = [foo(x, x+1) for x i

谁能给我解释一下吗

  • 为什么
    a
    是真/假列表,而
    b
    是lambda列表

  • 为什么该规则不适用于
    c
    d

  • 代码:

    foo = (lambda a, b: a >= b) if False else (lambda a, b: a <= b)
    a = [foo(x, x+1) for x in xrange(10)]
    
    foo = lambda a, b: a >= b if False else lambda a, b: a <= b
    b = [foo(x, x+1) for x in xrange(10)]
    
    bar = (lambda a, b: a*b*10) if False else (lambda a, b: a*b*100)
    c = [bar(x, x+1) for x in xrange(10)]
    
    bar = lambda a, b: a*b*10 if False else lambda a, b: a*b*100
    d = [bar(x, x+1) for x in xrange(10)]
    
    foo=(lambda,b:a>=b)if False else(lambda,b:a=b if False else lambda,b:a
    但如果不是你得到的

    foo = lambda a,b: lambda a,b:a<=b
    
    foo=lambda,b:lambda a,b:a=b,如果是a
    但如果不是你得到的

    foo = lambda a,b: lambda a,b:a<=b
    

    foo=lambda,b:lambda,b:a=b如果降序,则a这只是运算符优先级的问题。让我们放一些括号来说明如何解析语句:

    (a) foo = (lambda a, b: a >= b) if True else (lambda a, b: a <= b)
    (b) foo = lambda a, b: (a >= b if descending else lambda a, b: a <= b)
    

    (a)foo=(lambda,b:a>=b)如果为True else(lambda,b:a=b如果为descending else lambda,b:a这只是运算符优先级的问题。让我们放一些括号来说明如何解析语句:

    (a) foo = (lambda a, b: a >= b) if True else (lambda a, b: a <= b)
    (b) foo = lambda a, b: (a >= b if descending else lambda a, b: a <= b)
    

    (a)foo=(lambda,b:a>=b)如果为True else(lambda,b:a=b如果降序else lambda,b:a在这个表达式中,
    foo=lambda,b:a>=b如果降序else lambda,b:a犯了一个错误,所有关键字
    降序
    都被替换为
    True
    。谢谢@BlackBear,@Joran Beasley(b)不再是lambda的列表如果你用True替换它谢谢你们,现在我明白为什么了。作为一个问题,为了其他人的利益,我现在将所有True改为False。在这个表达式中,
    foo=lambda,b:a>=b如果降序,lambda,b:a犯了一个错误,所有关键字
    降序
    都被
    谢谢@BlackBear,@Joran Beasley(b)不再是Lambda的列表如果你用True替换它谢谢你们,现在我明白为什么了。作为一个问题,为了其他人的利益,我现在把所有的真改为假。
    foo = lambda a, b: a >= b if descending else  a <= b
    b = [foo(x, x+1) for x in xrange(10)]
    
    (a) foo = (lambda a, b: a >= b) if True else (lambda a, b: a <= b)
    (b) foo = lambda a, b: (a >= b if descending else lambda a, b: a <= b)