【问题标题】:Concatenate strings in 2 different lists [duplicate]连接2个不同列表中的字符串[重复]
【发布时间】:2016-08-21 12:26:15
【问题描述】:

我需要在 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','是', 'CD','CE']

有什么想法吗?谢了

【问题讨论】:

  • 看起来你想要列表的itertools.product(“笛卡尔积”)
  • 试试这个 list3 = [i+j for i in list1 for j in list2]

标签: python string list concatenation cartesian-product


【解决方案1】:

这应该会有所帮助:

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)]

【讨论】:

    【解决方案2】:

    您可以使用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')]
    

    【讨论】:

      【解决方案3】:

      两个for循环怎么样?

      下面的伪代码

      for item in list1:
          for item2 in list2:
               item = item + item2
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-03
        • 1970-01-01
        • 1970-01-01
        • 2018-08-30
        • 2019-01-05
        • 2013-10-04
        • 1970-01-01
        • 2019-10-23
        相关资源
        最近更新 更多