【问题标题】:Concatenating Strings: "Multiplication" of two list of strings连接字符串:两个字符串列表的“乘法”
【发布时间】:2018-11-14 07:48:55
【问题描述】:

对于字符串列表, 在这里将乘法运算定义为连接:

l1 = ['aa', 'bb', 'cc']
l2 = ['11', '22']
l3 = l1 op l2

预期输出:

l3 = ['aa11', 'aa22', 'bb11', 'bb22', 'cc11', 'cc22']

我们可以简单地使用

for l in l1:
    for ll in l2:
        l3.append(l+ll)

但如果能听到 Pythonic 的解决方案,我将不胜感激。

【问题讨论】:

  • 这里的“不是pythonic”是什么?您的意思是“难以理解的代码 = pythonic”吗?想想会支持你的代码的开发人员。他们会很高兴将这种逻辑完全按照您所做的形式(嵌套循环)。 @jedwards 的解决方案从可维护性和理解性的角度来看也是不错的。
  • 你实现的不是点积。
  • @OlivierMelançon 正确。它应该被表述为多重化。
  • 是运算+操作还是运算函数

标签: python string list concatenation cartesian-product


【解决方案1】:
l3 = [a+b for a in l1 for b in l2]

【讨论】:

    【解决方案2】:
    from itertools import product
    
    l1 = ['aa', 'bb', 'cc']
    l2 = ['11', '22']
    
    l3 = [x+y for (x,y) in product(l1,l2)]
    
    print(l3)
    

    但这实际上与您正在做的事情相同(前提是您纠正了错字:P)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-26
      • 2017-04-24
      • 2017-11-10
      • 2014-04-19
      • 2013-11-05
      • 1970-01-01
      相关资源
      最近更新 更多