0

如何将 iterable1 中的 n 个项目与 iterable2 中的 m 个项目结合起来?

IE

iterable1 = [0,1,2,3,4]
iterable2 = ['a','b','c']
BlackBox(itertools.combination(iterable1, 2),itertools.combination(iterable2, 1)) yields
(0,1,'a'), (0,1,'b'), (0,1,'c'), (0,2,'a'), (0,3,'a'), etc. Order doesn't matter

我收到一个元素列表,其中可能包含一个通配符,然后我需要用通配符的所有可能值替换它。我检查通配符的数量,并需要将这么多元素的组合添加到我的去通配符列表中。换句话说,iterable2 是通配符的所有可能值,m 是通配符的数量,iterable1 是删除了所有通配符的原始列表,n 是减去 m 的所需项目数。

4

1 回答 1

1
>>> iterable1 = [0,1,2,3,4]
>>> iterable2 = ['a','b','c']
>>> import itertools as it
>>> list(x+y for x,y in it.product(it.combinations(iterable1, 2), it.combinations(iterable2, 1)))
[(0, 1, 'a'), (0, 1, 'b'), (0, 1, 'c'), (0, 2, 'a'), (0, 2, 'b'), (0, 2, 'c'), (0, 3, 'a'), (0, 3, 'b'), (0, 3, 'c'), (0, 4, 'a'), (0, 4, 'b'), (0, 4, 'c'), (1, 2, 'a'), (1, 2, 'b'), (1, 2, 'c'), (1, 3, 'a'), (1, 3, 'b'), (1, 3, 'c'), (1, 4, 'a'), (1, 4, 'b'), (1, 4, 'c'), (2, 3, 'a'), (2, 3, 'b'), (2, 3, 'c'), (2, 4, 'a'), (2, 4, 'b'), (2, 4, 'c'), (3, 4, 'a'), (3, 4, 'b'), (3, 4, 'c')]
于 2012-04-18T02:36:30.163 回答