join()
函数接受可迭代的参数。不过,我想知道为什么有:Python:理解迭代器和`join()`更好
text = 'asdfqwer'
此:
''.join([c for c in text])
显著快于:
''.join(c for c in text)
同样对长字符串时(即text * 10000000
)。
用长字符串观察两个执行的内存占用情况,我认为它们都在内存中创建了一个且只有一个字符的列表,然后将它们连接成一个字符串。所以我猜测,差别只在于join()
如何从生成器中创建这个列表,以及Python解释器在看到[c for c in text]
时是如何做同样的事情。但是,我只是在猜测,所以我希望有人确认/否认我的猜测。
@AvinashRaj:你在哪里看到一个元组? – Matthias
@Matthias ya,错误地提到了元组而不是生成器。 –
大概你指的是:http://stackoverflow.com/a/9061024/3001761 – jonrsharpe