以pythonic的方式合并两个列表

以pythonic的方式合并两个列表,python,list,combinations,itertools,Python,List,Combinations,Itertools,我不知道如何寻找这个,但是,我找不到一个明显的解决我的肾盂问题的方法。我想合并两个列表(一个是另一个列表中的一个),并通过保持列表的长度不变来排列它们 例如: a = ['A','B','C','D'] b = ['a','b','c','d'] combined = [['a','B','C','D'], ['A','b','C','D'], ..., ['a','b','c','d']] 然后我可以用itertools来排列它们。然而,第一步对我来说并不容易管理。我不希望嵌套for循环和

我不知道如何寻找这个,但是,我找不到一个明显的解决我的肾盂问题的方法。我想合并两个列表(一个是另一个列表中的一个),并通过保持列表的长度不变来排列它们

例如:

a = ['A','B','C','D']
b = ['a','b','c','d']

combined = [['a','B','C','D'], ['A','b','C','D'], ..., ['a','b','c','d']]
然后我可以用itertools来排列它们。然而,第一步对我来说并不容易管理。我不希望嵌套for循环和Co.

使用和:


你是我的天才!非常感谢。*zip是什么意思?@anki,
zip(a,b)
将在Python2.x中返回
[('a','a'),('b','b'),('C','C'),('D','D')]
。(在Python3.x中返回相应的迭代器)。有关每个功能的更多信息,请按照答案中的链接进行操作。
>>> import itertools
>>> a = ['A','B','C','D']
>>> b = ['a','b','c','d']  # [x.lower() for x in a]
>>> [list(x) for x in itertools.product(*zip(a, b))]
[['A', 'B', 'C', 'D'], ['A', 'B', 'C', 'd'], ['A', 'B', 'c', 'D'],
 ['A', 'B', 'c', 'd'], ['A', 'b', 'C', 'D'], ['A', 'b', 'C', 'd'],
 ['A', 'b', 'c', 'D'], ['A', 'b', 'c', 'd'], ['a', 'B', 'C', 'D'],
 ['a', 'B', 'C', 'd'], ['a', 'B', 'c', 'D'], ['a', 'B', 'c', 'd'],
 ['a', 'b', 'C', 'D'], ['a', 'b', 'C', 'd'], ['a', 'b', 'c', 'D'],
 ['a', 'b', 'c', 'd']]