【发布时间】:2013-04-22 16:19:09
【问题描述】:
我想在 map 函数中传递一个 None 列表,但它不起作用。
a = ['azerty','uiop']
b = ['qsdfg','hjklm']
c = ['wxc','vbn']
d = None
def func1(*y):
print 'y:',y
map((lambda *x: func1(*x)), a,b,c,d)
我收到此消息错误:
TypeError: argument 5 to map() must support iteration.
【问题讨论】:
-
请注意,鉴于您正在制作的功能,看起来您想要
itertools.starmap()而不是map()(它什么都不做,但可能意味着lambda x: func1(*x))。请注意,无论您在这里做什么,d都会导致问题。 -
实际上,鉴于
d = None,我认为OP更有可能想要map(..., (a,b,c,d))的行为,并假设None会在没有参数的情况下调用该函数。 -
@Lattyware:不完全;
map()有多个列表 zips 列表。starmap()一个一个地应用列表。 -
@MartijnPieters 我从奇怪的
lambda中汲取了starmap()的用法——如果提问者确实想要zip()类似的行为,那么结合starmap()和zip()就可以了很好。 -
@Lattyware:让它与
starmap和zip一起工作变得非常冗长;map()语法在这里更紧凑。
标签: python list nonetype map-function