【问题标题】:create new string by adding characters of smaller strings one after another通过一个接一个地添加较小字符串的字符来创建新字符串
【发布时间】:2011-11-18 18:46:02
【问题描述】:

你有字符串 “啊啊啊” “bbbb” “cccc” "dddd"

现在你要生成字符串:

"abcdabcdabcdabcdabcd"

最快的方法是什么?

PS。这是一个非常简化的例子。我真的需要从现有的较小字符串中生成新字符串。

【问题讨论】:

  • 字符串可以有不同的长度吗?如果是这样,应该怎么办?

标签: python string merge


【解决方案1】:

如果字符串长度相等,您可以使用 zip:

result = ''.join(map(''.join, zip(*strings)))

【讨论】:

  • 替代:''.join(''.join(s) for s in zip(*strings))
  • @user975135 zipjoinmap 是 Python 中最有用的三个函数。你绝对应该学会使用它们。语法一开始可能会令人困惑,但并不难理解,而且它比单独的 for 循环更短、更美观。
  • 使用 itertools,您也可以处理不规则的字符串长度。
【解决方案2】:

使用来自itertools library 的 izip_longest,以及来自同一个库的 flatten 配方。

from itertools import izip_longest, chain
def flatten(listOfLists):
    "Flatten one level of nesting"
    return chain.from_iterable(listOfLists)

result = ''.join(flatten(izip_longest("aaaaa", "bbbbb", "ccc", "dddd", fillvalue='')))

【讨论】:

    【解决方案3】:
    string1 = "aaaaaaaaa"
    string2 = "bbbbbbbbb"
    string3 = "ccccccccc"
    string4 = "ddddddddd"
    new_string = ""
    for i in range(0,len(string1)):
        new_string = new_string+string1[i]+string2[i]+string3[i]+string4[i]
    print (new_string)
    

    结果:

    abcdabcdabcdabcdabcdabcdabcdabcdabcd
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-31
      • 2018-10-15
      • 2018-10-28
      • 1970-01-01
      相关资源
      最近更新 更多