在2个不同的列表中连接字符串[重复]。

问题描述 投票:0回答:3

我需要... 连缀 python中2个不同的字符串列表。

比如说

list1 = ['A','B','C']
list2 = ['D', 'E']

我想得到

list3 = ['AD', 'AE', 'BD', 'BE', 'CD', 'CE']

我试过了

list3 = zip(list1,list2)

它返回

list3 = [('A','D'), ('B','E')]

我也试过。

list(itertools.product(list1, list2))

但它返回

[('A','D'),('A','E'),...,('C','E')] 而不是['AD','AE','BD','BE','CD','CE']

有什么想法吗?THX

python string list concatenation cartesian-product
3个回答
4
投票

这应该有帮助。

import itertools

list1 = ['A','B','C']
list2 = ['D', 'E']
list(map("".join, itertools.product(list1, list2)))
# ['AD', 'AE', 'BD', 'BE', 'CD', 'CE']

也可以用列表理解法来解决。

["".join(i) for i in itertools.product(list1, list2)]

1
投票

你可以用 itertools.product 得到笛卡儿积,或者采用2个循环

>>> list1 = ['A','B','C']
>>> list2 = ['D', 'E']
>>> import itertools
>>> list(itertools.product(list1, list2))
[('A', 'D'), ('A', 'E'), ('B', 'D'), ('B', 'E'), ('C', 'D'), ('C', 'E')]
>>> [(i, j) for i in list1 for j in list2]
[('A', 'D'), ('A', 'E'), ('B', 'D'), ('B', 'E'), ('C', 'D'), ('C', 'E')]

0
投票

两个for循环怎么样?

下面是伪代码

for item in list1:
    for item2 in list2:
         item = item + item2
© www.soinside.com 2019 - 2024. All rights reserved.