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'。
答案 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)
不使用itertools
,map
或zip
的一种方法是:
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']