【问题标题】:Pythonic way of creating a string + vs %创建字符串的 Pythonic 方式 + vs %
【发布时间】:2013-09-02 09:00:15
【问题描述】:

当从许多子字符串中创建一个字符串时,哪个更 Pythonic - + 或 %?

big_string = string1 + string2 + ... + stringN

big_string = ''
for i in range(n):
    big_string+=str(i)

big_string = "%s%s...%s" % (string1, string2, ... , stringN)

big_string = ''
for i in range(n):
    big_string = "%s%s" % (big_string, str(i))

【问题讨论】:

  • 连续连接不仅仅是非 Pythonic,它实际上是 degenerate。旧版本 Python 的性能可能接近 O(n**2)。
  • @IgnacioVazquez-Abrams:但在 2.7 或 3.x 中,性能还不错,所以我认为您不能称之为“退化”。但是你绝对是对的,它对于多个字符串或任何循环结构都是非 Pythonic 的。 (这出现在关于 python-ideas 和 -dev 的许多反复出现的论点中,因为它是人们可以指出的少数几个例子之一,即为了改进“坏”代码的工作方式而对解释器进行了更改……)

标签: python string append


【解决方案1】:

big_string = reduce(lambda x, y: x + y, [string1, string2, ..., stringN], "")

【讨论】:

  • 见鬼没有。 reduce 具有 lambda,具有二次性能,而 ''.join 已经存在并且已针对此任务进行了高度调整?
  • @user2357112 同意。
【解决方案2】:
big_string = ''.join([string1, string2, ..., stringN])

【讨论】:

    猜你喜欢
    • 2020-11-27
    • 1970-01-01
    • 2022-11-18
    • 1970-01-01
    • 2014-01-23
    相关资源
    最近更新 更多