带函数和元组参数的一行for循环
我很好奇为什么我不能用 as 写成一行代码:
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)
提前谢谢你们!
3 个回答
3
其实,你可以这样做:
>>> [x%y for x,y in [(1,2),(3,4),(5,6)]]
[1, 3, 5]
2
在Python中,x for x in y
这种写法常用于列表推导式、生成器表达式、集合推导式和字典推导式。也就是说,如果你想用这种方式来创建数据结构,必须把它放在()
、[]
或{}
里面,否则就不合法。
一个更正确的写法是
>>> 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]