用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)