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
添加回答
舉報
