0

iterable1 の n 個のアイテムと iterable2 の m 個のアイテムを組み合わせるにはどうすればよいですか?

すなわち

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 に答える