如何将两个列表组合成对,然后将这些对列表中的一个元素?

时间:2014-01-17 23:41:43

标签: python list itertools

first=[1,2,3,4,5]
second=['a','b','c','d','e']
final=['1a','2a','3a','1b','2b',3b','1c','2c','3c']

我想在python中组合两个列表,但我不关心顺序。阿卡我不想要'1a'和'a1'。

5 个答案:

答案 0 :(得分:6)

>>> import itertools
>>> first=[1,2,3,4,5]
>>> second=['a','b','c','d','e']
>>> final = [''.join(str(i) for i in s) for s in itertools.product(first, second)]
>>> final
['1a', '1b', '1c', '1d', '1e', '2a', '2b', '2c', '2d', '2e', '3a', '3b', '3c', '3d', '3e', '4a', '4b', '4c', '4d', '4e', '5a', '5b', '5c', '5d', '5e']

答案 1 :(得分:1)

final = list()
for i in first:
    for j in second:
        final.append(str(i)+j)

答案 2 :(得分:1)

简单的列表理解将起作用。

print([str(first[i])+second[i] for i in range(len(first))])

答案 3 :(得分:0)

如果你只有两个序列来"乘以"像这样,你的迭代很简单,理解中的嵌套循环是完全可读的:

['{}{}'.format(a, b) for a in first for b in second]

如果您有更长或动态的列表,则需要itertools.product,例如在inspectorG4dget的答案中。

如果你有比复制产品更复杂的东西,你可能想要显式的循环语句而不是理解(或者可能将它的一部分分解为生成器函数并将其用于嵌套的comp或{{1}呼叫)。

答案 4 :(得分:0)

不使用itertoolsmapzip的一种方法是:

first = [1, 2, 3, 4, 5]
second = ['a', 'b', 'c', 'd', 'e']

print [str(i) + j for i in first for j in second]

<强>输出:

['1a', '1b', '1c', '1d', '1e', '2a', '2b', '2c', '2d', '2e', '3a', '3b', '3c', '3d', '3e', '4a', '4b', '4c', '4d', '4e', '5a', '5b', '5c', '5d', '5e']
相关问题