【问题标题】:Combining two string lists [duplicate]组合两个字符串列表[重复]
【发布时间】:2026-02-14 04:20:06
【问题描述】:

希望合并两个包含字符串元素的列表变量。例如,如果我有以下内容:

mystring1 = ['Luke', 'Han']
mystring2 = ['Skywalker', 'Solo']

我希望将它们组合成:

mystring3 = ['LukeSkywalker', 'HanSolo']

我确定我错过了一些简单的东西。任何指导都会很棒!

【问题讨论】:

  • 使用 for 循环。你试过了吗……不难
  • mystring3[0] = mystring1 [0]+mystring2 [0] 接受这个提示
  • 考虑接受答案。不一定是我的答案,但你认为最有用的答案。

标签: python string


【解决方案1】:

以下应该有效:

>>> mystring1 = ['Luke', 'Han']
>>> mystring2 = ['Skywalker', 'Solo']
>>> list(map(''.join, zip(mystring1, mystring2)))
['LukeSkywalker', 'HanSolo']
>>> 

【讨论】:

  • list(map(''.join, zip(mystring1, mystring2)))。无需将str 映射到任何东西上。
  • @BradSolomon 删除了外部 list() 也因为 zip() 返回列表本身
  • 在 Python 2 中,是的。在 Python 3 中,您需要 list()
  • 好的。然后添加。
【解决方案2】:

只需将map这两个列表转为str.__add__

list(map(str.__add__, mystring1, mystring2))

这个输出:

['LukeSkywalker', 'HanSolo']

附带说明,如果您想一次合并两个以上的字符串列表,您可以这样做:

mystring1 = ['Luke', 'Han']
mystring2 = ['Skywalker', 'Solo']
mystring3 = ['Hero', 'Sidekick']
from functools import partial, reduce
print(list(reduce(partial(map, str.__add__), (mystring1, mystring2, mystring3))))

这个输出:

['LukeSkywalkerHero', 'HanSoloSidekick']

【讨论】:

  • 太好了,我从来不知道map 接受了多个迭代。如果您使用 operator.add,则可以消除使用 dunder 方法的需要
  • 谢谢!!!这很棒。
  • @JDV_ny 很高兴为您提供帮助。如果您认为此答案正确,您能否将其标记为已接受?
【解决方案3】:

只需使用zip,然后连接字符串。

这显然只有在您希望加入两个字符串时才有效。如果还有更多,请使用 str.join 就像其他一些答案所建议的那样。使用 2 个字符串,但 concat 方法更具可读性。

>>> mystring1 = ['Luke', 'Han']
>>> mystring2 = ['Skywalker', 'Solo']
>>> 
>>> [s1 + s2 for s1, s2 in zip(mystring1, mystring2)]
['LukeSkywalker', 'HanSolo']

zip 在每次迭代时只从传递给它的每个可迭代对象中获取一个元素,并返回这些元素的元组。 zip 操作的中间结果看起来像

[('Luke', 'Skywalker'), ('Han', 'Solo')]

【讨论】:

    【解决方案4】:
    map(lambda x: x[0] + x[1], zip(mystring1, mystring2))
    

    压缩这两者会产生一个 2 元组的可迭代(或列表,如果您使用的是 Python 2)。然后 map 在可迭代(resp. list)上转换为您想要的结果。

    【讨论】:

    • 你也可以map(lambda x, y: x + y, mystring1, mystring2).
    【解决方案5】:
    import pandas as pd
    mystring1 = ['Luke', 'Han']
    mystring2 = ['Skywalker', 'Solo']
    df=pd.DataFrame([mystring1,mystring2]).T
    df.columns=list('01')
    print((df['0']+df['1']).tolist())
    

    输出:

    ['LukeSkywalker', 'HanSolo']
    

    【讨论】:

      最近更新 更多