2024-04-18 21:42:33 发布
网友
我有一张这样的单子:
l = [['a', 'b', 'c'], ['a', 'b'], ['g', 'h', 'r', 'w']]
我想从每个列表中选择一个元素,并将它们组合成一个字符串。
例如:“aag”、“aah”、“aar”、“aaw”、“abg”、“abh”。。。。
但是,在程序运行之前,列表l的长度和每个内部列表的长度都是未知的。那我要怎么做?
取一个previous solution并改用itertools.product(*l)。
itertools.product(*l)
使用itertools非常简单。产品:
>>> import itertools >>> list(itertools.product("abc", "ab", "ghrw")) [('a', 'a', 'g'), ('a', 'a', 'h'), ('a', 'a', 'r'), ('a', 'a', 'w'), ('a', 'b', 'g'), ('a', 'b', 'h'), ('a', 'b', 'r'), ('a', 'b', 'w'), ('b', 'a', 'g'), ('b', 'a', 'h'), ('b', 'a', 'r'), ('b', 'a', 'w'), ('b', 'b', 'g'), ('b', 'b', 'h'), ('b', 'b', 'r'), ('b', 'b', 'w'), ('c', 'a', 'g'), ('c', 'a', 'h'), ('c', 'a', 'r'), ('c', 'a', 'w'), ('c', 'b', 'g'), ('c', 'b', 'h'), ('c', 'b', 'r'), ('c', 'b', 'w')]
如果有人对算法感兴趣,这里有一个非常简单的方法来使用递归来查找组合:
l = [['a', 'b', 'c'], ['a', 'b'], ['g', 'h', 'r', 'w']] def permu(lists, prefix=''): if not lists: print prefix return first = lists[0] rest = lists[1:] for letter in first: permu(rest, prefix + letter) permu(l)
取一个previous solution并改用
itertools.product(*l)
。使用itertools非常简单。产品:
如果有人对算法感兴趣,这里有一个非常简单的方法来使用递归来查找组合:
相关问题 更多 >
编程相关推荐