【发布时间】: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 的许多反复出现的论点中,因为它是人们可以指出的少数几个例子之一,即为了改进“坏”代码的工作方式而对解释器进行了更改……)