以 pythonic 方式组合两个列表
Combine two lists in a pythonic way
我不知道如何搜索这个,但是,我找不到解决我的 pythonic 问题的明显方法。我想合并两个列表(一个是另一个被操纵的列表)并通过保持列表的长度不变来排列它们。
一个例子:
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
, itertools.product
and list comprehension:
>>> 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']]
我不知道如何搜索这个,但是,我找不到解决我的 pythonic 问题的明显方法。我想合并两个列表(一个是另一个被操纵的列表)并通过保持列表的长度不变来排列它们。
一个例子:
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
, itertools.product
and list comprehension:
>>> 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']]