y***a 发帖数: 840 | 1 需求:
有N个int数组 (N未知), 每个数组里的元素数目也未知, 但大于0, 要求每个
数组里取一个元素,组成一个N个元素的multiset (就是允许元素重复出现), 要求列
举所有的multiset.
主要问题是N不知,所以只能用递归/FUNCTIONAL PROGRAMMING比较容易。用
PYTHON的
ITERTOOLS能搞定吗? 就你熟悉的语言写出最简单的程序是什么样子的? 欢迎赐教。 | d******e 发帖数: 2265 | 2 考试嘛?上一段real code
def parameterprod(paradict):
keys = tuple(paradict.keys())
itemlist = []
for k in paradict.keys():
if isinstance(paradict[k], list):
itemlist.append( paradict[k])
else:
l = []
l.append(paradict[k])
itemlist.append(l)
prodtuples = list(itertools.product(*itemlist))
pdict = []
for l in prodtuples:
pdict.append(dict(zip(keys,l)))
return pdict | y***a 发帖数: 840 | 3 不是考试, PYTHON不精
谢谢product提示
【在 d******e 的大作中提到】 : 考试嘛?上一段real code : def parameterprod(paradict): : keys = tuple(paradict.keys()) : itemlist = [] : for k in paradict.keys(): : if isinstance(paradict[k], list): : itemlist.append( paradict[k]) : else: : l = [] : l.append(paradict[k])
| N******K 发帖数: 10202 | 4 for 循环不就行了
【在 y***a 的大作中提到】 : 需求: : 有N个int数组 (N未知), 每个数组里的元素数目也未知, 但大于0, 要求每个 : 数组里取一个元素,组成一个N个元素的multiset (就是允许元素重复出现), 要求列 : 举所有的multiset. : : 主要问题是N不知,所以只能用递归/FUNCTIONAL PROGRAMMING比较容易。用 : PYTHON的 : ITERTOOLS能搞定吗? 就你熟悉的语言写出最简单的程序是什么样子的? 欢迎赐教。
| x******a 发帖数: 6336 | | w****i 发帖数: 964 | 6 >>> import itertools
>>> d = [[1, 2, 3], [4, 5, 6, 7], [8, 9]]
>>> [x for x in itertools.product(*d)]
[(1, 4, 8), (1, 4, 9), (1, 5, 8), (1, 5, 9), (1, 6, 8), (1, 6, 9), (1, 7, 8)
, (1, 7, 9), (2, 4, 8), (2, 4, 9), (2, 5, 8), (2, 5, 9), (2, 6, 8), (2, 6, 9
), (2, 7, 8), (2, 7, 9), (3, 4, 8), (3, 4, 9), (3, 5, 8), (3, 5, 9), (3, 6,
8), (3, 6, 9), (3, 7, 8), (3, 7, 9)]
【在 y***a 的大作中提到】 : 需求: : 有N个int数组 (N未知), 每个数组里的元素数目也未知, 但大于0, 要求每个 : 数组里取一个元素,组成一个N个元素的multiset (就是允许元素重复出现), 要求列 : 举所有的multiset. : : 主要问题是N不知,所以只能用递归/FUNCTIONAL PROGRAMMING比较容易。用 : PYTHON的 : ITERTOOLS能搞定吗? 就你熟悉的语言写出最简单的程序是什么样子的? 欢迎赐教。
| y***a 发帖数: 840 | 7 这个也是上面提示的。 多谢。
8)
9
,
【在 w****i 的大作中提到】 : >>> import itertools : >>> d = [[1, 2, 3], [4, 5, 6, 7], [8, 9]] : >>> [x for x in itertools.product(*d)] : [(1, 4, 8), (1, 4, 9), (1, 5, 8), (1, 5, 9), (1, 6, 8), (1, 6, 9), (1, 7, 8) : , (1, 7, 9), (2, 4, 8), (2, 4, 9), (2, 5, 8), (2, 5, 9), (2, 6, 8), (2, 6, 9 : ), (2, 7, 8), (2, 7, 9), (3, 4, 8), (3, 4, 9), (3, 5, 8), (3, 5, 9), (3, 6, : 8), (3, 6, 9), (3, 7, 8), (3, 7, 9)]
|
|