What's a Pythonic way of taking a list of lists and “distributing” elements from another list to the sublists?
我只学了不到两个星期的Python。所以,很抱歉,如果我完全误会了。
我一直在找大约五天的时间,因为我一直在学习这个问题的答案的语言,而且措辞很难表达出来,所以如果我错过了,请随意标记为副本,并指出正确的方向。
假设我有
我要
在我对StackOverflow的研究和我自己的实验中,我发现了获得类似结果的方法,比如:
我一直在考虑的事情是做如下的事情:
如果这就是我必须要做的,那就是我必须做的,我正在寻找一种方法来做到这一点,但我觉得必须有某种更像Python的方法来做这个手术(然后,我又知道什么?)如果是这样的话,我正在努力找出它可能是什么。
在其核心,这只是两个列表的交叉乘积。
1 2 3 | >>> import itertools >>> list(itertools.product(list1, list2)) [(['x', 'y'], 0), (['x', 'y'], 1), (['a', 'b'], 0), (['a', 'b'], 1)] |
剩下要做的就是展平每个元组。
1 2 | >>> [x + [y] for x,y in itertools.product(list1, list2)] [['x', 'y', 0], ['x', 'y', 1], ['a', 'b', 0], ['a', 'b', 1]] |
仅使用列表理解:
1 | list3 = [list[:] + [elem] for list in list1 for elem in list2] |
我可能错了,但我认为没有一个很好的ITertools解决方案
1 2 3 4 5 6 7 8 | def permutations(a,b): for sublist in a: for value in b: yield sublist + [value] list1 = [[x, y], [a, b]] list2 = [0, 1] print(list(permutations(list1, list2))) |