2
有很多问题都是相关的,但没有一个我可以找到我正在寻找的东西。从本质上讲,我希望将所有可能组合的每个子列表的所有排列组合在一起,但要保持它们分开。因此:列表内和列表之间的排列[python]
input=[[1,2,3],[4],[5,6]]
所需的输出:
[[1,2,3],[4],[6,5]]
[[2,1,3],[4],[5,6]]
[[2,1,3],[4],[5,6]]
[[3,1,2],[4],[5,6]]
等等
我相信下面的代码的工作,但我不知道是否有任何更有效或简洁策略。非常感谢你。
input=[[1,2,3],[4],[5,6]]
all_lists=[]
for i in xrange(len(input)):
all_lists.append(list(itertools.permutations(input[i])))
all_combinations = list(itertools.product(*all_lists))
## concat them together
combinations_combined = [list(itertools.chain(*a)) for a in all_combinations]
不要将变量命名为li ke'input',你重载对'input'内建的引用。 –
我不在我的代码中 - 这只是为了举例。我也不会在这里做。 – ben