3 回答

TA贡献1828条经验 获得超6个赞
我会用itertools.product:
from itertools import product
alist = [Do_Class(x[0], x[1]) for x in product(range(4), range(15))]
如果您绝对需要map:
alist = map(lambda x: Do_Class(x[0], x[1]), product(range(4), range(15)))
如果您想使用较短的版本,但可读性较差:
alist = map(Do_Class, sorted(range(4)*15), range(15)*4)
编辑
需要对range(4)* 15进行排序以获得0,0,0,...,1,...而不是0,1,2,3,0,...
编辑2
我偶然发现itertools.starmap,它应该显示以下内容:
from itertools import starmap
from itertools import product
alist = starmap(Do_Class, product(range(4), range(15)))
认为这也是一个不错的解决方案。

TA贡献2012条经验 获得超12个赞
您不需要/不需要map
:
alist = [Do_Class(name, sname) for sname in range(15) for name in range(4)]
map
仅当您可以执行类似操作时才使用map(somefunc, somelist)
。如果不是这种情况,则您需要一个lambda,与列表理解相比,它只会增加不必要的开销。

TA贡献1802条经验 获得超10个赞
alist = map(lambda name : map(lambda sname : Do_Class(name, sname), range(15)), range(4)) #please don't do this
添加回答
举报