我一直在尝试学习Python不到两周。因此,对不起,如果我完全误会我。
我一直在搜索有关该问题的答案的语言,已经进行了大约五天的搜索,因此我很难清楚地表达措辞,因此,如果我错过了,请随时将其标记为重复并指出正确的方向
假设我有list1 = [[x, y], [a, b]]
和list2 = [0, 1]
。
我想要list3 = [[x, y, 0], [x, y, 1], [a, b, 0], [a, b, 1]]
在我对StackOverflow的研究中,我自己进行了实验,找到了获得各种类似结果的方法,例如:
[[x, y, 0], [a, b, 1]]
[[x, y, 0, 1], [a, b, 0, 1]]
[[x, y, 0, 1], [a, b]]
[[[x, y], 0], [[x, y], 1], [[a, b], 0], [[a, b], 1]]
我一直在考虑做的事情如下:
[[x, y], [a, b]] -> [[x, y], [x, y], [a, b], [a, b]]
[[x, y], [x, y], [a, b], [a, b]] -> [x, y, x, y, a, b, a, b]
[x, y, x, y, a, b, a, b] -> [x, y, 0, x, y, 1, a, b, 0, a, b, 1]
上的list2 [x, y, 0, x, y, 1, a, b, 0, a, b, 1] -> [[x, y, 0], [x, y, 1], [a, b, 0], [a, b, 1]]
如果这是我必须要做的,那就是我必须要做的,而我正在寻找一种可以做到这一点的方法,但是我觉得必须有某种更Python化的方式来执行此操作(那么,我又知道什么?),如果是这样,我正在努力寻找可能的结果。
答案 0 :(得分:1)
从本质上讲,这只是两个列表的叉积。
>>> import itertools
>>> list(itertools.product(list1, list2))
[(['x', 'y'], 0), (['x', 'y'], 1), (['a', 'b'], 0), (['a', 'b'], 1)]
剩下要做的就是弄平每个元组。
>>> [x + [y] for x,y in itertools.product(list1, list2)]
[['x', 'y', 0], ['x', 'y', 1], ['a', 'b', 0], ['a', 'b', 1]]
答案 1 :(得分:0)
我可能是错的,但是我没有想到一个很棒的itertools解决方案
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)))
答案 2 :(得分:0)
仅使用列表理解:
list3 = [list[:] + [elem] for list in list1 for elem in list2]