我非常感兴趣,为什么我不能用#:
写一个班轮m=[(1,2),(3,4),(5,6)]
f=lambda x,y:return x%y
f(*i) for i in m
但我不得不将最后一行扩展到
for i in m:
f(*i)
提前致谢
答案 0 :(得分:3)
实际上,您可以:
>>> [x%y for x,y in [(1,2),(3,4),(5,6)]]
[1, 3, 5]
答案 1 :(得分:2)
使用map
:
>>> m = [(1,2),(3,4),(5,6)]
>>> f = lambda x: x[0] % x[1] # No return statement in lambda.
>>> map(f, m) # list(map(f, m)) in Python 3.x
[1, 3, 5]
如果你使用Python 2.x,你可以在lambda
中使用元组参数解包,但是it's gone in Python 3.x:
f = lambda (x, y): x % y
答案 2 :(得分:2)
x for x in y
语法用于list comprehensions,generator expressions,集合理解和Python中的字典理解。在没有()
,[]
或{}
的情况下使用它是无效的。
更正确的版本是
>>> m = [(1, 2), (3, 4), (5, 6)]
>>> f = lambda x,y: x % y # Note no return
>>> [f(*i) for i in m]
[1, 3, 5]
甚至更好,不那么冗长
>>> [x % y for x,y in ((1, 2), (3, 4), (5, 6))]
[1, 3, 5]