2013-08-29 38 views
1

从多个子字符串中创建字符串时什么是pythonic - +或%?Pythonic创建字符串的方式+ vs%

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)) 
+0

连续级联不仅仅是非Python化,这实际上是* *变质。老版本的Python中的性能可以接近O(n ** 2)。 –

+4

@ IgnacioVazquez-Abrams:但在2.7或3.x中,性能表现还不错,所以我认为你可以称之为“退化”。但是,你绝对正确的说,对于一些字符串或任何循环构造来说,它是非pythonic。 (这在python-ideas和-dev的许多重复论证中出现,因为它是为解释器改变而改进“坏”代码工作方式的少数例子之一)。 – abarnert

回答

11
big_string = ''.join([string1, string2, ..., stringN]) 
-2

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

+5

Heck no。 '减少'lambda,二次性能,当'''.join'已经存在,并且已经高度调整这个任务? – user2357112

+0

@ user2357112同意。 –