3 回答

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個(gè)贊
我會(huì)用itertools.product:
from itertools import product
alist = [Do_Class(x[0], x[1]) for x in product(range(4), range(15))]
如果您絕對(duì)需要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)
編輯
需要對(duì)range(4)* 15進(jìn)行排序以獲得0,0,0,...,1,...而不是0,1,2,3,0,...
編輯2
我偶然發(fā)現(xiàn)itertools.starmap,它應(yīng)該顯示以下內(nèi)容:
from itertools import starmap
from itertools import product
alist = starmap(Do_Class, product(range(4), range(15)))
認(rèn)為這也是一個(gè)不錯(cuò)的解決方案。

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊
您不需要/不需要map
:
alist = [Do_Class(name, sname) for sname in range(15) for name in range(4)]
map
僅當(dāng)您可以執(zhí)行類似操作時(shí)才使用map(somefunc, somelist)
。如果不是這種情況,則您需要一個(gè)lambda,與列表理解相比,它只會(huì)增加不必要的開銷。

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超10個(gè)贊
alist = map(lambda name : map(lambda sname : Do_Class(name, sname), range(15)), range(4)) #please don't do this
添加回答
舉報(bào)